The Component Object Model (COM) is a softwarearchitecture that allows applications to be built frombinary software components. COM is the underlyingarchitecture that forms the foundation forhigher-level software services, like those provided byOLE. OLE services span various aspects of commonlyneeded system functionality, including compounddocuments, custom controls, interapplicationscripting, data transfer, and other software interactions. In information technology, a compound document is anorganized collection of user interfaces that form asingle integrated perceptual environment. A compounddocument includes a data structure that containsdifferent data types, such as text, audio files, andmotion video files. A compound document is also anapplication environment containing program objectsthat can be interlinked and interacted with by a user. Compound documents can be formed of information partsthat originate from different sources and that areassembled on the fly. Microsoft's Internet Explorerdesktop uses the compound document concept.Microsoft's Object Linking and Embedding is aframework for assembling and managing compounddocuments. OpenDoc is an alternative standard.Component Object Model (COM) is Microsoft's frameworkfor developing and supporting program componentobjects. In object-oriented programming anddistributed object technology, a component is areusable program building block that can be combinedwith other components in the same or other computersin a distributed network to form an application. Examples of a component include:� a single button in agraphical user interface a small interest calculator an interface to a database manager Components can bedeployed on different servers in a network andcommunicate with each other for needed services. Acomponent runs within a context called a container.Examples of containers include pages on a Web site,Web browsers, and word processors. It is aimed at providing similar capabilities to thosedefined in the Common Object Request BrokerArchitecture (COBRA), a framework for theinteroperation of distributed objects in a networkthat is supported by other major companies in thecomputer industry. Whereas Microsoft's Object Linkingand Embedding provides services for the compounddocument that users see on their display, COM providesthe underlying services of interface negotiation, lifecycle management (determining when an object can beremoved from a system), licensing, and event services(putting one object into service as the result of anevent that has happened to another object). The reason for the broad use of COM technologies issimple: for a tremendously wide range of problems, COMallows the creation of better software.Using COM, objects (or classes) and their methods andassociated data are compiled into binary executablemodules, that are, in fact, files with a dynamic linklibrary (DLL) or EXE file name suffix. A module cancontain more than one class.COM allows components of an application to be split upamong different, computers. Because of COM local andremote transparency the client access a component without the knowledge or concern of where the component isrunningHere are some of the facts about COM today: COM is in use on well over 150 million systemsworldwide. COM consists of a well-defined, mature, stable, andfreely available specification, as well as a referenceimplementation, which has been widely tested andadopted worldwide as a de-facto standard. COM provides the richest set of existing servicesfor applications today, as well as the largest set ofdevelopment tools available from a wide variety ofvendors. COM supports the only currently viable componentmarketplace. The market for third-party componentsbased on COM has been estimated at US$670 milliondollars in 1998, with a projected 65 percent compoundannual growth rate, growing to approximately US$3billion dollars by 2001. (Source: Giga InformationGroup) COM supports thousands of available applications,including all of today's highest volume applications.Major system vendors such as Hewlett Packard, DigitalEquipment Corporation, Siemens-Nixdorf, and SiliconGraphics have announced plans to ship COM on UNIX andother operating systems within the year, with morevendor commitments on the way. COM is supported by the largest number ofdevelopment tools available for any component orobject model on the market. COM includes COM+, Distributed Component Object Model (DCOM), and ActiveX interfaces and programming tools.The Component Object Model (COM) and its relatedCOM-based technologies of DCOM, COM+, MTS and ActiveX�comprise the most widely-used component software modelin the world. ActiveX: ActiveX is the name Microsoft has given to a set of"strategic" object-oriented programming technologiesand tools. The main technology is the Component ObjectModel (COM). Used in a network with a directory andadditional support, COM becomes the DistributedComponent Object Model (DCOM). The main thing that youcreate when writing a program to run in the ActiveXenvironment is a component, a self-sufficient programthat can be run anywhere in your ActiveX network(currently a network consisting of Windows andMacintosh systems). This component is known as anActiveX control. ActiveX is Microsoft's answer to theJava technology from Sun Microsystems. An ActiveXcontrol is roughly equivalent to a Java applet.If you have a Windows operating system on yourpersonal computer, you may notice a number of Windowsfiles with the "OCX" file name suffix. OCX stands for"Object Linking and Embedding control." Object Linkingand Embedding (OLE) was Microsoft's program technologyfor supporting compound documents such as the Windowsdesktop. The Component Object Model now takes in OLEas part of a larger concept. Microsoft now uses theterm "ActiveX control" instead of "OCX" for thecomponent object. One of the main advantages of a component is that itcan be re-used by many applications (referred to ascomponent containers). A COM component object (ActiveXcontrol) can be created using one of several languagesor development tools, including C++ and Visual Basic,or PowerBuilder, or with scripting tools such asVBScript. Currently, ActiveX controls run in Windows95/98/NT/2000 and in Macintosh. Microsoft plans tosupport ActiveX controls for UNIX. DCOM: DCOM (Distributed Component Object Model) is a set ofMicrosoft concepts and program interfaces in whichclient program objects can request services fromserver program objects on other computers in anetwork. DCOM is based on the Component Object Model(COM), which provides a set of interfaces allowingclients and servers to communicate within the samecomputer (that is running Windows 95 or a laterversion). For example, you can create a page for a Web site thatcontains a script or program that can be processed(before being sent to a requesting user) not on theWeb site server but on another, more specializedserver in the network. Using DCOM interfaces, the Webserver site program (now acting as a client object)can forward a Remote Procedure Call (RPC) to thespecialized server object, which provides thenecessary processing and returns the result to the Webserver site. It passes the result on to the Web pageviewer. DCOM can also work on a network within an enterpriseor on other networks besides the public Internet. Ituses TCP/IP and Hypertext Transfer Protocol. DCOMcomes as part of the Windows operating systems. DCOMis or soon will be available on all major UNIXplatforms and on IBM's large server products. DCOMreplaces OLE Remote Automation. DCOM is generally equivalent to the Common ObjectRequest Broker Architecture (COBRA) in terms ofproviding a set of distributed services. DCOM isMicrosoft's approach to a network-wide environment forprogram and data objects. COBRA is sponsored by therest of the information technology industry under theauspices of the Object Management Group (OMGDCOM is simply "COM with a longer wire"-a low-levelextension of the Component Object Model, the coreobject technology within Microsoft� ActiveX�. Majordevelopment tools vendors-including Microsoft,Borland, Powersoft/Sybase, Symantec, ORACLE, IBM, andMicro Focus-already sell software development toolsthat produce ActiveX components. These tools and theapplications they produce automatically support DCOM,providing the broadest possible industry support.Additionally, over 1,000 existing commercial softwarecomponents that will work with DCOM are alreadyavailable for use by developers.� COM+: COM+ is an extension of Component Object Model (COM),Microsoft's strategic building block approach fordeveloping application programs. COM+ is both anobject-oriented programming architecture and a set of operating system services. It adds to COM a new set ofsystem services for application components while theyare running, such as notifying them of significantevents or ensuring they are authorized to run. COM+ isintended to provide a model that makes it relativelyeasy to create business applications that work wellwith the Microsoft Transaction Server (MTS) in a Windows NT or subsequent system. It is viewed asMicrosoft's answer to the Sun Microsystems-IBM-Oracle approach known as Enterprise JavaBeans (EJB). Among the services provided by COM+ are: An event registry that allows components to publishthe possibility of an event and other components tosubscribe to be notified when the event takes place.For example, when a sales transaction is completed, itcould trigger an event that would allow other programsto be notified for subsequent processing. The interception of designated system requests forthe purpose of ensuring security. The queues of asynchronously received requests for aservice. A "component" is a building block program that isself-describing. This means that it can be run with amix of other components and each will be able tounderstand the capabilities and characteristics of theother components. Practically, this means that a newapplication can be built by reusing components alreadyknown to exist and without having to compile theapplication. It also makes it relatively easy todistribute different components of an applicationamong different computers in a network. Microsoft'sDistributed Component Object Model (DCOM) addsinterfaces to do this. In addition to its self-description, a componentconsists of one or more classes that describe objectsand the methods or actions that can be performed on anobject. A class (or coclass in COM+ terminology) hasproperties described in an interface (or cointerface).The class and its interface are language-neutral.Associated with the class are one or more methods andfields that are implemented in a specific languagesuch as C++ or Java or a visual programmingenvironment. When you instantiate a class, you createan object (something real that can be executed in thecomputer). Sometimes the term "class" is also used forthe instantiated object (which can be confusing). MTS: Microsoft� Transaction Server (MTS) is the transactionservice in the Windows NT� operating system. Firstavailable in 1996, MTS is now in use at manyorganizations. Enterprise JavaBeans (EJB) is aspecification for a Java-based transaction service. Created by a group of companies led by SunMicrosystems Inc., the initial specification for EJBwas released in spring 1998. Both MicrosoftTransaction Server and Enterprise JavaBeans target thecreation of component-based, transaction-orientedapplications. This paper provides a comparison ofthese two technologies. More specifically, the paperanalyzes the similarities and differences between theways the two component models handle objects,transaction support, controlling complexity,portability, interoperability, language choice andadministration. Put simply, a transaction can be thought of as a setof events that are committed or rolled back as aunit-either all of the events happen, or none of themdo. For example, transferring $100 from your savingsaccount to your checking account requires bothsubtracting the money from your savings account andadding it to your checking account. To achieve aconsistent result, either both operations should occuror neither one should. Transaction-orientedapplications like this are very common, and so manyvendors provide software that makes writingtransactional applications easier. And becausetransactional applications often need to handlehundreds or thousands of clients (i.e., users atworkstations), services that make it easier to buildscalable applications are commonly built into productsthat support transactions. Both Microsoft Transaction Server and EnterpriseJavaBeans support transactional applications andprovide services for scalability. Because the twotechnologies attempt to solve many of the sameproblems, they have much in common. The easiest way toillustrate their similarities is to describe the basicarchitecture and terminology of each MTS is based on the Component Object Model (COM), andan MTS application is implemented as one or morecomponents.