COM/DCOM
Partof
Project
Presentation
(Concept Outline)
1
Component Object
Model (COM) and
DCOM
2
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
3
The Evolution of COM
Object Linking and
Embedding (OLE1)
Object Model (OLE2) (COM
standard)
ActiveX (Internet applications)
Distributed interNet
4
Applications (COM+)
5
COM Specification
Foundations
Reusable component
objects
Binary standard for
interoperability
True system object model
Provides distributed
capabilities
6
Object Interoperability
Stable versioning
Rapid object interaction
Location transparency
Language independence
7
True System Object
Model
Globally unique identifiers
(GUID)
Reusability and inheritance
Single programming model
Life-cycle encapsulation
Object-level security
8
Reusability Mechanisms
Containment/Delegation
Aggregation
9
10
11
Objects and Interfaces
12
13
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
14
Object Creation and
Access
IUnknown and QueryInterface
15
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.
16
Connectable Objects and
Multicasting
Connection point implementation
using Advise()
HRESULT Advise(
IUnknown *pUnk , //Pointer to the clients advise sink
DWORD *pdwCookie //Pointer to the connection point
identifier used by Unadvise );
17
18
DCOM Architecture
COM COM
Client Component
run-time run-time
Security Security
DCE RPC DCE RPC
Provider Provider
LPC LPC
COM COM
Client Component
run-time run-time
Security Security
DCE RPC DCE RPC
Provider Provider
Protocol Stack Protocol Stack
DCOM netw ork-
protocol
19
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
20
Batching
Custom Proxy
Client DCOM Database
Comp
Component
Snapshot
/ Cache
Database
Referral
Component
Component
Client 3. Return connection to client
Component
Component
1. Requests connection 2. Creates connection to "best"
component
Component
Component
Referral
Component
Component
21
Custom Marshalling
22
Scalability and
Performance
Client Duplicated Servers Dedicated Server
Business Rule
Client
Component
"Bottleneck"
Client Component
Client
Business Rule
Client Component
Dedicated Server
Client
Database
Client Component
Business Rule
Client Component
Client
Parameter Size 4 bytes 50 bytes
calls / sec ms / call calls / sec ms / call
"Pentium,, in-process 3,224,816 0.00031 3,277,973 0.00031
"Alpha," in-process 2,801,630 0.00036 2,834,269 0.00035
"Pentium," cross-process 2,377 0.42 2,023 0.49
"Alpha," cross-process 1,925 0.52 1634 0.61
"Alpha," to Pentium remote 376 2.7 306 3.27
23
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
24
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
25
The Future of COM
ActiveDirectory Services
What is DNA?
Implementation problems
Summary
28
COM+ Features
Transactions and transaction management
Databinding
Persistence
Load balancing
Security
In-memory database
Event infrastructure
Ubiquitous type description
Dynamic invocation
Garbage collection
Interception
29
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
30