You are on page 1of 29

Introduction to the Component Object Model

University of Illinois Champaign-Urbana CS491 Fall 1997 prepared by Patrick Flanigan 1

Overview
       

History of COM Introduction to the COM Specification DCOM Technical Overview Load balancing Microsoft Transaction Server Monikers DCOM vs CORBA Problems and the future of COM
2

The Evolution of COM

Object

Linking and Embedding (OLE1) Object Model (OLE2) (COM standard) ActiveX (Internet applications) Distributed interNet Applications (COM+)
3

COM Specification Foundations


 Reusable

component objects  Binary standard for interoperability  True system object model  Provides distributed capabilities

Object Interoperability
 Stable

versioning  Rapid object interaction  Location transparency  Language independence

True System Object Model


 Globally

unique identifiers (GUID)  Reusability and inheritance  Single programming model  Life-cycle encapsulation  Object-level security

Reusability Mechanisms

 Containment/Delegation  Aggregation

10

Objects and Interfaces

11

12

Interfaces


An interface is a named table of function pointers (methods) An interface is not a class An interface is not a COM component COM clients only interact with pointers to interfaces COM components can implement multiple interfaces Interfaces are strongly typed Interfaces are immutable
13

  

 

Object Creation and Access


IUnknown and QueryInterface

14

Object Creation API




CoCreateInstanceEx : creates a single uninitialized object associated with the given CLSID on a specified remote machine. CoCreateInstanceEx makes it possible to specify an array of structures, each pointing to an interface identifier (IID) on input, and, on return, containing (if available) a pointer to the requested interface and the return value of the QueryInterface call for that interface. This permits fewer round trips between machines. The CoCreateInstanceEx helper function encapsulates three calls: first, to CoGetClassObject to connect to the class object associated with the specified CLSID, specifying the machine location of the class; second, to IClassFactory::CreateInstance to create an uninitialized instance, and finally, to IClassFactory::Release, to release the class object.
15

Connectable Objects and Multicasting




Connection point implementation using Advise()

HRESULT Advise( IUnknown *pUnk , DWORD *pdwCookie ); //Pointer to the clients advise sink //Pointer to the connection point identifier used by Unadvise

16

17

DCOM Architecture
Sec rit Provi er DCE C Sec rit Provi er

Cli t COM r n-time COM r n-time

Client

DCE PC

DCE PC

Protocol St ck

Protocol St ck

DCOM net orkprotocol

Sec rit Provi er


Sec rit Provi er

Component

DCE PC

LPC

LPC

COM r n-time

COM r n-time

Component

18

Marshalling
  

Static balancing using a referral component Dynamic load balancing Marshalling (remoting): standard and custom
Use custom marshalling when: - a remote object itself is a proxy to some other object - the objects state is in shared memory (e.g. structured storage) - an objects state is immutable (e.g. Monikers) - batching remote calls into one to optimize performance
19

Batching
Client Snaps ot / Cac e

Referral
Component Component Client 3. Return connection to client Component Component Component Component Referral Component Component

1. Requests connection

2. Creates connection to "best" component


DCOM Comp Database Component Database

Custom Pro

 

20

Custom Marshalling

21

Scalability and Performance


Client Client Client Client Client Client Client Client Client Business Rule Component Database Component Business Rule Component

Duplicated Servers
Business Rule Component

Dedicated Server

"Bottleneck" Component

Dedicated Server

Parameter Size "Pentium ,, in-process "Alpha," in-process "Pentium," cross-process "Alpha," cross-process "Alpha," to Pentium remote

4 bytes
calls / sec ms / call

50 bytes
calls / sec ms / call

3,224,816 2,801,630 2,377 1,925 376

0.00031 0.00036 0.42 0.52 2.7

3,277,973 2,834,269 2,023 1634 306

0.00031 0.00035 0.49 0.61 3.27

22

Microsoft Transaction Server




 

MTS shelters developers from complex server issues such as concurrency, resource pooling, security, and context management MTS provides run-time services for components MTS ensures that transactions are atomic, consistent, have proper isolation and are durable MTS components are those that execute in the MTS run-time environment

23

Monikers


A moniker is a name for a specific object instance, that is, one particular combination of CLSID(GUID) and persistent data Monikers are themselves COM objects which support an interface called Imoniker Each moniker has its own persistent data; which includes all it needs to instantiate and initialize the single object instance which it identifies

24

DCOM vs CORBA
 Layer

comparisons

 Conclusions

and comments
25

Summary Table

26

The Future of COM


 Active

Directory Services  What is DNA?  Implementation problems  Summary

27

COM+ Features
          

Transactions and transaction management Databinding Persistence Load balancing Security In-memory database Event infrastructure Ubiquitous type description Dynamic invocation Garbage collection Interception

28

References


The Component Object Model Specification(Introduction) Draft Version 0.9, October 24, 1995 Microsoft Corporation and Digital Equipment Corporation Copyright 1992-95 Microsoft Corporation. http://www.microsoft.com/oledev/olecom/title.htm DCOM Technical Overview 1996 Microsoft Corporation. All rights reserved http://www.microsoft.com/activex/complus-f.htm DCOM and CORBA Side by Side, Step by Step, and Layer by Layer September 3, 1997 P. Emerald Chung Yennun Huang Shalini Yajnik Bell Laboratories, Lucent Technologies, Murray Hill, New Jersey Deron Liang Joanne C. Shih Chung-Yih Wang Institute of Information Science, Academia Sinica, Republic of China, Taiwan Yi-Min Wang, AT&T Labs, Research, Florham Park, New Jersey Distributed Component Object Model (DCOM) Binary Protocol Nat Brown and Charlie Kindel, Network Working Group Microsoft Corporation, May 1996, Updated: November 1996 http://premium.microsoft.com/msdn/library/techart/f365/f36c/f380/d390/s1305c.htm Inside OLE, 2nd Edition Kraig Brockschmidt Microsoft Press Redmond WA 1995 The COM Programmer's Cookbook (great implementation guide) Crispin Goswell Microsoft Office Product Unit, Spring 1995, Revised: September 13, 1995 http://premium.microsoft.com/msdn/library/techart/f365/f36c/f380/d390/s8b24.htm

29

You might also like