COM+2 - First Announcement of Microsoft's New Technology
Author: Richard Grimes
Microsoft tends to be very careful about releasing details about its forthcoming technologies. Usually information is drip-fed to the public via conferences and press releases and this has been apparent over the last 6 months or so with the release of details about Visual Studio 7. VCDC has had a succession of keynotes about ATL Server and the Wrox ASP conference has had details about ASP+ (https://www.wroxconferences.com).
Those of you who have been attentive will have noticed the recent leaking about COM+ 2.0 in Paul Thurrott's WinInfo newsletter. He was talking about a new Microsoft technology called Fusion that purports to prevent 'DLL Hell' (where multiple versions of DLLs on your system make your applications crash when Windows picks the wrong version). The complete article can be found at https://www.winsupersite.com/showcase/whistler_fusion.asp. The relevant section is reproduced here:
Fusion 2.0: Protecting the Server
The significant part of this is the mention of COM+ 2.0. Everyone who uses COM+ will be aware that a new version of COM+ would be released sometime in the future, because throughout the beta of Windows 2000 Microsoft has always talked about COM+ as 'COM+ 1.0'. Indeed, the first announcement of the technology at the 1997 PDC referred to two parts, COM+ Services and COM+ Runtime. COM+ Services was described as providing services like transactions which would be part of the OS and provided through interceptors that would provide what was described as 'auto-everything'. This is the COM+ that we have in Windows 2000 where components are configured in the COM+ catalog to use a service and COM+ ensures that that service is loaded, initialised and applied whenever the component is accessed.
At the 1997 PDC we were also told about another technology that was called the COM+ Runtime. This, we were told, would do much of the client-side COM plumbing work for us. I reported on the COM+ runtime soon after the 1997 PDC in the Nov/Dec 1997 issue of Visual Systems Journal (www.vsj.co.uk), and here's what I wrote:
COM+ rectifies this by wrapping the COM libraries with a runtime library: the COM+ Runtime. The COM+ Runtime handles all the grungy stuff for the COM developer like module initialisation, reference counting, class factory creation and the implementation of the QueryInterface method that every object's interface must implement to give access to the other interfaces on the object and to allow the object to assert its identity.
Further details about the COM+ Runtime can also be found in a two-part MSJ article by Mary Kirtland (Nov, Dev 1997, https://msdn.microsoft.com/library/periodic/period97/com1212.htm). In these articles Mary wrote:
COM+ is language-neutral. It doesn't care what syntax is used to implement components-that's up to the tool you use. All COM+ cares about is that the tool recognizes some syntax as representing a request to do some COM+ thing. The programming model concepts are the same.
The article gave details about self-describing components that contain metadata ("type library on steroids") where the runtime implemented most standard interfaces for you as well as class factories. The developer of these components would not have to deal with CLSIDs because, "COM+ attempts to make COM component development more like language-specific component development: regardless of the language or tool you are using, you just write a class". Mary also talked about attributed code, standard data types that would be supported by all languages that supported the COM+ Runtime and implementation inheritance and constructors for COM+ components.
Paul Thurrott's article does not address any of these features. Indeed, I am not sure if he realises the significance of the term COM+ 2.0, because he makes the mistake of blaming COM DLL servers as a cause of 'DLL Hell'. All COM developer's know that COM solves the problem of DLL location (through registration with the system registry and COM+ catalog), of versioning (through CLSIDs) and of preventing exported functions being accessed through an incorrect function pointer (through interfaces and QueryInterface() ).
From Thurrott's comments I think that we can deduce the following:
Let's hope that more information will be released by Microsoft or Paul Thurrott. If COM+ 2.0 has just a small part of the facilities announced at the 1997 PDC it will certainly make our development lives easier!
More ByteSize articles:
COM+ 2.0 - First Announcement of Microsoft's New Technology By Richard Grimes, 100500
Type Library Info, XML and a bit of XSL for fun! by Richard Anderson 121199
Author: Richard Grimes
Richard Grimes started programming aeons ago on 8-bit computers and hasn't looked back since. He has spent an interesting time as a research scientist (the little known "Grimes Effect" is his creation), underpaid time as a computer trainer and done time as a distributed object developer.
ATL took hold of Richard while he was part of a team developing a COM-based workflow system and its elegance and simplicity has had a lasting effect on him. Although his is not an obsessively pure COM existence, he finds that an ATL-assisted COM lifestyle gives him more time to enjoy his garden.
Go to Richards pages in Author Central.
Contribute to IDR:
To contribute an article to IDR, a click here.