Microsoft introduced the first version ofCOM, the Component Object Model, with the release of Windows NT 3.51 in 1995. Designed as an object-oriented, platform and tool independent infrastructure for component-based development, COM is the basis for virtually every technology that's come out of Redmond in the past few years. While it doesn't get a lot of press, COM is the glue that binds together all of Microsoft's technology, from its Unified Data Access (UDA) strategy to the future Windows DNA. Virtually every product out of Microsoft, including Office, SQL Server, and innumerable others have their basis in COM. In 1996, Microsoft updated COM with DCOM, or Distributed COM, the version of COM that shipped in Windows NT 4.0. And with the release of Windows 2000, Microsoft is ready to usher in a new era of component-based software development with COM+, the most powerful version of COM ever created.

Think of COM+ as "the Windows 2000 version of COM." It's COM on steroids. COM mixed with the next version of Microsoft Transaction Server (version 3.0). Or COM with a host of new services. The COM programming model, however you look at it, sounds the death knell for monolithic desktop applications that have historically been created in straight "Petzold" C, MFC, or even Visual Basic. Because with COM, location doesn't matter: COM enabled distributed applications whose components can be found on servers all over the world. It's literally a software revolution.

Currently,  most COM development extends the traditional client-server (or "two tier") programming model to a three-tier (or multi-tier) model that consists of the following parts:

  • Presentation layer: The user interface; the component that users interact with. This could be a traditional "Win32" application or a Web application hosted in Internet Explorer.
  • Business Rules layer: The components, typically located on a server, that handle the grunt work. Typically, you will use this layer as an intermediary between the user and the data they are accessing on the back-end.
  • Data layer: An enterprise data source such as SQL Server 7.0 or the Exchange message store. The user never directly works with this layer, but rather accesses it through the middle, business rules, layer.

In typical Win32 applications, the presentation layer and business rules layer are almost always contained in the same program (think of a standard Visual Basic desktop program). By further abstracting the distributed COM application into three or more layers, however, we can use distinct tools, if desired, to create each layer. And, of course, each layer can run on a different machine, anywhere in the world. 

So this is the world of COM.  And it will be the world of COM+, too, when Windows 2000 ships later this year. But COM+ brings a few new features along with it. In the pre-COM+ world, COM components could be written to take advantage of Microsoft Transaction Server (MTS), an operating system component that provided the infrastructure need to provide transactions (naturally) and manage components (unnaturally). In Windows 2000, MTS 3.0 has been integrated into the operating system as Component Services. And because Component Services is now officially part of the COM+ umbrella, your distributed applications need to do almost nothing extra to take advantage of its unique transactional features. Component Services has also been updated to include new Security Services, which gives developers programmatic access to Windows 2000 security authentication. And it includes a new Synchronization Service that gives components the ability to programmatically synchronize components. Nice.

But wait, there's more. In addition to the promotion of MTS as Component Services, COM+ also provides a host of new services that are each targeted at specific needs for distributed component development. Let's take a quick look at them.

  • Queued components: Previous to COM+, developers could access the Microsoft Message Queue Server (MSMQ) to provide queuing message services to applications that needed to traverse unreliable (i.e. dial-up) connections. In Windows 2000, this facility has been integrated right into COM+ as the Queued Components service.
  • Event Service: COM+ components now support an event model where subscribers can access events fired by publishers. Events are simply methods that execute in response to notifications in a manner formally defined by COM+.
The following features were intended for the initial release but were later taken out of COM+:
  • In-Memory Database (IMDB): Allows you to cache database tables that are largely read-only (consider my own WinInfo as an example: it's read by thousands of people every day, yet I only need to update it once a day) in RAM, providing enormous speed gains over disk-based reads. This type of system requires lots of RAM and some hefty hardware, but the payoffs are innumerable.
  • Load Balancing: Requiring at least one Windows 2000 Advanced Server machine, Load Balancing allows you to distribute COM component creation requests over any number of machines automatically. This is for those hefty enterprise sites that can afford numerous, massive servers. This feature is now slated for Application Server, a load balancing add-on for Windows 2000 Server due in late 2000.

The improvements to COM in COM+ are as obvious as they are welcome. As a component developer and creator of distributed Web applications, I welcome the upcoming release of COM+ with open arms. If you're a Web or application developer who is unfamiliar with COM or COM+, it's time to starting reading up: I have seen the future and it is distributed.

The future: Windows DNA
Incidentally, COM+ is but one of three pieces to a future puzzle called Windows DNA. After Windows 2000 ships, Microsoft will turn its attention to the other two parts, called Forms+ and Storage+.  Remember my discussion of layers earlier?  COM+ is the glue that binds these layers together, but its also most formally the business rules layer, the layer where software components are written to get users together with data. Well, Forms+ and Storage+ are the other two layers.

Forms+ will combine Microsoft's implementation of Dynamic HTML (DHTML) with the traditional Win32 GDI. We're already seeing some mixing of the two now, with DHTML controls used in Win32 applications and Direct being ported to HTML in Chrome. Well, Forms+ will be the final step in melding these two presentation layer technologies into a single user interface technology for Windows. It will first see the light of day in Neptune, the code-name for an NT-based Consumer Windows expected in 2001 or 2002.

Storage+ will do away with the NTFS file system and replace it with a new relational, object-oriented file system based on SQL Server 8.0. Expected to arrive with the next version of Business Windows (post-Windows 2000, think 2003 or 2004), Storage+ will turn the file system into a relational database, speeding searches and providing a higher level of granularity for those searches. It will also have the wonderful side-effect of finally ridding us of those limiting drive letters. 

Both of these technologies, obviously, are still some time away. But the future begins now with COM+, and I think any developer would agree that things are looking good for the future of Windows.