So, here's a shot at refactoring this bad boy:
First, should I what? You have options:
Make .NET your primary tool for development
Learn VS.NET while you continue building your current development skill set
Wait until .NET matures to make a decision
Before we outline the pros and cons of each, what does .NET offer you, and what doesn't it offer you.
It contains a new language with a new IDE for a new API that brings all aspects of Windows development to the same point
Language interoperability allows one .NET language to use, and even subclass other .NET language's componenets
The new API (the .NET Framework) cleans up the ugly mess that Win 32 API was and takes all advantages of OOP
Deploying applications should be simplified because the .NET Framework will exist on all Windows machines, and the Global Assembly Cache manages DLL hell
Web Development is more similar to Windows Development (for debugging, reusing code, and other OOP enhancments in ASP.NET)
ADO.NET simplifies data access in nTier environments
XML/XSLT support beefed up
The runtime is managed, theoritically making it "safe"
The runtime and C# are built on ECMA standards, which mean platform portability is a nearing reality
The Mobile toolkit eases mobile device development
A common type system is used accross the entire platform, and will be ready for 64bit systems
Internationaliztion issues are being addressed more widely
.NET can be used outside of the propritary Visual Studio .NET IDE
The platform is where all of Microsoft's attention will be
Web Service support is outstanding
.NET Remoting cleans up DCOM
The rookie mistakes have not been identified
Training materials need time to catch up
There aren't many .NET apps actually in production
The whole platform has yet to hoenstly prove itself out side of hype
Developers are really at the hands of Microsoft if they hop on the bandwagon
Large learning curve
By the time the learning curve is navigated, the product may have matured into somehting other than what was learned
The IDE tools and wizards still need work
That said, what is a developer to do? We've got a cool list of goodies, but not proof that it works as advertised.
Here are my suggestions
Reasons to make .NET your primary tool for Windows Development. There aren't many, namely:
Much simpler to build and deploy Windows Services (not a biggie)
Consuming Web Services
Where you'd normally struggle with DCOM, .NET remoting may avoid configuration headaches
Reasons to make .NET your tool for Web Development
Faster Web Apps by using real languages with real compiled (as opposed to crappy VBScript in ASP pages)
Session Object is much more reliable
Server Controls and Web Forms make web development much more similar to Windows development that spaghetti ASP code thanks too OOP
Web Services are a snap
Deploying Web applications is just xcopy simple
Much more stable, thanks to a seperation between ASP.NET and IIS
Much easier to configure through XML files
A host of privacy and security classes built into the framework
Basically the point here is that for you standard Windows Applications, .NET does not demand immeditate attention. On the other hand, any new Web Development should seriouslly be considering Web Development if you would like to utilize the above in your development. And since ASP.NET is apart of the .NET Framework and uses languages like VB.NET and C#, chances are, when the time is right for Windows Development, having experience in ASP.NET will give you the leg up.
So, what are the advantages and disadvantages of just sitting still? Of course this is my speculation, but:
You are not going to be surprised when this new platform does not work like you expected
You will be able to make a more informed decision after letting the technology go through the runs
The training material will get much better as more practical experience is obtained
You will not enter the job market as yet another zero experience .NET developer
If you wait until VS.NET2, more RAD tools should in place, and the learning curve will be flatter
You will be unpopular at .NET usergroup meetings (... this is about the best I could honestly come up with)
-- Mike Helland
There are several factors to consider in the "why should I?" question. Return on investment is indeed something to consider. Some of us have looked at Java and Smalltalk, but decided that despite a great deal of technical merit, there was too much lacking, and to many of us they just didn't seem to have the "legs" to make the investment worthwile. In the case of C++, the investment is just *too* great - life is too short.
VFP folks have come to expect to be able to use a single tool that can accomplish about 80-90% of what we need to do - toss in a little ASP or Web Connect, a dash of HTML and maybe VB Script, a big scoop of SQL/Server if you're so inclined, but still relying greatly on the one tool we know the best. None of the other choices out there made any sense when we could do so much with VFP.
Until now, because .NET is starting to look a lot like VFP in that respect. Get a .NET language under your belt, learn how to use it in an ASP and Windows application context, grok ADO.NET and you're pretty much in the same kind of situation we're in now with VFP, especially when one of the .NET languages shows up as an alternative to T-SQL in SQL/Server!
Add to that the sheer technical wonder that some of us experience as we dig into the .NET universe, and it begins to look pretty compelling. Much of what I'm hearing here (and elsewhere) seems to be a reaction to the tremendous emphasis that Microsoft has placed on .NET and the very fact that it's a Microsoft product. Some of us really don't care whether something good comes from Borland, or Sun, or Oracle, or Microsoft, as long as it's good and we think we can use it to accomplish a little self-actualization while making a few bucks.
I wonder if some of the good developers (who seem to be OOP junkies like me) that are reacting so negatively to the .NET initiative would react this way if the .NET languages and framework had been just dropped into their laps without two years of hype and evangelizing and banging of pots and blowing of whistles by Microsoft. I guess I pretty much ignored all of that so that when it became a real product, I just looked at it as another tool to consider.
And said "Wow!"
I've seen some folks take a bit of heat here, and I think that there is a certain feeling of betrayal when anyone suggests, even for a moment, and for the most rational of reasons, that there may be some other tool that is worthy of consideration besides our beloved Visual FoxPro. I can understand that, but let me ask...
Aren't you getting a little bored with Visual FoxPro? Don't you find yourself grasping for something more and finding it not there? Doesn't it feel a little like it felt after you'd been doing FoxPro 2.x programming for four years?
I'm not saying there's something wrong with VFP, or that it isn't a good tool, or that I'm going to stop using it tomorrow, but it's been 7 years, and while my wife is a wonderful lifelong companion, I must admit that yes, Virginia, when it comes to technologies, I can get really bored, and after a few years I begin to look for a little excitement that the existing relationship just can't provide. The various flavors of HTML were pretty cool, and ASP is pretty slick, but none of them were going to make me a better programmer. More versatile, more productive, maybe, but not a better programmer.
Often a musician can learn other instruments, but doesn't really become a better musician until they pick up an instrument that forces them to come at their craft from a different direction, like when a guitarist learns the piano, or when a bassist learns the drums. VFP forced me to come at programming from a different direction, and I'm due for that kind of inspiration again. But I don't see any paradigm shifts coming from VFP, and I do in .NET.
I look at what the F1 and Oakleaf and Visionpace folks are trying to do with their frameworks, the beautiful and elegant classes they've created to try and give us the kind of tools we need to take it to the next level. But I look at how much they've done that seems to be built right into .NET. I don't mean data management classes, and business object classes and things like that, but some of the more granular stuff that implement factory patterns, and collections, and mediators and observers and I can't help but look at .NET and think "what kind of cool frameworks could they build with *THIS*??"
I look at the .NET languages, and I feel a whole new path opening up before me that consists of ideas and capabilities that have only been hinted at in Visual FoxPro. I know that I'll have a similar learning curve to climb so that maybe in two or three years I'll begin to really understand how to use .NET, just as it took me two or three (or maybe four or five) years to really get the hang of VFP and OOP. In the meantime I have this really good, ever-improving tool called VFP that I can continue to use to service clients and make money as I explore the Brave New .NET World.
So go ahead, accuse me of being a Microsoft sycophant, of swallowing the "line", of being naive, of being assimilated. I'm going in the .NET waters, and I think I'm going to enjoy myself, and I think I'm going to be a better developer for the experience. I think that maybe there are one or two other people out there that just might feel the same way.
That's this guy's answer to Dot Why Should I. -- Steve Sawyer
Good points Steve. I for one am not *slacking off* on .NET because it's a MS product by any means. I'm really sitting on the sidelines until those *cool frameworks* are out. I didn't learn VFP and then decide to buy a framework. I did it the other way around. I want to save time with .NET so I plan to do the same with that when the opportunity presents itself. Also, I'm not bored with VFP, especially since you came out with View Editor ;-) . If anything, I'm more excited about VFP than I have been in a long time. (that has probably more to do with F1 and all the great tools we're using) Maybe I'm just a slow learner. So far, we don't have clients/prospects beating our door down for .NET - but again, I'm a win32, client/server programmer mostly and have never done a lick of HTML or web based programming. Integration with web apps, sure. I look forward to doing *fat clients* with VFP that talk to .NET web services. I've used wwHTML to do XML, etc. but that's about it. Our web programmers use non-MS tools, for the most part, and I don't have any say in that as long as I'm an employee here. -- Randy Jean
Sublassing controls in .NET - Gee, what a concept! Who woulda thought?
Amazing how you write off Java by saying that there is "too much lacking", when .Net is almost entirely inspired by the way Java has been developed. The one critical difference, of course, is that buying into .Net forces you into a 100% Microsoft solution (why am I not surprised?). I agree that there is a lot of good stuff in .Net; I just find it amazing that people who are supposed to have broad technical knowledge can think of this as anything new? (Or should I say "innovative"?) -- Ed Leafe
If one wants a better more powerful tool than VFP then that same logic must be extended beyond just VFP. As a data store there is no question that SQL Server is better than VFP since it includes on-line backups, replication services, clustering etc. However, I've heard that when it comes to very large data, only Oracle is truly capable of handling things like Exebytes of data (1,000 terabytes). Strike one for Microsoft. From a reliability standpoint, UNIX/Linux put out a more reliable O/S than Microsoft and that is why big clients (Fortune 1000) use UNIX/Linux with Oracle. Strike two for Microsoft.
.NET only runs under the less reliable Microsoft O/S servers and that is why most of the big boys use Java and will continue to do so. Strike three and your out Microsoft. Truthfully if you want the cream of the crop you go with Unix/Linux, Oracle and Java - notice Microsoft is not an option - that won't make some of you happy, but that is the way it is.
I do not see this changing anytime soon. .NET does not fit in the ultra large organizations and the small mom and pop shops can not afford the time, expense of moving to .NET. Guess .NET fits somewhere in the middle. .NET is a large gamble on the part of Microsoft and a lot of top notch developers like Steve Sawyer will no doubt excel at it. But what about all the mediocre 8-5 schmucks that barely get by with VB or VFP? How many Fox 2.X people dropped out because the transition to VFP was simply too much to overcome? Learning a new language and framework with 3,000 plus objects will be a daunting task for the masses. How many VFP developers would consider themselves experts in things like COM, COM+, SQL Server, UML, etc? Not many that I know of. Is the investment in .NET worth the return when the tools out there right now can get the job done?
Bottom line is to choose the best tool for yourself and your clients because it makes sense for you / them. Play with .NET if you like, but there is no guarantee of success just because Microsoft says it is the thing to do.
As a VFP developer, I am completely unconvinced that the .NET framework is worth the investment in time and money. Certainly Microsoft has poured a great deal of money into this product but - so what?
At the Essential Fox conference I have seen a demo of the Visual FoxPro toolkit for .NET. In short Kamel Patel put in a lot of time and effort to create 225 VFP functions missing from .NET that are presently in VFP 7. Now .NET can run the same functions that VFP has, but should'nt these have already been included in .NET?
The demo also showed how .NET can run the same type of program ALMOST as fast as VFP. Wow!, and these are strong selling points?! Seems to me that VFP is the stronger more robust application in this particular case. I am sure there are many other strong selling points for .NET and that it can do things that VFP can not. Those appear to be things that I do not need or care about.
Based on what I heard it will take an average developer at least 6 months and more likely a year before he/she becomes proficient in .NET with its 1,000 plus objects. Since this is non billable time, I need a quick good solution for my paying clients to keep food on the table. That product is VFP 7. Going beyond VFP 7 I see other products that need to be learned with a higher return before investing the time and money in .NET.
Perhaps I am all wet on this one, but count me out of the .NET bandwagon until I can personally see a better return.
I think this is exactly the sensible conclusion that many developers are coming to. Certainly for the foreseeable future DotNet does not appear to be a consolidating force (reducing the number of development options/languges/risk) but rather it's a fragmenting force (increasing the number of development options/languges/risk). -- Steven Black
Why do you say that? From where I stand, I can see Microsoft pushing one platform to build Windows Applications. That one platform gives me several syntaxes to work with, build I'd hardly call them seperate languages. I see one IDE and one debugger. That same Windows Apps platform is what also is suggested for creating Web Apps, along with Windows Services and Web Services. The same runtime, the same type system, the same base classes. -- Mike Helland
Huh? the dot net framework (?) increases the number of development platform choices by one (says you) or by several (says me). Either way, QED; It fragments the landscape, not consolidates it. It increases the decision space without decreasing the risk. Hell, we're stil in the pioneering phase of this product's life cycle so by definition the risks are higher. This won't change anytime soon. Funny that nobody is writing about that, don't you agree? -- Steven Black
No, I don't think its funny that its being ignored. The people that take the time to learn .NET in order to write about it, can see the reason why developers should be going with. Its nothing you'll see on a slide or bullet point on the side of VS.NET, but its just the fact that its new and big. Now, while those are earth shattering words to you (with good cause), hear me out. Until late last year, Microsoft offered a solution. It was built on Windows 9x (which was really built on 3.1 which was really built on DOS.) It involved Windows DNA, which was based on COM+ which was based on COM which was based on ActiveX, which was based on OLE was which was based on DDE. Web Development between Interdev, ASP/VB SCript, and IIS was a hack job. Windows development meant a ugly looking C++ by the time all its extensions were put in, plus an uglier API. Think about it, the same API has been updated and convuluted for how long? With all that old code lying there trying to keep that heap of crap moving forward for another 10 years would have probably been impossible.
Now, we have .NET. The platform includes a new language designed from scratch (and by scrath I mean taking the best of Java and C++ and cleaning it up) running on the a new Framework (which is really the Windows API taken to the next century gaining all teh benefits of OOP), with a clean type system (that will be able to last through any internationalization and 64bit changes that are bound to happen soon) and the DLL hell for the user is being addressed rather well by the use of assemblies. I think my point here is that this isn't really intended to complement the existing technologies like you think it is. Its a nice way of saying "Ok, what you're doing now is a based on a horrible mess, try this instead." -- Mike Helland
dotNET will succeed because MS says it will. The days when users or developers steered IT are long gone. -- John Ryan
I'm not sold yet either. Intrigued, yes. Investigating (as time permits), yes. But not sold on it yet and not selling it yet. Plenty busy with VFP work right now and the foreseeable future and it's working very well. We have a solid framework, methodology, tools, etc. Why toss out a good thing? Last I heard, the so-called .NET framework has over 3,500 classes! Where to start? Where's the "RAD"? Where are the "full-blown" .NET apps, commercial & custom, that I can point to as a case-study? Not talking about a few loosely coupled "services" either, I'm talking enterprise apps with heavy OLTP activity. Haven't seen em yet. We're doing this now in VFP no problem. -- Randy Jean
So exactly how many objects are in the .NET framework and how long will it take an average developer to learn it? I've seen where Rick Strahl has made mention of the difficulty level. If it is hard for him, then that is not exactly encouraging to me.
Ever since .NET came out it seems there has been very little interest in COM and COM+. Are these M$ technologies now obsolete? I don't want to be a dinosaur, but there is a balance and I have other things besides work that need to be addressed. From my viewpoint, the average developer still has not mastered OOP, COM/DCOM/COM+, UML, backend database, etc.
I don't think COM/COM+ will be obsolete for quite some time. This is like saying "indoor plumbing is obsolete". Check out: http://www.devx.com/codemag/articles/2002/March/cominterop/cominterop-1.asp
M$ has become a marketing machine - they are still selling the crap out of products like Word. Besides save as HTML, what is new and different for the average user since Word 95? The bottom line here is it worth learning .NET or will VFP and related technologies be where I spend my extra time?
Have you checked out the HTML produced by Word2000 or WordXP? Bigger, brighter, impossible to decipher...
My two cents. First, yes, I have jumped on the .NET bandwagon. Second, in spite of what you think, there have been apps done with the beta, and
they have taken less time to develop (based on estimates). Third, it is not the languages that are driving this, it is the architecture, the change from COM that is new, but in order to make that change, MS has to win the hearts and minds of developers first. Fourth, I have seen an example of an application developed in 1 hour, using a web service and a Windows form on the front end. Yes, it was just one form, one edit, but I was very impressed. Fifth, MS has committed to this as their future architecture, so how do you want to use it? - Leslie Koorhan
I'm not new to the game. MS also committed to Windows DNA as their so-called "future" architecture, etc., etc. I am using RAD tools now with VFP and a lot of time and money has been spent in this endeavor by myself, my employer and my clients. This is just in the last few years. What is the business reason to dump it all in favor of .NET when it's working well for me other than the constant threat that MS will somehow force me to by pulling some virtual plug on my current choice of tools? It just gets very tiresome. I went to .NET seminars last year and to the .NET launch a couple of months ago. Was I impressed? Sure, who wouldn't be? Enough to pour a ton of time and money (neither of which I have right now) into re-learning and re-tooling? (Which I feel I just got through doing) When do we actually get a return on investment? I'm a "solutions" guy, not a code junky. Show me how it will solve my clients problems any better in the near term and I'm all for it. Don't just throw a bunch of class libraries at me and tell me how "fun" it will be. I have to put food on the table. I just need more convincing, I suppose. And by the way, I've seen "applications" developed in an hour with VFP tools as well. What people consider a true application is very subjective, in my opinion. (ie. app wizard in VFP, pfft, that only takes about 30 seconds to get a "working" app. yeah right) -- Randy Jean
In response to "What is the business reason to dump it all in favor of .NET when it's working well for me...?" There is none. And anyone that says you should probably has never written a line of code in their life. I'm not planning on converting any of my stuff anytime soon. New Web Development, on the other hand, is where I'm using .NET today. -- Mike Helland
I think the above point is the most important one to make. Choose your tools on your requirements not on what MS says! And by all means look at existing development as something that doesn't need to move to .NET unless there some very important technical reason (of which there shouldn't be many).
That said though, I've spent a fair amount of time with .NET, and I can tell you there's no way even with the proper level of abstraction that I can see *ever* being as productive with .NET as I am in Visual FoxPro. Not because it will take a long time to even approach that, but simply because .NET requires more code for almost anything you do even the simplest of things. Some things are much easier in .NET (Web Services for example) and some advanced features that aren't possible in VFP (like threading/events/services). But the reality of that is that those are specialty featrues in today's applications and if you really need them you can do that with VFP today.
If one moves to .NET it's because you buy into the architecture, technology and most importantly the *implementation*. .NET provides solid technology, but you have to accept the implementation along with the architecture! And that's where .NET falls short IMHO.
-- Rick Strahl
DotNet is the future. Because Microsoft says so...
OR one moves to .NET because they've learned their lesson. I remember the stability of DOS and the power of 8088 Assembler and C. I refused to even touch Windows until Windows 95 - Windows crashed (which was the sign of a very bad program in the DOS days), was unstable and I couldn't believe that people would allow their businesses to rely on it. I miss the DOS days as I trust I will one day miss the Foxpro days.
Which was a more stable product Windows 95, 98 or ME? ME was the latest and by inference MS's best effort to date. Yet all I ever heard was how unstable it is. Same can be said about Windows 2000 vs XP. You'd think that XP would be more solid than 2000 but it is not! MS is a marketing machine, just wish they would improve the quality of their products - especially there O/S. And that my friends is going to be a big issue in the mega corporations adopting .NET. UNIX/Linux is an O/S that is better suited to their needs because it is more reliable. Until the O/S is improved .NET will suffer since it only runs on Windows. Has anyone considered that as an issue?
One thing you have to say about Microsoft, they don't quickly abandon their products - to this day we still have our (DOS guys) loved CMD prompt. Let me make a subtle point -- I "hate" the windows explorer - it is slow and cumbersome to someone that knows exactly where they want to go (layers deep) HOWEVER I'm forced to use it now because having to do a DIR /X every subdirectory (because Microsoft didn't upgrade DOS to support long filenames; even with quotes) is now even slower. My coworkers/fellow programmers laugh at my inability to let DOS go, they tell me that DOS is being phased out (gee, does that sound all to familiar - they've been telling me that for years ;)
As for waiting until .NET irons out - that would be like waiting until the price drops to purchase a new computer.
DotNet is the future. Because Microsoft says so...
( Topic last updated: 2004.12.21 09:47:57 AM )