Wiki Home

What Does Dot NETMean To The VFP Developer

Namespace: WIN_COM_API
A Wednesday Night Lecture, held 2000.11.01
Recommended Reading:
The Sky Is Falling
It's your party, Jim, but may I also suggest for more than just the party line? -- Nancy Folsom
Nancy, you sure can add any other resources you may know about. -- Jim BoothOffsite link to

Thanks, Jim! -- Nancy Folsom

Note: if one downloads (yuck!) the SDK and installs at least the documention, one will find a list of the DotNetCommonLanguageRuntime (CLR) rules. I think this is one resource we want to refer to in determining how deeply our passion goes for compiling to the CLR. -- Nancy Folsom

[Irrelevant material has been trimmed.]

Session Start: Wed Nov 01 20:38:46 2000

[20:46] *** Topic is '"What does .NET Mean to the VFP Developer" with Jim Booth'

[20:46] *** Set by Cindy Winegarden on Wed Nov 01 20:38:46

[20:59] {Evan Delay} The speaker tonight is Jim Booth.

[21:00] {Evan Delay} Jim has been the proud recipient of the Microsoft Most Valuable Professional award every year since the award was established in 1993. He has achieved the status of Microsoft Certified Professional in both Visual FoxPro Desktop Applications and Visual FoxPro Distributed Applications. Jim is the co-author of three books and technical editor for two books. He has written articles for the major journals on Visual FoxPro and has been a presenter at Visual FoxPro conferences in the US, Canada, and Europe. He has also addressed Visual FoxPro User Groups in the US and Canada.

[21:00] {Evan Delay} Tonight's topic is "What Does .Net Mean to the VFP Developer"

[21:00] {Evan Delay} Take it away Jim!

[21:00] {JimBooth} Ok, Thanks for that intro Evan.

[21:01] {JimBooth} My thoughts when preparing for tonight was to make some brief comments and then open the discussion up. The situation that gave the idea for this chat happened at the DevCom in Miami. There was a lot of talk about .NET amongst the attendees as well as MS. Some of the questions I kept hearing were related to a few issues.

[21:03] {JimBooth} 1) VFP not being in the CLR

[21:03] {JimBooth} 2) The NEW stuff in .NET

[21:03] {JimBooth} The major question I kept hearing was, "What does this mean to me a VFP developer?"

[21:04] {JimBooth} Another was, "Does this mean that VFP is dead?"

[21:04] {JimBooth} Well, my answer to the last one is a resounding NO VFP is not dead although some VFP developers may become obsolete if they don't get with the program. What program, you may ask? My answer ... N-Tier system design.

[21:05] {JimBooth} .NET is a technology that Microsoft hopes will take over the world. Will it?

[21:05] {MikeHelland} Asking us?

[21:06] {JimBooth} I don't know, but it does try to address the many issues with distributed applications, and if it doesn't take over something else will.

[21:06] {JimBooth} How does this play for the VFP developer? Well if they are building their apps on a multi layered architecture, it doesn't mean a whole lot because their apps can adapt, but if they are using the monolithic approach to app design in VFP then they will be in for a rude awakening.

[21:07] {JimBooth} ".NET is aimed at distributed applications. If our apps are desktop stuff in a LAN gthen we don't need to address .NET."

[21:08] {JimBooth} Now, that is a basic fallacy that many folks will promote as truth. Fact is, if your clients are not asking for distributed apps today they soon will be. Why? Becasue their competition is going there and if they want to survive in their industry they will have to go there too, and they will be looking to you to get them there.

[21:09] {JimBooth} Now if your app design is multilayered the move will be fairly painless, but if not then rewrite time is here.

[21:11] {JimBooth} So what does .NET mean to the VFP developer? Well it means it is time to smell the coffee and to move things in the direction that the conference speakers and article writers have been saying for quite while now: that's Multi layered architecture.

[21:11] {JimBooth} That said, I would now invite all of you to get into the discussion and start talking about what .NET will have as an influence on your work.

[21:12] {RandyJean} Is .NET really a framework? Or is it just a framework to base a framework on? (foundation)

[21:12] {JimBooth} .NET is a framework for developing distributed applications, but it is also able to be used in LANs as well.

[21:13] {RandyJean} The term framework gets thrown around pretty loosely these days.

[21:13] {DenisChasse} Is it that bad if VFP does'nt work with CLR?

[21:13] {JohnThornton} How will .NET differ from other frameworks?

[21:13] {YairAlanGriver} If I can add to that, it's also a way of thinking - everything is disconnected in .NET.

[21:14] {EdRauh} What's the expense of talking to .NET - we already see that accessing a service through COM may be an order of magnitude slower than native VFP (FSO vs ADIR)?

[21:14] {ErikMoore} JT, .NET is not a frameword like Codebook or VMP.

[21:14] {RandyJean} So, will there be tools to help easily bring these disconnected pieces together? (ie. builders/wizards, etc.)

[21:14] {ErikMoore} It's much more low-level than that.

[21:14] {JimBooth} As for the CLR, no I don't think the CLR is important for VFP. If VFP were in the CLR it would be just another tool in there. We can learn VB or C# if we need to create .NET classes, but VFP can use those classes.

[21:15] {ErikMoore} RJ- to an extent. VFP7 wlil have the ability to compile a component into a Web SErvice

[21:15] {ErikMoore} We don't want VFP in the CLR.

[21:15] {JimBooth} IMO, if VFP goes to the CLR that could be its death toll.

[21:15] {RandyJean} I do like the idea of metadata vs. registry and being able to just copy components vs. having to register. We can do this in .NET, right?

[21:16] {DenisChasse} Will VFP really an integral part of .NET or are there other things beside VFP not working with CLR?

[21:16] {YairAlanGriver} Also, VS.NET will provide tools that make programming to the CLR in the .NET world much easier.

[21:16] {JimBooth} Randy, yes, .NET uses namespaces (which are directory structures) to handle this stuff.

[21:16] {ErikMoore} As for Web Services, you can do that now with the MS SOAP Toolkit or Rick Strahl's wwSOAP, but VFP7 will make it native to the tool.

[21:17] {DenisChasse} If I understand correctly we'll have to learn to develop with all the programming languages starting with the next release of Visual .NET?

[21:18] {JimBooth} Denis, .NET is a framework and an approach to app development. CLR is just one piece of it. VFP will be able to consume .NET stuff and produce some things for .NET consumption.

[21:18] {ErikMoore} DC, you won't have to. But it wouldn't be a bad idea to at least learn one of the CLR languages.

[21:18] {YairAlanGriver} Also, DC, if you're doing ASP+ stuff, you'll need to learn one of the other languages.

[21:19] {ErikMoore} VB programmers, on the other hand, are having to learn a _lot_ of new stuff just to be able to use VB.NET.

[21:19] {Cesar} So, things like x-works become obsolete with .NET?

[21:19] {JimBooth} DC, The CLR languages will allow you to subclass from the .NET classes as well as other classes produced with CLR languages.

[21:19] {DenisChasse} Ok so then a combination of VB and VFP should be enough? You have to understand that time is a big factor here.

[21:19] {RandyJean} Should I bother with MCSD Certification now, or wait until new tracks are ready for .NET? (I'm still studying < g >)

[21:19] {ErikMoore} Cesar, x-works is an ISAPI application just like ASP.

[21:20] {ErikMoore} It won't be more 'obsolete' than it is now, but there might be more easy alternatives.

[21:20] {JimBooth} Randy, Get your Cert now. It will be good for one year after the tests are retired. The tests don't retire with the release of the next version it takes time before they retire.

[21:20] {ErikMoore} RJ, in addition to what Jim said, if you wait, you might be waiting quite some time.

[21:20] {RandyJean} So if we're doing nTier development with say, Visual FoxExpress, we won't be needing rewrite for VFP7/.Net?

[21:21] {JimBooth} I also suggest that folks at least take a look at C#.

[21:21] {ErikMoore} RJ, VFP7 is completely backwards compatible. Unlike VB.NET.

[21:21] {YairAlanGriver} RJ: It depends on the VFE disconnection model.

[21:21] {JimBooth} Randy, no, that's not the point. The point is that it will be much easier to incorporate parts of .NET into existing apps without doing a complete rewrite.

[21:22] {ErikMoore} As far as I know, VFE is COM/DCOM based.

[21:22] {RandyJean} As far as I can tell, the layers in VFE are very loosely coupled.

[21:22] {DenisChasse} What would make an application made with Visual .NET better than an application perfectly made with an n-tier approach?

[21:22] {YairAlanGriver} Even if it's COM/DCOM based, if they pass the data around in a disconnected manner, it should be pretty easy.

[21:22] {ErikMoore} If it uses the CLR, there are lots of advantages.

[21:23] {ErikMoore} As for VFP apps, you are not forced into doing anything different than you are now, so its sort of a loaded question.

[21:23] {JimBooth} DC, It is not a matter of better. It is a matter of complying with a standard. If .NET goes the way MS would like it will become a standard way fo doing things. If it does not go the way MS wnats then something else will step up there. Either way an N-Teir app will easier to adapt than a single or two tier app.

[21:23] {ErikMoore} YAG, what about .NET enforces that apps work in a disconnected manner?

[21:24] {YairAlanGriver} Basically, ADO+ is a totally disconnected way of working with data - you have no permanent connections.

[21:24] {YairAlanGriver} You treat the ADO+ data (which is XML) as if it's an object - and all the mapping is done for you.

[21:25] {Cesar} Erik, following your question, what about, or how does .NET forces N-Tier development?

[21:25] {ErikMoore} You have no open connections to objects on the server, but ADO+ still allows Synchronous database calls.

[21:25] {DenisChasse} Does anybody have an idea of how long it'll take before all the pieces in Visual .NET are put together so that the whole MS vision is accomplished?

[21:25] {ErikMoore} YAG, maybe I am missing what you mean by disconnected.

[21:26] {ErikMoore} DC I would say it is still a couple of years off.

[21:26] {YairAlanGriver} Basically, all communication happens in a disconnected manner - an HTTP call from object to object (SOAP), XML streams to pass information around (ADO+)

[21:26] {RandyJean} Disconnected = Stateless ?

[21:26] {JimBooth} Erik, disconnected is as opposed to having a permanent connection to the data like we do with a LAN DBF.

[21:26] {ErikMoore} YAG okay. But I do that already. :-)

[21:26] {YairAlanGriver} You don't really deal with connections - state is the ADO+ xml stream.

[21:27] {ErikMoore} Right.

[21:27] {YairAlanGriver} 100%, Erik. But nothing forces you to do that. Forces may be a hard word, urges is more like it < g >

[21:27] {YairAlanGriver} You can do it right, but you have to know what you're doing.

[21:27] {YairAlanGriver} With VS.NET and .NET in general - you'll do it more correctly by default.

[21:27] {EdRauh} YAG - if state is carried in the XML stream, how do we validate the content of a stream relative to now vs it's time of creation?

[21:28] {RandyJean} I can visualize my bookshelf getting really loaded down. When is .NET for Dummies coming out < g >

[21:28] {YairAlanGriver} The XML contains the OldVal(), CurVal() stuff.

[21:28] {ErikMoore} Ed, ADO+ automatically creates XML UpdateGrams which can carry the old values and the new in the same document.

[21:28] {YairAlanGriver} There are also validations that can be embedded in the ADO+ recordset.

[21:29] {EdRauh} Is there a concept of Lock in ADO+?

[21:29] {YairAlanGriver} Optimistic record locking.

[21:29] {ErikMoore} Ed, not really.

[21:30] {DenisChasse} Is there a white paper or a site or a book where somebody would know what is the way of the future to build apps? So far I've learned that n-tier is really important but there are also other things to know like ADO, XML. So with the good information I'd be able to start my next app the right way.

[21:30] {YairAlanGriver} If I can be so bold, check out for a full sample DNA app and samples of moving it to .NET

[21:30] {EdRauh} So that there's no simple mechanism to express intent to change in the .NET frame?

[21:31] {ErikMoore} YAG, speaking of the COM Codebook paper - I would have liked to have seen the VFP client app explained instead of just the ASP app.

[21:31] {RandyJean} Ed, maybe you could use semaphores.

[21:32] {YairAlanGriver} EM - which part of the VFP app? We do discuss queries in VFP as well as connecting the front end to the middle tier.

[21:32] {JimBooth} YAG gives a very good reference. My point is this if you use an N-Tier desing and build your data access objects today, then it will be possible to change the data access object later to use ADO+ instead of Remote views, for example.

[21:32] {YairAlanGriver} EM - If you post a message in the comcodebook discussion with a list of what you'd like covered, we'll get on them.

[21:32] {EdRauh} Semaphores exist in the context of a signle system - cooperative messaging can be negotiated, but not enforced the way a lock is now enforced.

[21:32] {ErikMoore} YAG will do.

[21:33] {ErikMoore} Ed, if you only access to the data is through a component, then you can enforce semaphores.

[21:34] {RandyJean} I've already used a socket COM object in place of a Foxpro or SQL backend within VFE's data tier. Works like a charm.

[21:34] {EdRauh} I agree - but how do I enforce that Excel, say, use my component to access the same data as the app I write?

[21:35] {ErikMoore} With SQL, you can make sure that noone has rights to that data.

[21:35] {EdRauh} IOW, does the data carry it's own access mechanism on its back?

[21:35] {YairAlanGriver} Ed, - You only give rights to the database to your components - not any user (except, say, "sa")

[21:35] {CarlKarsten} Also, data should represent reality, so there shouldn't be 2 versions of reality - therefore, who cares if 2 people try and make the _same_ change.

[21:35] {ErikMoore} Or even write a trigger that check the semaphore table before allowing writes.

[21:36] {EdRauh} Two views of reality may be disjoint in time.

[21:36] {CarlKarsten} Then you need a history file with effective dates, in which case, different records. I have thought apps could be written such that data is never edited, just new reccords appended.

[21:37] {JimBooth} Ed, how would you deal with locking today using a data access layer in your app design.

[21:38] {EdRauh} YAG - so the association between the app and data doesn't really exist - there's an associatiomn between an app and the components that own it?

[21:38] {Robert} Database synchronization and briefcase models must also be considered.

[21:38] {DFoderick} Can .NET classes be instantiated in VFP, or only through CLR?

[21:38] {ErikMoore} Ed, you've got it. That's n-tier.

[21:38] {JimBooth} Ed, You are getting it, the app never talks to the data, it talks to the things that talk to the data.

[21:38] {RandyJean} Business objects!

[21:51] {DenisChasse} Can we summ up all that's been said so far by saying that at this moment nothing is better than n-tier development. Whatever comes up in the future that could be better will have n-tier as a starting point?

[21:51] {YairAlanGriver} The application is a thin "view" into a business model (components) that talk to a data abstraction layer (also components) which in turn talk to the data itself.

[21:52] {JimBooth} DC, Yes, that is my exact point. Future approaches will all in one way or another be N-tier. Having your apps N-Tier today will make it easier for you to adapt.

[21:52] {YairAlanGriver} The data can therefore change in format (say, from Oracle to SQL Server or Exchange) as well as structure without affecting the business model or the applications that peer into it.

[21:53] {RandyJean} A sort of message based model, right?

[21:53] {JimBooth} YAG, the data access technology can also change from RVs to ADO to ADO+ if necessary.

[21:53] {JohnKoziol} Hard to think that way when the client has a limited budget and modest needs, though.

[21:54] {YairAlanGriver} If you've coded it correctly, Jim. If you have hardcoded the access itself, it gets harder - but if you think of it as disconnected all the time, it's hard to hard code in a specific data access model. < g >

[21:54] {JimBooth} TD, Your client's budget is exactly why we need to think that way. If don't the cost for the client to remain competitive in their business will be mcuh higher.

[21:54] {RandyJean} I think we're talking adapters (wrappers) and bridge patterns, too.

[21:55] {YairAlanGriver} Actually, we've found that n-tier (COMCodebook, anyway) apps get done quicker, with less bugs and are more flexible.

[21:55] {DenisChasse} Jim: TD has something solid here. The client always wants it fast. N-tier wll take longer to implement

[21:55] {YairAlanGriver} For instance, one of our latest apps - got three separate web sites, sharing the same components in four months time. A month before going live, they changed the companies that they got stock quotes and charts from. We redid the components to go to the new companies, and the rest just kept working.

[21:55] {PaulMrozowski} DC - I have yet to see that. Some of the people at work think that way too. I just have to convince them otherwise.

[21:56] {RandyJean} What's nice is that you can unit test the components as you create them before introducing the additional tiers. Easier to isolate problems.

[21:56] {JohnKoziol} Sure. But I've seen clients pay 5 times too much for an acronym-ridden VB n-tier app where a good old VFP 2 tier app would have done them well.

[21:56] {JimBooth} DC, no, in fact using an N-Tier design will make it less expensive in the long run. Yes, building your first set of components will taske time but once in place and if they are built well they are reusable in future apps with minor modifications.

[21:57] {YairAlanGriver} JK - that's a question of good developers vs. bad. < g >

[21:57] {JohnKoziol} I'm not saying I haven't done n-tier, just that I don't find it a panacea.

[21:57] {RobertBaker} Jim, you are absolutely right once one thinks n-tier and masters the tools.

[21:57] {Cesar} The problem is that they come out with re-usable tools so fast, that it takes longer to learn how to use the re-usable tool than the use you might get out of it :)

[21:58] {RandyJean} Again, we are talking to a socket listener that fires COBOL programs and returns data streams that get parsed into records. This is a fully functioning 5-6 tier app using VFP/VFE and VC++.

[21:58] {Evan Delay} I am finding it difficult getting good report performance out of N-tier.

[21:59] {JimBooth} Evan, that is less of an N-Tier problem than it is of fixing the tiers.

[22:00] {RandyJean} Evan - This is where OLAP architectures vs. OLTP come into play. I've found sticking to nTier is easier when you are dealing with entry/maint., but not when pulling gobs of data across the wire.

[22:00] {DenisChasse} Does anybody here can say something about performance of n-tier compared with let's say an application all done in one tier

[22:00] {JohnKoziol} So I guess the .NET theme song should be by "Tiers for Fears."

[22:00] {DenisChasse} JK: :)

[22:00] {JimBooth} JK, I would say it should be "Cheers for tiers."

[22:01] {RandyJean} Loosely coupled components are going to be somewhat slower, that's a given. There are always tradeoffs.

[22:01] {JimBooth} DC Performance is an issue oin all apps no matter what the architecture. N-Tier apps can be built to be fast ro slow depending on how skilled the desinger and programmers are.

[22:01] {PaulMrozowski} DC - I'm working on a fairly large monolithic app right now and I can tell you there are places where performance isn't so great. It's all about optimizing the code and making sure you place your components.

[22:01] {JohnKoziol} Frankly, I think n-tier will get ratcheted up in performance with future versions of Windows. I especially like OLE DB integration with the OS.

[22:02] {JimBooth} Well folks it is 10pm and I have to run now, carry on though.

[22:02] {Evan Delay} Jim. Thanks for giving the presentation.

[22:03] {Evan Delay} *applause*

Session Close: Wed Nov 01 22:17:58 2000

Contributors: Jim BoothOffsite link to
, YAlan Griver, Evan Delay, Cindy Winegarden

Category DotNet Category Wednesday Night Lectures
( Topic last updated: 2000.11.06 11:20:15 AM )