Microsoft .NET, unveiled at this year's Forum 2000 conference, is the latest incarnation of Next Generation Windows Services (NGWS), the former name of Microsoft's next Web-enabled version of Windows. Although .NET today is more goal than tangible entity, it promises far-reaching effects—on both Microsoft and the software industry in general.
Microsoft .NET represents a complete remake of the company's product lines and of its technological future. No Microsoft application, including SQL Server, will remain untouched as the company rolls out its .NET strategy during the next several years. The .NET naming scheme will transform SQL Server into SQL Server.NET, Windows into Windows.NET, Microsoft Office into Office.NET, Visual Studio into Visual Studio.NET, and so on. But the .NET metamorphosis is far deeper than a name change. Microsoft .NET is an infrastructure that incorporates the Internet and changes the way all Microsoft technologies work and how we interact with them. Microsoft has positioned SQL Server as the cornerstone of this new architecture by enabling both Web and desktop access to enterprise data. At this early stage of the .NET initiative, separating the marketing hyperbole from the nitty-gritty technical details is no small feat. But in this article, I give you an overview of Microsoft's vision for the future and show you how Microsoft .NET has the power to transform both Microsoft and the way we use and build Windows applications.
Over the .NET
One of .NET's key goals is to transform Microsoft from a products vendor into a services vendor. As part of the .NET initiative, Microsoft will morph many of its products into services that you can subscribe to and use across the Internet. For instance, Microsoft has stated its plans to deliver two versions of the next release of Office: One Office.NET offering will be a subscription-based service that users access across the Internet and the other will be a traditional shrink-wrapped version of Office.NET that you install on your local system. Microsoft will continue to deliver other products, such as SQL Server and other members of the BackOffice family, as standalone products. Microsoft has yet to provide details about the pricing models it will use with subscription-based licensing. This transformation into an Internet services company will let Microsoft provide better customer service and make software easier to deploy and install. Microsoft also intends this model to facilitate customer upgrades to the latest software enhancements.
Figure 1 shows the products and services that Microsoft .NET comprises. Let's look quickly at each of the Microsoft .NET platforms. Windows.NET is the next-generation release of the Windows desktop platform. Windows.NET will provide built-in support for .NET applications and services and will provide the most functional user experience of all the .NET platforms. The version of Windows currently code-named Whistler will be the first Windows version that Microsoft will ship with integrated support for the .NET platform. Microsoft says that the company will also offer Windows versions without .NET services.
In addition to Windows.NET, Microsoft is betting heavily on the proliferation of Internet-enabled devices such as mobile phones and handheld PCs to drive the move to .NET. The Microsoft .NET plans call for full support of these types of devices, although the "user experience" won't be as rich as what Windows.NET provides. In their Forum 2000 statements, Bill Gates and Steve Ballmer also hinted that .NET support for other platforms, such as UNIX and Linux, could be in the works.
The services that Microsoft intends to provide as part of the .NET initiative include MSN.NET, personal subscription services, Office.NET, bCentral.NET, and Visual Studio.NET. MSN.NET will combine the current MSN content and services with the new .NET platform, letting customers create a single digital personality that they can download to browsers and use to customize .NET devices. Whereas MSN.NET will act as an information portal, personal subscription services will provide customer-oriented services for personal productivity software, games, and other entertainment. These services will provide traditional desktop applications with roaming support across the Internet.
Office.NET is the follow-on to Microsoft's ubiquitous Office suite. Unlike the current version of Office, Office.NET will allow collaborative editing of documents and will let users access its functionality from any .NET device, including Windows.NET and handheld devices. Microsoft says that it will also provide versions of Office without .NET support.
Visual Studio.NET is the follow-on to the Visual Studio 7.0 release that Microsoft plans to release early next year. Visual Studio.NET will provide a set of XML-based programming tools for developing standalone and networked applications. This Visual Studio version will also provide a common Integrated Development Environment (IDE) for all of its languages and for Microsoft's new C# (pronounced "C sharp") language. (For more information about C#, see the sidebar "In Tune with C#," page 46.)
Finally, bCentral.NET will provide a set of subscription-based services targeted at businesses. Planned bCentral.NET services include messaging and email, e-commerce, and customer relationship management (CRM).
Microsoft .NET is more than a change in the way Microsoft delivers and licenses its own products; it also represents a fundamental change in the way the market develops and deploys Windows and Web applications. The Microsoft .NET Framework addresses the application development problems that were the stumbling blocks to enterprise-level acceptance of Windows. Figure 2 shows an overview of the Microsoft .NET Framework. As you can see, with the .NET Framework, you build applications by using Visual Studio.NET, which interacts with .NET objects provided by application servers located across the Internet or by local .NET Enterprise Servers. These .NET servers are built from a set of application classes or components known as building-block services.
You'll be able to use Microsoft .NET building-block services much as you use components today—to reduce application development effort by snapping in existing pieces of functionality to your applications and services. Microsoft plans to provide building-block services for several key technologies. For instance, one of the first building-block services will be an Identity service that uses Microsoft Passport (a single sign-on and wallet service for network communications) and Windows authentication technology. This service will authenticate users through traditional passwords as well as through smart cards and biometric devices. A Notification and Messaging building-block service will provide instant messaging, email, fax, and voice mail to Windows.NET systems and other .NET devices. A Personalization service will customize .NET device usage and let you define how the devices should handle notifications and messages. An XML Store building-block service will read and write any persistent information that a .NET application needs. For instance, the XML Store service would handle reading and writing application configuration values that current applications write to either the file system or the Registry. A Calendar building-block service will provide personal and business scheduling. A Directory and Search building-block service will be available to all applications to provide a consistent interface for locating information. Finally, Microsoft plans to offer a Dynamic Delivery building-block service that will let developers automatically upgrade their .NET applications and services.
These building-block services for the .NET Framework are known as Web Services. Web Services are applications that Microsoft will deliver as services that you can integrate with client applications across a TCP/IP connection. Like COM components, Web Services are black boxes: You don't have to know how they're implemented to use them. Also like COM components, Web Services have well-defined interfaces. The interface for a Web Service, which Microsoft calls a contract, describes the messages that the Web server will accept and generate. In a marked departure from Windows DNA, Microsoft's COM-based n-tier architecture, applications built within the Microsoft .NET Framework don't use Microsoft's proprietary Distributed COM (DCOM) protocol to interact with Web Services. Instead, Microsoft is building .NET on the emerging standards of XML and Simple Object Access Protocol (SOAP). The SOAP protocol uses an XML encoding scheme to enable remote procedure calls (RPCs) through the HTTP protocol. (For more information about SOAP, see the Microsoft article "SOAP: Simple Object Access Protocol" at http://www.msdn.microsoft.com/xml/general/soapspec.asp.) Although developers won't use COM and COM+ to build .NET applications, these software models aren't going away. The Microsoft .NET Framework will use COM and COM+ as middle-tier services, and many of those services will call underlying COM objects.
Most of the .NET building-block services will be available both online and offline. You'll be able to invoke a service on a standalone desktop system, on a local service, or across the Internet. You'll be able to use .NET building-block services on any platform that supports XML. However, Windows.NET will offer the best environment for creating and delivering Web Services, and Microsoft will optimize Windows-based clients to distribute Web Services to every kind of device.
Figure 3 presents an overview of the Web Services that the Microsoft .NET Framework includes. Much like Java's Java Virtual Machine (JVM), the Microsoft .NET common language runtime runs on top of the basic OS services. Also like Java, the common language runtime doesn't execute machine-specific code. Instead the common language runtime, which is a runtime interpreter, executes a source-code-independent language called Microsoft intermediate language (MSIL). MSIL provides a hardware-abstraction layer that insulates the application code from the underlying hardware platform; theoretically, you could implement an MSIL runtime on a non-Windows platform.
However, unlike the JVM, the common language runtime enables deep multilanguage integration because it lets code inherit the implementation of objects and classes written in any .NET-enabled language. Thus, the common language runtime would let you develop objects and classes in any .NET-enabled language. Microsoft plans to provide three .NET-enabled languages: Visual Basic (VB), Visual C++ (VC++), and Microsoft's new C#. Microsoft is also working with other vendors to integrate other languages into the .NET Framework. Although Java is currently and conspicuously missing from Microsoft's suite of .NET-enabled languages, third parties will likely provide support for Java, Perl, Python, COBOL, and other languages.
Microsoft calls code written for the common language runtime managed code, and the programs that this code produces aren't standard EXEs or DLLs. Instead, Microsoft calls these programs assemblies, which can be either single-file assemblies (like today's EXE) or part of a multifile assembly (like a DLL). A manifest, contained within the assembly, defines the collection of components that go into creating an assembly.
Data Services and ADO+: The Code to Unlocking SQL Server.NET
The Web Services in the .NET Framework provide a language-independent set of classes with functions that .NET applications can use. For example, the Base services include functions such as basic I/O classes, graphical drawing classes, threading classes, and networking classes. The Programming services provide application development classes for such functions as debugging, tracing, configuration, and installation. Data services consist of the new ADO+ class library. ADO+ provides the link that .NET applications will use to access enterprise data stored in SQL Server. Built on ADO, ADO+ contains the familiar Connection and Command objects that exist in ADO. ADO+ provides connected application data access through high-performance stream APIs called DataReaders. And ADO+ uses a new Dataset object to provide cursor-like data access for disconnected recordsets. The .NET Framework will also include a managed data provider for SQL Server that will let .NET applications easily access SQL Server databases through ADO+ objects.
You create Microsoft .NET application interfaces by using either the Web Forms or the Win Forms application model. These models use the various classes that the underlying Web Services layer provides. You'll use the Win Forms application model to produce traditional desktop applications, which can use the rich Windows.NET interface functionality. You'll use the Web Forms application model to build browser-based applications through the new ASP+ programming model. ASP+, an extension of Active Server Pages (ASP), supports a combination of HTML and ASP. ASP+ provides a VB-like component-based, event-driven, WYSIWYG development environment that cleanly separates the interface from the application code. With ASP+, you'll also be able to produce Web Services applications. Although Microsoft won't require you to use ASP+ to produce .NET Web Services, ASP+ will make their development easier by abstracting the networking protocols and shielding the developer from the direct use of HTTP or SOAP.
Casting a .NET into the Future
In their Forum 2000 presentations, Bill Gates and Steve Ballmer compared the transition to Microsoft .NET to the jump from DOS to Windows—and that is no exaggeration. Microsoft .NET doesn't just represent a revolutionary change in the way you'll develop and use software. Microsoft is also changing how you'll pay for many pieces of software. Instead of paying periodic license fees to purchase or upgrade to Windows.NET or Office.NET, you'll pay a monthly subscription fee to access Microsoft's software across the Internet. In addition, you'll need to subscribe to the new .NET business-to-business (B2B) services, such as bCentral.NET. Subscription-based software plans, which IBM has used with its mainframe and AS/400 customers for several years, can help businesses better budget for and control their software expenses and can help customers remain current with changing software releases.
These fundamental architectural, marketing, and licensing changes don't happen overnight. The first Microsoft .NET incarnations will start to appear next year at the earliest with Windows.NET 1.0; Microsoft is scheduling MSN.NET, bCentral.NET, and personal subscription services for release in 2001. Microsoft plans to release the other key pieces of the .NET puzzle in 2002 and beyond, filling in the missing pieces with Windows.NET Server, Office.NET, Visual Studio.NET, a full set of .NET building blocks, and .NET-enabled devices.
Considering Microsoft's optimistic release estimates for other technologies—such as Cairo, the object-oriented version of Windows NT that never materialized, or even Windows 2000—Microsoft .NET might not make an impact on your life for a while. The pending outcome of Microsoft's Department of Justice (DOJ) trial might have unknown consequences for the .NET strategy as well. Still, Microsoft intends to take Internet integration to the next level and provide programming tools that let you more easily develop both desktop and Web-enabled applications. For now, Microsoft .NET is the company's means to those ends. For more information about Microsoft .NET, see its home page (http://www.microsoft.com/net/).