VB.NET Overview

Motivation: .NET has trade-offs, especially for VB programmers
The .NET Trade-off

Microsoft Visual Studio's next version was officially released on February 11, 2002 almost 18 month after its due date. Ex-Microsoft VP of Development, Paul Gross, had promised Visual Studio 7 to be delivered 3-4 months after the release of Windows 2000. But many things have happened in the interim in the computing industry as well as Microsoft's own development priorities..

Number one was the backward coronation of 1 Microsoft Way as the new dominating IT monopoly to replace IBM as the official Keeper of the Gates of IT Innovation. It was a reverse coronation because of what the US Department of Justice did not do. But give Bill Gates credit where credit is due - his company is replacing IBM as the dominant player in the IT industry precisely because Microsoft has consistently bet right - software does dominate hardware *, PC hardware has matured or evolved into mainframe challenging systems, and developing for one hardware architecture certainly does allow Microsoft to be the lowest cost software producer while providing a simplified development paradigm for its customers. And so now PC based software from Microsoft will have its day in the sun.


Figure 1 .NET Means Major Changes in Microsoft Development

True, PDAs, mobile phones and embedded systems are growing at rates that PC vendors can only wish for now. But Windows software now rules the desktop roost and is slowly but surely garnering larger market share in the server world. To help capture that server market, Microsoft has brewed up some new software to attract new clients while rewarding existing customers. And Visual Studio.NET and the .NET Framework is what the Microsoft developer faithful are going to be rewarded with.

.NET Changes

.NET slowly and inexorably brings major changes and ever newer to-be-filled promises to Microsoft development. First and foremost, the .NET Framework brings the second and completing part of the equation for enterprise caliber software - software that can consistently deliver the 9 corporate "-ties". Microsoft has always delivered part of the "-ties" including good requisite functionality, customizability, maintainability, and usability - being either a leader or near the top in all of these domains for much of its software. Now Windows 2000/XP and SQL Server are delivering near enterprise caliber reliability and scalability. However, the jury is still out on Microsoft's security, interoperability and availability. But .NET is designed to address these very issues.

The .NET Framework, with its MSIL- Microsoft Intermediate Language, CLR-Common Language Runtime and .NET Framework Class Library, is following in the footsteps of Java with its JVM-Java Virtual Machine and JDK-Java Development Kit in providing a controlled execution environ and large, easily inherited set of common base classes. The controlled CLR environ is important for runtime memory management, type checking, security clearances and controlled execution which brings Java-like security and reliability to Windows-based applications. Microsoft will finally be in a position to bring improved reliability and security on the application side to compliment the improved reliability and scalability of its Windows 2000 and XP operating systems. Such pernicious current Windows application problems as .DLL Hell, registry bloat and obfuscation, applications crashes due to memory mismanagement, limited bounds and type checking will now be subject to better controls. However, there are two major cautions here.

Microsoft itself will not be eating its own dogfood. Office and most other Microsoft applications including the .NET Servers are not slated to be built on managed .NET CLR executables for at least one and possibly two versions/revisions. For example, some apps like the Commerce Server 2002 will be able generate and run ASP.NET managed executables; but they themselves will remain "unmanaged" code. The second problem is that .NET is so new and comprehensive there will inevitably be teething problems from the aspect of reliability and security. Finally, the .NET code is so sprawling, that its coming out in bits and pieces:
- VBA has to stick around because VSTO can't offer support for basic Word and Excel APIs let alone any others;
- WinFS had to be scratched from Vista and now has a changeling role in MS grand software development plans;
- WinPF, WinCF, WinWF, WinFS?, and .NET 3.0 are all emerging code not yet uniformly a part of Visual Studio let alone Vista and other Windows Apps

The NET result is that is very hard to predict how long it will take VBA to become VSTO.

So watch ASP.NET. Its Web services, improved development time and operational performance speeds will undoubtedly attract the bulk of early Visual Studio development. See if ASP.NET helps to bring more or less reliability to the beleaguered world of IIS and Internet Explorer security and reliability. More importantly, will the Redmond troops be able to break the logjam that is Microsoft support for Web Standards. After pioneering CSS and DOM adoption plus XMLHttpRequest all of which are vital to Web 2.0 and AJAX development, ASP.NET screeched to a halt, along with the whole of Redmond in using these standards. So now ASP.NET has a major Web Standards support problem. There are a huge number of JavaScript, JS/E4X, DOM, CSS, SVG, and other XML-based stanadrds that other browsers and app vendors are implementing while Microsoft dithers. The marketplace is speaking - can Redmond afford to be left out of where things are going. MIX 2007 conference will tell how well Microsoft is integrating versus trying go it alone and establish its own monopoly based standards.

.NET Integration and Interoperability

On the interoperability side .NET brings some good news and some bad news. The good news is that Microsoft has adopted for XML Web Services (the famous mantra of XML/SOAP, UDDI, and WSDL) but only selective XML standards throughout its application software. XAML is XUL plus SVG Microsoft-ized. SQL Server, Exchange, BizTalk Server, Office (already Visio has shown the advantage of storing files in XML format with several 3rd party vendors reading and writing Visio files directly to deliver nifty value-add services), Commerce Server, SharePoint Server; all rely on XML as being not only the medium of exchange between .NET applications and the outside world but also the means of persistent data store and internal interfaces. But Redmond has steadfastly resisted ODF and instead is advancing its own, more complex OPenXML document storage format So this is the mixed news.

The bad news is that Microsoft continues to obsolete its own software a lot faster than their customers may want. We have seen this in the case of VB and now VBA. All of the new .NET Servers with the notable exception of SQL Server demand Windows 2000 or XP versions often with ADS-Advanced Directory Services, leaving a lot of Win NT4 shops out in the cold. Ditto for Visual Studio.NET. Just as Windows 3.1 and now Windows 9x/ME are being cutoff, expect Windows XP to not get all the latest .NET bells and whistles. As well major portions of the new corps of .NET Servers are very Microsoft centric. Biztalk, Commerce, Exchange, Host Integration and SharePoint Servers work best with SQL Server and only with IIS Web Server and Windows 2003 Services. Application Center, Content Management Server, Internet Security and Acceleration Server plus Mobile Information Server are an inner group of .NET Servers which really interface exclusively with other .NET Servers and not 3rd party software and servers.

So there is an outer core of .NET Servers which through XML and Web Services integrate with other vendors applications supporting those services. But Microsoft and Visual Studio.NET continue to take a bye on such major interoperability and distributed processing standards such as CORBA, Java, J2EE, and a variety of RPC and messaging standards. Now Microsoft is not adverse to 3rd parties providing such connections to .NET Servers using these technologies. But native Microsoft support is like the perennial question of when will Microsoft supply a native JDBC connector for SQL Server. Ever since SQL Server 6.5 it has been the next version. With SQL Server 2005 it appeared to arrive; but take a look at some of the "fixins". And Microsoft still avoids a cross platform OS scripting language - istead fostering across breed of VBScript/WSH variants.

As a result this puts even more emphasis on XML as being the distributed processing and interoperability standard for interfacing to Microsoft systems. Therefore, it is worthwhile for Microsoft customers to watch carefully how well the company continues to adhere to new XML standards like XSLT 2, XPath 2, XML Query, etc and share back with the XML community its own developments like XLang and others.

Brobadingnangian VS.NET

Visual Studio.NET is ambitious. In order to deliver the final but essential corporate "-ties" of interoperability, reliability and security, the company has had to make a sea change in its executable environ - going from unmanaged to managed, Java-like executables. As noted Microsoft itself will probably take 2-4 years to convert its own software to the new executables. VS.NET also means that Microsoft and its developers will be converting to all object oriented development, expanded data and system modeling, significantly expanded use of XML both internal to VS.NET and externally as a medium of data interchange. To summarize, VS.NET means
1)Microsoft officially converts to full OO-Object Oriented development for all its major programming languages;
- VB, to many of its proponents distress due to the profound changes to VB, becomes fully OO;
- C#, a new Java-like OO language, becomes Microsoft's new system programming language;
- ASP's VBScript gets merged into the new OO VB;
- JScript, OO compliant , becomes a compiled language and gets new OO features. But now is further from the ECMA/JavaScript standard;
- VC++ already OO based, supports managed and unmanaged(read old .EXE ) code;
- J#, also OO based, becomes a bridge from Java to C#.
2)Microsoft enables development of distributed heterogeneous applications in a standard way with Web Services
-have taken a bye on CORBA, J2EE, and other distributed standards; XML/SOAP is vital to Microsoft;
-XML/SOAP, UDDI, and WSDL represent medium-scale learning curves;
-mastery of all the distributed trade-offs in Web Services is much more challenging;
-and the new WinCF and WinWF are very tightly coupled to Windows Vista Desktop and Server.
3)Microsoft embraces XML for all aspects of development
-XML is the cornerstone of Web Services;
-XML is the medium of data interchange in ADO.NET and throughout .NET;
-XML is used in many configuration files throughout .NET Servers and VS.NET;
-XML is being adopted as workfile and workspace storage format for many Microsoft applications;
-but Redmond continues to do proprietary
4)Microsoft is offering its own Enterprise data and system modeling tool
-Visio Enterprise Architect becomes Microsoft's top-of-the-line modeling tool:
-it supports data modeling including novel ORM approach to business logic;
-it supports system modeling including limited forward and reverse engineering of OO code;
-it supports the UML 1.2 standard (UML 1.4 is current top level) for object design.

These trends represent substantial change in Microsoft development. Next to sometimes managed executables, the move to all OO programming is the most substantial change. However do not underestimate the commitment to Redmonds brand of XML and modeling. In the case of modeling, Microsoft has always had bottom up pattern and template generation tools like in Visual Basic's Data Manager and more recently BizTalk Orchestration. But Visio now presents it with top down technology and C#'s attributes give Microsoft and 3rd party developers more room to maneuver with in developing templates and dynamic code generation tools.

Microsoft's own rhetoric on Visual Studio - "bet the business", "forever changed", "gone are the days" - signal the enormity of the changes encompassed in .NET and Visual Studio.NET. Visual Studio.NET itself is Brobadingnangian in size and scope. There are over a baker's dozen new or revised designers and tools to be mastered including Solution Explorer, Component Designer, Query Builder, Application Center Test, XML Designer, Visio UML Modeler among others. Part of the problem is just knowing when as much as how to use the array of tools. As well, C# is a brand new language and for all intents and purposes so is Visual Basic and ASP.NET (the combination of JScript.NET or Visual Basic.NET and the .NET WebForms framework). Visual Basic.NET is so different ex-Microsofties are calling it Visual Fred and Microsoft has yet to deliver a conversion routine that translates Visual Basic 6 code to Visual Basic.NET without manual intervention - extensively in the case of medium to large scale VB projects. ADO.NET presents database developers with yet another substantial change to database processing as Microsoft adds XML interfaces to all its database connections.

So .NET in general is Brobadingnangian. Developers will have a lot to digest and master. But unfortunately for developers, this comes precisely at a time when they are being pressed with ever tighter deadlines, other new technologies to master, and scarce time let alone budget and other resources to learn new software and systems. Microsoft has to an extent recognized this conundrum. Since November 2000, continually changing stream of VS.NET beta code has been available as nominally charged CDs or free giveaways at key events/exhibitions. As well Microsoft is working overtime to deliver a series of configuration templates for Visual Studio.NET which will expose only the features, tools, and even menu items relevant to a specific development task - say ASP.NET Web development or classic VC++ Windows applications.As well the .NET Framework Common Library provides a base of standardized classes and methods/routines applicable across all .NET languages. And the Visual Studio.NET IDE including editor, visual design tools plus client and server side debuggers is the same for all .NET languages. But the monolith remains - Visual Studio.NET will represent a large to enormous new learning curve for developers.

VS.NET Partners

While covering .NET, a persistently touchy topic among all senior Microsoft managers - from Steve Ballmer and Jim Allchin thru Bob Muglia to many of the front-line product managers - has been the apparent lack of support for .NET among other major IT vendors. Now Redmond seems to have the join us or else attitude. They have built up basic frameworks that allow them to enter any large market say 3D graphics or Content Management and Sharing, really any market. So if the established vendors go slow, Redmond will do unto the laggards what they did to Sybase SQL Server on Windows NT - take over the market(and software in this case, aided and abated by a contractual agreement in the case of Sybase).

But this leaves partners with a fundamental problem. Within the Windows franchise Microsoft takes the lions share of the profits (over 3/4 of the profits among the top 20 software vendors in year 2005). Also Microsoft is infamous for playing hardball with partners as well as competitors (ask 3COM veterans of LAN Server days, Borland about losing key personnel, IBM about OS/2, Sybase about SQL Server, Sun about Java, etc.). Finally, Microsoft needs to grow at double digit rates in a PC market that is beginning to decline in growth. Like it or not, at $40B per year and needing to grow fast to pay its employees, Microsoft is regarded as the Borg of software -when it notes a big enough it can step on and crush firms and long incumbent markets. What it does intentionally is still before the courts with major antitrust actions ironically before the European competition commission and Japanese courts.

In the world of distributed and enterprise computing, no one vendor can do it all. The Internet and distributed systems require good and trustworthy partnerships. Microsoft is still resolving its need to grow at double digit rates, its ultra-competitive often zero-sum culture (Redmond's win means you must lose) with the need to be a trusted player and non-zero sum partner in the enterprise world of computing its trying to cater to. So the success of Visual Studio and .NET will depend as much on what long term mutually beneficial and trusted relationships Microsoft can bring to market as much as the technical soundness and excellence of its software. But attaching bullseye on every major IT market may not be in Microsoft's best interest.


Visual Studio 2005 and Vista really introduces .NET to the world. True the .NET Servers have brought a taste of what .NET entails with their XML services; but the shift to managed executables, .NET Framework Class Library and the new all Object Oriented programming languages begins with Visual Studio.NET is now being adopted in major internal software - Windows, Office 2007, and a host of application software. The jury is still out on the major benefits and costs of .NET. Already benchmark wars are flaring up between Microsoft and IBM, Oracle, Sun. These vendors have developed their own Java+XML based IDEs with Eclipse and NetBeans. They have moved rapidly to adopt open Web 2.0 standards embodied in AJAX and new XML standards. And they have been more nimble at defining their position in SOA and SaaS offerings where Microsoft is conflicted because either their desktop or their Windows Server is not suitably favored.

The result is that momentum which favored Redmond throughout the 90's has now shifted away. Linux with virtualization and massive grid servers leads the market. Google continues to outgrid everybody with their Linux based massive server farms. The 6A's of User Interfaces does not favor a Windows PC centric client; but rather a UI written once that can run on any device or OS. This is a kick in the gut to the world circles around the PC Sun view of Microsoft. Adobe with Apollo, Sun's Java, and

But Microsoft is responding with and asynchronous link or one more external database connection , a project can change substantially in requirements. One new critical developer's level of understanding of .NET and all its ramifications can mean the difference between a marginal or highly effective team given the trend towards smaller, Extreme Programming projects in the Web world.

The very nature of distributed processing is its many pitfalls and quicksand-like quagmires. Likewise, benchmarks for runtime security, cost and performance will have to be scrutinized very carefully as real world costs, latencies and variability may be ill represented. Developers and IT managers will have to look long and hard to find coverage of .NET and distributed computing that adds more light than heat to the determination of effective solutions.

But by its very nature, .NET and Visual Studio represent high stakes. Microsoft personnel barely disguise their intentions of achieving server-side dominance equivalent to their desktop monopolies (Windows, IE, and Office all have at least 80% plus market share). Major players equal and larger in revenues than Microsoft like AOL, HP, IBM, Sun and others have a lot at risk here. It is the end game of business computing as software vendors in general finally deliver effective heterogeneous distributed systems, and thus everybody knows what is at stake in this world of convergence. But as many a pundit has noted, success on the Web is built on successful partnerships. Bill Gates and Stve Ballmer have committed to delivering Trustworthy Software- they and their executive staff would do well to deliver a Trustworthy Company.

(c) Jacques Surveyer 2004-2007

 * Note on software dominating hardware. Gordon Bell, the master system designer for Digital Equipment, was famous for doing occasional reports sometimes appearing in Byte magazine with numerous charts on the trade-offs in computing. In the drive to make ever faster and more functional hardware, inevitably computer designers started to create "programmatic hardware" or microcode. Then the pendulum swung back in the late eighties and nineties to RISC devices -Reduced Instruction Set Computers were CPUs with pure, nearly the same clock time instructions. So there is a constant trade-off in hardware design between hardwired and programmatic solutions.

But the conclusion that always came to the fore in those reports was that inevitably hardware needed software for its completion. Not only that but paradoxically even though hardware can replace any chunk of software code, that is not enough. Because the opposite is also true - software can replace any piece of hardware. The critical difference is that software can usually do so much faster and often at significantly less development time and cost. As well as operational cost may lower but almost never speed - hence the trade-off. But given the rapid pace of change in computing, this software advantage often tips the balance decisively in favor of software's consequent power over hardware.

Top of Page  Tutorials Home