Microsoft's .Net initiative began to
crystallize in the late 1990s. It was designed to solve several widespread
Windows-generated exasperations: DLL (dynamic link library) hell, the complexity of installing and uninstalling software, and the fragility of proprietary configuration. To eliminate these problems, Redmond decided to add another layer of indirection while implementing interoperability through XML (Extensible Markup Language). According to Dick Hardt, founder of the ActiveState Tool Corporation, Microsoft has scripted the indirection and data transparency well enough that ".Net removes all the configuration issues and complexity with ActiveX and COM [Component Object Model]." At the same time, .Net has better performance than COM.
Of course, Microsoft has a history of making grand promises for its products and then not delivering on them. We're not certain that .Net's fate will be better, but early indications are promising.
".Net is about programmer productivity," Hardt says. We're struck by how much .Net is an elaboration of scripting technologies. Scripting has to do with effective patterns of generalization -- using the computer to automate solutions. Also, as Microsoft CEO and president Steve Ballmer aptly puts it, "The world is going more decentralized." These are precisely the ideas .Net exploits.
VS gets you to IL
.Net applications run both a runtime framework and an intermediate language (IL) execution engine; the latter performs just-in-time (JIT) compilation. IL appears to have as much power and flexibility as developers currently need, with working code generated for C, BASIC, COBOL, Perl, and Python. Different languages share the common language runtime (CLR), but in a manageable way.
While DLLs easily fall into conflict with Windows systems, single .Net applications can incorporate multiple versions of a single DLL. The release of .Net should mark the end of the DLL conflicts that plague so many Windows desktops.
This means that, under .Net, the installation of software consists of copying a single executable file image -- no reboot required! Applications and DLLs include metadata that suffices for the resolution all interdependencies. There is even a standard mechanism for network retrieval of undefined or updated components. The same mechanism provides the opportunity for performance specializations: particular DLLs can be optimized for MMX-savvy chips or multiprocessing hosts, and will still follow generic instructions for the majority of installations.
Though Microsoft at the moment has terrible problems with the security of its software, .Net specifies a signature verification mechanism that promises "security granularity down to the method," according to Hardt.
Regular Expressions readers know how fond we are of anything that moves end users away from dealing with the details of installation -- the registry, datatypes, versioning, and other matters that computers ought to manage. .Net doesn't just eliminate the registry and open all metadata to plain-text introspection; it does all this with full cross-language integration and interoperability. IL provides for proper object inheritance expressible in any popular computing language.
The golden chain Microsoft has designed for developers is Visual Studio 7 (VS).
VS fully unifies not only Visual Basic, Visual C++, and Visual InterDev, but ActiveState, Perl, and Python. VS defines the fundamental framework for development of .Net applications. The clever compilation of IL and .Net's excellent design appear to be yielding performance superior to that of COM-based applications.
Does this mean VS will become as necessary to developers as Windows and Office have been to conventional desktop users? It appears that .Net's fundamentals will be documented better than COM ever has been, so competition to VS will be more feasible on a technical level than it has been for the more closed products. On the other hand, if VS releases are of adequate quality, many developers will agree with Hardt when he says that "Microsoft has done a good job of advancing the base technology of what a modern OS needs to provide and improve."
Let's review the status of .Net's core pieces. SOAP exists now and has been reasonably well understood for many months. As of yet, there are virtually no shrink-wrapped applications that exploit SOAP in the way that Microsoft says will become natural once the Web replaces the desktop as the foundation of programming. Microsoft demonstrations raise security questions more than they excite prospective customers.
On the other hand, SOAP 1.1 answers some of those questions. Release 1.1 is more transport neutral; it not only works across HTTP, but across email connections as well. IBM and other proposal cosponsors helped rewrite the 1.1 standard in terms of the W3C's XML Schema rather than 1.0's data-typing syntax.
Many different languages already support SOAP, and Microsoft's own Passport Web identity service is a SOAP server. ActiveState's PerlEx plugin for leading Windows-hosted commercial Web servers provides what Hardt considers the ability to "assign components with ... the SOAP stuff done for you." The Perl Package Manager now in ActiveState's ActivePerl uses SOAP to manage version and module information. Among other developer tools which currently expose SOAP 1.0 are IBM's devLabs application-development environment and Rogue Wave's XORBA CORBA-XML link.
Microsoft has been working on IL with outside partners such as ActiveState and Interactive Software Engineering for over a year. Attendees at PDC received software development kits for alpha-level IL and CLR pieces. Beta versions appear to be on schedule for release this fall. Hardt expects them to be comparable in polish to the first betas of NT 5.0 (aka Windows 2000). Microsoft partners report plans for .Net to be at least as ubiquitous in the next five years of application programming as COM has been in the last five.
ASP+ and C# are ready now, and have even been documented in a few books by publishers outside Microsoft. While Microsoft is currently pushing C# as the ideal vehicle for .Net development, C#'s adoption is tangential to .Net's success.
.Net futures, scripting realities
We've all had so much experience with Microsoft vaporware that it's natural to be suspicious of the company's .Net publicity. In this case, though, Microsoft has done enough to merit a closer look. IBM, ActiveState, and other vendors are already exploiting SOAP. We should know by the end of the year whether the other base elements of .Net bring advantages to computer developers and users.
In the meantime, the scripting technologies we often cover are still on the boil. The leaders of Perl, Python, and Tcl don't seem to realize progress is supposed to ease up during vacation season. Larry Wall announced his vision for Perl 6 at the O'Reilly Open Source Convention. The lead Python developers are settling in with new employer PythonLabs.com and working out plans for Python 2.0, while Tcl creator John Ousterhout is creating a new Tcl core team to distribute leadership for his language's development. Regular Expressions will stay on top of all this activity in the months ahead.
About the author
Cameron Laird and Kathryn Soraiz manage Phaseit, their own software consultancy, from just outside Houston. Visit Cameron's Scripting Languages & Techniques discussion in the Unix forum, hosted on ITworld.com.