Com a slideshow of epic proportions
1 / 47

- PowerPoint PPT Presentation

  • Updated On :

COM A Slideshow of Epic Proportions Sean Baxter What is COM? A standard for interoperable software A runtime library providing low-level or hard-to-implement functionality A competitive, capitalist marketplace for selling functionality to application developers

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about '' - liam

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Com a slideshow of epic proportions l.jpg

COMA Slideshow of Epic Proportions

Sean Baxter

What is com l.jpg
What is COM?

  • A standard for interoperable software

  • A runtime library providing low-level or hard-to-implement functionality

  • A competitive, capitalist marketplace for selling functionality to application developers

  • An endless source of healthy obfuscation

That last slide was pulled from booboo s rear end what is com really l.jpg
That Last Slide Was Pulled From Booboo’s Rear End. What is COM, Really?

  • A sacred covenant held by the world’s best developers. All software functionality is encapsulated through a COM class (coclass) and exposed through COM interfaces


Blah Blah Blah

Blah Blah Blah

Blah Blah Blah


Interface and coclass fundamentals l.jpg
Interface and Coclass Fundamentals is COM, Really?

  • An interface is a group of methods

  • A coclass is a group of interfaces

  • All coclasses implement the IUnknown interface

  • All other interfaces derive IUnknown

  • Lollipop diagrams describe coclasses

About interfaces l.jpg
About Interfaces is COM, Really?

  • The client communicates with the server through interface pointers (think base class pointers)

  • Methods implemented by the coclass are invoked through interface pointers

  • Interface pointers are acquired through IUnknown

  • Because all interfaces derive IUnknown, any interface pointer on an object can be acquired through any other interface pointer on the object

  • The method to acquire an interface pointer is IUnknown::QueryInterface (think dynamic_cast)

More about interfaces l.jpg
More About Interfaces is COM, Really?

  • Interfaces are equivalent to C++ abstract base classes

  • Because there is no standard thunk mechanism, interfaces do not support multiple inheritance

  • Two IUnknown pointers point to the same object if their values are equal

  • “Dispatch interfaces” are special case interfaces allowed by the COM Specification

Interfaces and virtual tables l.jpg
Interfaces and Virtual Tables is COM, Really?

  • An interface pointer points to the corresponding slice of a COM object

  • The first 4 bytes of this slice comprise a pointer to the interface’s virtual table

  • Each slot in this virtual table is the address of an interface method

  • A method implementation may be referenced by more than one vtbl entry

Reference counting l.jpg
Reference Counting is COM, Really?

  • To regulate destruction of objects, COM requires that all coclasses implement a reference counter

  • COM objects can have their methods invoked from other threads, processes, and even machines. Reference Counting eliminates a number of problems associated with synchronization

Reference counting rules l.jpg
Reference Counting Rules is COM, Really?

  • Each object is given a reference count of 1 upon instantiation

  • IUnknown::AddRef increments the reference count

  • A successful IUnknown::QueryInterface call increments the reference count

  • IUnknown::Release decrements the reference count

  • When the reference count is decremented to zero, the object destroys itself

So why all these interface and reference counting formalities l.jpg
So Why All These Interface and Reference Counting Formalities?

  • One of the most amazing features of COM objects is location transparency: COM marshals interfaces between processes and remote computers

  • Reference counting guarantees that a client cannot prematurely destroy a shared object

  • COM is language transparent: unsophisticated languages like Visual Basic, VBA, J-Script, and VB-Script would not otherwise be able to properly delete objects

Speaking of location transparency l.jpg
Speaking of Location Transparency... Formalities?

  • COM objects (servers) can be delivered in two module types: EXEs or DLLs (aka OCXs)

  • EXEs cannot run in-process

  • DLLs can only run in-process

  • A “surrogate” EXE can load a DLL to make it an out-of-process server

An in process server same apartment l.jpg
An In-process Server Formalities?(same apartment)

In process server different apartment l.jpg
In-process Server Formalities?(different apartment)

Local server l.jpg
Local Server Formalities?

Remote server l.jpg
Remote Server Formalities?

Things to note l.jpg
Things To Note Formalities?

  • All interface method calls are synchronous; a remote call to a New York server must complete its round-trip before the client can continue execution

  • Asynchronous services are available through Microsoft Message Queue (MSMQ) and ICallFactory (Windows 2000)

  • Encryption, authentication, and impersonation services are available with remote server connections (at least on NT)

Confused l.jpg
Confused? Formalities?

Where Am I?

The Guy In The Back Row

Com owns you l.jpg
COM Owns You Formalities?

So what does all this nonsense about location transparency and reference counting have to do with anything?

Ever heard of OLE? Ever heard of ActiveX? You may suspect that these have something to do with COM...

Wrong l.jpg
WRONG! Formalities?

They are COM.

All will soon be clear

Ms marketecture common misperceptions l.jpg
MS Formalities?Marketecture:Common Misperceptions

  • OLE is a system of linking and embedding data into a document (hence the acronym “Object Link and Embedding”)

  • ActiveX, like Java, is a system for building web page applets

  • Microsoft Transaction Server (MTS) processes business data from the internet

Faery Tales!

The journey of com l.jpg
The Journey of COM Formalities?

  • Dynamic Data Exchange (DDE) was introduced while the Earth was still cooling.

  • DDE was unsavory. MS unveils OLE 1.0 after the villagers riot

  • OLE 1.0 is a big success but hard to program. MS unveils OLE 2.0 for Windows 3.1: COM is born (it’s 16bit)

  • Windows NT 3.5 is blessed with OLE (look ma - no version number!) and true 32bit COM. OLE is now “Olè,” which is synonymous with COM

The journey of com ii l.jpg
The Journey of COM (II) Formalities?

  • To celebrate Windows 95, MS blesses COM with the apartment model

  • 1996 sees Windows NT 4. DCOM brings network and multithreading enhancements to COM

  • Microsoft Transaction Server (MTS) becomes available for NT Server. This doesn’t process web business data. It’s a COM runtime environment which allows components to run more efficiently (solving scalability difficulties often faced in processing business data)

The journey of com iii l.jpg
The Journey of COM (III) Formalities?

  • OLE-DB provides consistency when accessing data from a variety of providers

  • MS makes web browsers a priority (IE3) and simultaneously coins the term “ActiveX,” adding to the COM marketecture. Like OLE, ActiveX is a synonym for COM.

  • Microsoft Message Queue (MSMQ) delivers asynchronous (and vastly more reliable) method calls

  • Visual C++ 5.0 ships with ATL 2.1. OLE Control creation has never been so easy!

The journey of com iv l.jpg
The Journey of COM (IV) Formalities?

  • Windows 2000 ships in 2004. Microsoft introduces COM+ acronym: COM+ is simply COM on Win2k

  • Win2k includes many COM updates including a third threading model (the Neutral Threaded Apartment) and integration of MTS into the COM runtimes

  • COM+ 2.0 delivers legendary COM virtual machine

  • Windows NT 6 device contexts replaced by DirectDraw surfaces. Classic OLE Control interfaces deprecated for new, ultra-spiffy interfaces

Comprehension l.jpg
COMprehension Formalities?

  • COM is a set of many, many technologies.

  • COM is really Microsoft’s software engineering strategy

  • Computer people (you) are betting the bank on Microsoft

  • Microsoft is betting the bank on COM

  • COM Owns You

Com defined l.jpg
COM Defined Formalities?

A single sentence can’t define COM, because COM is such a monumental and omnipresent set of technologies.

So what is a COM technology? Any software creation that leverages interfaces and coclasses, as described in the earlier slides.

Com in everyday life l.jpg
COM in Everyday Life Formalities?

The Month View is from the Microsoft Windows Common

Controls-2 6.0 controls library

Property pages l.jpg
Property Pages Formalities?

How does Visual Basic know which properties to put in the box?

Events l.jpg
Events Formalities?

How does Visual Basic know which events the control exposes?

What is a vb control l.jpg
What is a VB Control? Formalities?

Standard interfaces l.jpg
Standard Interfaces Formalities?

  • Programming sucks. Best to fall back on platform-provided functionality

  • A container/client can interact with any server/control simply by implementing the required site interfaces

  • Application developers who license your components are already familiar with the interfaces

  • Standard interfaces can use the Microsoft-provided proxy/stubs

What are some com based technologies l.jpg

OLE Controls Formalities?





TAPI 3.0

Exchange Server

Exchange Client

Active Scripting

CDO 2.0




Microsoft Repository

Broadcast Architecture

Still Image API

Microsoft Multimedia

Indexing Service

What Are Some COM-Based Technologies?

Still more com technologies l.jpg

Active Desktop Formalities?


Microsoft Agent

Microsoft Java SDK



Microsoft Wallet

Active Directory

Active Accessibility

Clustering Service

Fax Services



Synchronization Manager

Structured Storage



Windows Shell API

all OLE Applications

Still More COM Technologies!

The glory of com l.jpg
The Glory of COM Formalities?

  • COM eliminates thread synchronization and IPC/RPC confusion

  • COM enables real polymorphism: language transparency and location transparency

  • COM mandates a consistency among component interfaces to reduce learning curves

  • COM allows versionless updates

  • COM is the best component standard: it is by far the most commercially successful

Dll server mechanisms l.jpg
DLL Server Mechanisms Formalities?

  • DllRegisterServer and DllUnregisterServer manipulate the registry

  • DllCanUnloadNow tells COM when the module is not being used

  • DllGetClassObject provides the client with the class factory of the required COM object

Exe server mechanisms l.jpg
EXE Server Mechanisms Formalities?

  • A /RegServer argument registers the EXE

  • A /UnregServer argument un-registers the EXE

  • CoRegisterClassObject registers a class factory for clients to connect to

  • RegisterActiveObject adds an object to the Running Object Table (ROT)

Com object instantiation l.jpg
COM Object Instantiation Formalities?

  • CoGetClassObject (wrapped by CoCreateInstance and CoCreateInstanceEx) launches a module and retrieves its class factory

  • CoGetClassObjectFromURL downloads a module from an URL, decompresses it, registers it, and invokes CoGetClassObject on it

  • GetActiveObject loads an object off the ROT

Com security l.jpg
COM Security Formalities?

  • CoInitializeSecurity sets the authentication requirements for the current process

  • The COSERVERINFO structure specifies the machine name and authentication info for clients connecting to remote objects

  • CoImpersonateClient allows the server to impersonate the client when accessing other servers

Books of competency l.jpg
Books of COMpetency Formalities?

  • The C++ Programming Language (Bjarne Stroustrup)

  • Programming Windows (Charles Petzold)

  • Advanced Windows (Jeffrey Richter)

  • Design Patterns (Gamma, Helm, Johnson, Vlissides)

  • Essential COM (Don Box)

Hoorah for reading l.jpg
Hoorah For Reading! Formalities?

  • Effective COM (Box, Brown, Ewald, Sells)

  • Inside OLE (Kraig Brockschmidt)

  • Professional ATL COM Programming (Richard Grimes)

  • Microsoft Systems Journal (

  • Sean’s Web Page (

May the com be with you l.jpg

May the COM Be With You Formalities?

Thank You