COM, DCOM
COM, DCOM
and
and
Software Components
Software Components
Nat Brown
Nat Brown
COM Program Management
COM Program Management
Microsoft Corporation
Microsoft Corporation
Agenda
Agenda
What are COM and DCOM?
What are COM and DCOM?
What’s right with COM
What’s right with COM
What’s wrong with CORBA / IIOP
What’s wrong with CORBA / IIOP
Interesting COM Research Topics
Interesting COM Research Topics
The COM Programming
The COM Programming
Model
Model
A scalable programming model
A scalable programming model
Client
Client
Component
Component
In the same
In the same
process
process
Fast, direct
Fast, direct
function calls
function calls
Client
Client
COM
COM
Component
Component
Client Process
Client Process Server ProcessServer Process
On the same
On the same
machine
machine
Fast, secure IPC
Fast, secure IPC
Across machines
Across machines
Secure, reliable
Secure, reliable
and flexible
and flexible
DCE-RPC based
DCE-RPC based
DCOM
DCOM
protocol
protocol
COM
COM
DCE
RPC
Client
Client
Server Machine
Server Machine
Client Machine
Client Machine
COM
Client Machine
Server Machine
DCOM Architecture
DCOM Architecture
Flexible and extensible
Flexible and extensible
Pluggable Transports
Pluggable Transports
TCP, UDP
TCP, UDP
IPX, SPX
IPX, SPX
HTTP
HTTP
D
C
O
M
Msg-Q
Msg-Q
Clients
Clients
D
C
O
M
Server Machine
Client Machine
DCOM Architecture
DCOM Architecture
Flexible and extensible
Flexible and extensible
Pluggable Security
Pluggable Security
TCP, UDP
TCP, UDP
IPX, SPX
IPX, SPX
HTTP
HTTP
D
C
O
M
Falcon
Falcon
Clients
Clients
NT4 Security
SSL/
Certificates
NT Kerberos
DCE Security
D
D
C
C
O
O
M
M
DCOM Architecture
DCOM Architecture
Efficient and scalable
Efficient and scalable
Server
Server
Client
Client
Client
Client
Multiplexing
Multiplexing
- Single Port per-protocol, per
- Single Port per-protocol, per
server process, regardless of # of objects
server process, regardless of # of objects
Scalable
Scalable
- Connection-Less Protocols like
- Connection-Less Protocols like
UDP Preferred
UDP Preferred
Established Connection-Oriented (TCP)
Established Connection-Oriented (TCP)
Sessions
Server Machine
Server Machine
Client Machine
Client Machine
DCOM Architecture
DCOM Architecture
Efficient and scalable
Efficient and scalable
Server
Server
Client #1
Client #1
Client #2
Client #2
Low Bandwidth
Low Bandwidth
Header is 28 bytes over DCE-RPC
Header is 28 bytes over DCE-RPC
Keep-Alive Messages bundled for all connections
Keep-Alive Messages bundled for all connections
between
between
Machines
Machines
Keep-Alive Traffic
Keep-Alive Traffic
for all connections
for all connections
Lo
gi
ca
l “
Co
nn
ec
tio
ns
”
Lo
gi
ca
l “
Co
nn
ec
tio
ns
”
or
“S
es
si
on
s”
or
“S
es
si
What’s Right with COM
What’s Right with COM
Focus is on binary object standard
Focus is on binary object standard
and scalable/fine-grained
and scalable/fine-grained
component re-use
component re-use
Concreteness and depth of
Concreteness and depth of
definition, for example security,
definition, for example security,
lifetime management, activation,
lifetime management, activation,
installation & deployment
installation & deployment
What’s Wrong with
What’s Wrong with
CORBA/IIOP
CORBA/IIOP
Focus is on cross-node or network
Focus is on cross-node or network
reuse/integration
reuse/integration
–
in practice useful for vertical solutions, not
in practice useful for vertical solutions, not
horizontal reuse/integration
horizontal reuse/integration
Incomplete specification
Incomplete specification
–
marshaling format of certain types of data-
marshaling format of certain types of
data-structures
structures
–
implications of lack of services (e.g. Naming,
implications of lack of services (e.g. Naming,
Events, Lifetime management)
Events, Lifetime management)
COM Research Areas
COM Research Areas
High-Level Language Integration
High-Level Language Integration
Application Management
Application Management
Ease-of-use
Ease-of-use
Language Integration
Language Integration
Re-Use Mechanisms
Re-Use Mechanisms
–
Inheritance, Containment, Delegation, Aggregation
Inheritance, Containment, Delegation, Aggregation
–
“
“
Interception”
Interception”
Constructs of modern OO languages
Constructs of modern OO languages
–
classes, fields, exceptions
classes, fields, exceptions
Constructs of modern 4GL/RAD tools
Constructs of modern 4GL/RAD tools
–
data-binding
data-binding
–
auto-persistence, -everything
auto-persistence, -everything
Application Management
Application Management
Distribution of Code + Data +
Distribution of Code + Data +
Configuration Information
Configuration Information
Security and Security Delegation
Security and Security Delegation
–
Security “roles” and re-use of
Security “roles” and re-use of
components
components
Performance Monitoring
Performance Monitoring
Ease-of-Use
Ease-of-Use
What’s the next programming
What’s the next programming
model layer to vastly improve
model layer to vastly improve
ease-of-use?
ease-of-use?
–
Transactions?
Transactions?
Ease-of-Use: First Steps
Ease-of-Use: First Steps
Clients
Clients
Server
Server
Network
Network
Thread Pool
Thread Pool
Queue
Queue
Connections
Connections
Context
Context
Security
Security
Shared Data
Shared Data
Receiver
Receiver
Synchronization
Synchronization
Service Logic
Service Logic
C
o
n
fig
u
ra
tio
n
C
o
n
fig
u
ra
tio
n
M
a
n
ag
em
e
n
t
M
a
n
ag
em
e
n
t
Server
Server
Thread Pool
Thread Pool
Queue
Queue
Connections
Connections
Context
Context
Security
Security
Shared Data
Shared Data
Receiver
Receiver
Synchronization
Synchronization
Service Logic
Service Logic
C
o
n
fig
u
ra
tio
n
C
o
n
fig
u
ra
tio
n
M
a
n
ag
em
e
n
t
M
a
n
ag
em
e
n
t
MTS = easier
Reference Material
Reference Material
[Box1 97][Box1 97]
D. Box, Q&A ActiveX/COM,
D. Box, Q&A ActiveX/COM, Microsoft Systems JournalMicrosoft Systems Journal, March 1997, pp. 93-105., March 1997, pp. 93-105. [Box2 97][Box2 97]
D. Box, Q&A ActiveX/COM,
D. Box, Q&A ActiveX/COM, Microsoft Systems JournalMicrosoft Systems Journal, July 1997, pp. 93-108., July 1997, pp. 93-108. [Brockschmidt 93][Brockschmidt 93]
K. Brockschmidt,
K. Brockschmidt, Inside OLE 2Inside OLE 2, Redmond, Washington: Microsoft Press, 1993., Redmond, Washington: Microsoft Press, 1993. [Brown 96][Brown 96]
N. Brown, C. Kindel, Distributed Component Object Model Protocol -- DCOM/1.0
N. Brown, C. Kindel, Distributed Component Object Model Protocol -- DCOM/1.0
http://ds1.internic.net/internet-drafts/draft-brown-dcom-v1-spec-01.txt
http://ds1.internic.net/internet-drafts/draft-brown-dcom-v1-spec-01.txt
[Chappell 96][Chappell 96] D. Chappell,
D. Chappell, Understanding ActiveX and OLEUnderstanding ActiveX and OLE, Redmond, Washington: Microsoft Press, 1996., Redmond, Washington: Microsoft Press, 1996. [COM 95] The Component Object Model Specification, [COM 95] The Component Object Model Specification,
http://www.microsoft.com/oledev/olecom/title.htm
http://www.microsoft.com/oledev/olecom/title.htm
[DCE 95][DCE 95]
AES/Distributed Computing - Remote Procedure Call, Revision B, Open Software Foundation,
AES/Distributed Computing - Remote Procedure Call, Revision B, Open Software Foundation,
http://www.osf.org/mall/dce/free_dce.htm
http://www.osf.org/mall/dce/free_dce.htm
[Rogerson 96][Rogerson 96] D. Rogerson,
D. Rogerson, Inside COMInside COM, Redmond, Washington: Microsoft Press, 1996., Redmond, Washington: Microsoft Press, 1996. [Wang 97][Wang 97]
Y. M. Wang, COM/DCOM Resources,
Y. M. Wang, COM/DCOM Resources,
http://www.research.att.com/~ymwang/resources/resources.htm