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 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
- 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
.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
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
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;
- 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.
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