Rushing to the .NET
Just returning from a MS Developer Days event, it looks like a lot of MS Shops are going to be switching to Visual Studio.NET. In the audience of a more than a thousand developers, most have already begun playing around with the new languages and features of the .NET Framework. Surprisingly, most had not yet tried to develop a Web Service.
Microsoft Doing Things right...
The best part about the new Visual Studio is a beefed up Visual Basic .NET language which is now a fully Object Oriented. Originally a VB developer, I have spent the last two years also learning and working with XML and Java, recommending that other VB programmers should learn Java to help their OOP way-of-thinking and design practices. Now, these OOP concepts (like threading and inheritance) can be used correctly and easily with VB.NET . Yes, old code won't work and I hope I get to port some existing applications to VB.NET but life goes on and hopefully within two years, most programs will need a rewrite anyway. Those negatively clamoring about VB.NET probably haven't tried another OOP languages. Not only will learning the new VB require some changes in style (for the better) but will also give VB developers a much better and powerful tool for building applications.
To use or not to use C#
After the time many developers have taken to learn Java, programming in C# should seem fairly straight forward. VB.NET has many Java-like features as well but most people could mistake C# code for Java code, even looking it over twice. Microsoft recently released a beta of J# which should be exactly like writing Java Code. It is surprising to see how many developers have started programming with C# so maybe J# can gain some support. Most of the people using C# seem to be MS C++ developers who have finally found a RAD OOP language worth switching to (since they wouldn't touch VB unless threatened by a higher deity and Java was too different). If Microsoft gets its way, I'm sure we will see a lot of Java developers using Visual Studio. Whether you use VB.NET, C#, C++, or other .NET language, all code is pre-compiled to MSIL (Microsoft Intermediate Language code). The CLR (common Language Runtime) executes .NET programs and procedures. C++ ATL objects can be compiled to Native code.
Ease of Use
Microsoft continues to be the best in the business about making development tools easy for developers to use. This can be good and bad. Being too easy causes developers to think that the tool will do everything and they don't have to worry about some important issues (design, state, security, scalability, etc.). For more advanced developers however, the tools allow the creation of some great software quickly. Designing our first .NET web service mentioned below, I had some interested developers observe the process of designing the .NET web service. The developers watched in awe, how quickly I 'pumped out' six classes for the project (as well as creating one static,use case and sequence diagram with Visio 2002). The way Visual Studio.NET can create and use Web Services is fantastic. Definitely the best implementation of any tool I have ever seen. Again, just because the tool is great does not mean that application architect and design should be thrown out the window. Visual Studio.NET Enterprise ships with Viso 2002 which is UML compatible and will let developers design their projects and review the application before rushing into code. Viso, for UML design is probably just as good as Rationale Rose and it is nice Microsoft Included this in Visual Studio.NET. The Visual Modeler included with VS 6.0 was pretty good but nobody seemed to give it a chance. At most of the recent MS events I've attended, Visio is getting a lot of publicity. IBM has just released their Websphere Studio product that is may be equal to Visual Studio in creating web services and clients for Java platforms.
Still some issues with Web Controls
The main problems I have been having with Visual Studio.NET are with ASP.NET web forms and controls. Once you place a control (text box, dropdown, etc.) within a DataGrid or Repeater, getting the value of these objects after submitting a form is somewhat daunting. Getting the value of a Drop Down box on the 'onChange' event doesn't work as well as it should. Getting the value of a Dataset bound check box within a repeater seemed almost impossible, I gave up on this. To further complicate things, there is a lot of ASP+ (ASP.NET version 1) example code out there that is completely wrong. I'm sure many of these problems will not be fixed in the final release and cause some major headaches for developers. However, until people have had the opportunity to build larger web applications, it will be hard to evaluate and recommend how well this new style of coding web applications will work.
All projects now require compiling. This is big plus, especially for an ASP project. Security and security configuration seems to be very nicely done (the best class at Developer Days was about configuring security). Form based, Windows based, File based, or Application (SQL) based security can applied at the root or directory level of a web application. It is also possible to assign security to different components, so if you receive a 3rd party assembly, you can 'sandbox' it only to certain functions on the system. These issues have already been implemented in the Java platform in a very similar fashion and .NET is could probably be easier than it is to configure security. The Microsoft Presenter at Developer Days said there will probably be a tool in the future to configure security on your machine or across your Enterprise. A final word about security worth mentioning is the .NET platform includes Encryption Classes to aid developers in writing their own security application.
Not having to 'register' assemblies (.NET dlls) is also nice but I did find out that the .NET Framework did not include ADO assemblies which are included with Visual Studio.NET. I had to upload the appropriate Interop DLL's and run Copy2GAC.exe to register them, which was not very friendly and seems to be about the same as running regsvr32.exe. Our system uses the .NET SQL libraries but has a few functions that allow connecting to other databases via ADO. Project DLL's need not be registered, but if a component is going to be used system-wide, then it should be included in the GAC (Global Assembly...)
Roy Hoobler has been involved with Internet programming from 1995 and developing Web businesses and "niche" market sites since 1996. In 1997, he completed his MCSD certification and worked for a large consulting firm primarily focusing on Intranet and Extranet applications for fortune 1000 companies. In early 1998, seeing the potential of how business would be conducted on the Internet, Roy joined Net@Work Inc. (www.netatwork.com) where he designs (and still codes) business and cutting-edge e-commerce applications using a wide range of technologies, including XML.