COM arose from Microsoft's original interapplication communication system OLE. In OLE's second incarnation, Microsoft optimized it for Internet use and named it ActiveX. Microsoft extended OLE's object model to create COM. Microsoft's addition of distributed network support using an object database and a network polling mechanism created Distributed Component Object Model. DCOM is still in use, but COM+ in Windows 2000 (Win2K) will replace it.
COM is a Windows 95 technology that links applications on the same system—even if the object lives somewhere that your system can't connect. DCOM adds the ability to run applications on multiple systems and still communicate. In both COM and DCOM, the programming model presupposes that the communications pipeline (i.e., the network) is generally available. COM and DCOM break down under a transient or unreliable communication channel. To ensure fault tolerance, Microsoft began supporting DCOM through server applications such as the Microsoft Transaction Server (MTS) and the Microsoft Message Queue Server (MSMQ).
MTS 2.0 adds a method to manage the state of transactions in a distributed system. If MTS detects a successful transaction, MTS commits the transaction. If a transaction fails, MTS rolls back the transaction. MTS also lets a distributed application scale and duplicates enterprise-level database functionality. COM objects configured to use ODC and ADO don't require additional code to support MTS transactions.
DCOM uses MSMQ to provide asynchronous transaction support when necessary. Queued components in MSMQ can survive the disruption of a network connection or on a client or server that infrequently connects such as a sales representative that places a product order. When the required resource becomes available, MSMQ transfers the information and completes the transaction. Internet transactions use this asynchronous connection model because Internet communication is transient in nature.
In the past few years, vendors have begun to build many large systems using COM objects and a 3-tier architecture. For example, Dell built its large build-to-order e-commerce Web site using 3-tier architecture. COM's advantage is that it exposes object methods and properties in such a way that they're language neutral so most programming languages can manipulate them. Unless you change the way the languages call the object methods and properties, you can make changes to the internal workings of your component without affecting your system. With a 3-tiered approach an enterprise can generally alter one of the layers without greatly affecting the other two layers. Therefore, the 3-tiered approach provides more flexibility to add new functionality to an enterprise information system.