Intro to COM
What is it and what can it do for me?
COM Defined
COM (Component Object Model) and DCOM (Distributed COM)are a set of binary and network
standards for the modeling of objects and their communications.
OK, What are Components?
• Components are big brother of Classes. Component = Object
• Interface = Function Set of that Object• Properties = Member Variables
– (all Properties are actually get & put calls)
• Methods = Functions
• BONUS: Components can have more than one interface.
What makes up a Component?
• Implementation object• Interface object(s)
IFooExIFoo Implementation
Object
IUnknown
Components are well-encapsulated objects
Identifiers• GUID (globally unique identifiers)
– are stored in 16-byte (128 bit) structures • CLSID (class identifier GUID) • IID (interface identifier GUID)
IUnknown• QueryInterface
– Returns a pointer to requested Interface
• AddRef– Increases the RefCount
• Release– Decreases the RefCount
Where do components live?
• In-Process servers (.dll)• Out-of-Process servers (.exe)• Remote servers (.exe)• ActiveX (.ocx)
Using Components
• Rapid Application Development• Seamless application updates• Build great apps without reinventing the wheel• Interface different systems with ease
• Examples: Serial port communications, Scanner image capture, Image archive systems, internet server interaction (CDDB)
What languages can I use?
• C++, Java, Visual Basic and VB Script (IIS)
• ActiveX technology, Use MS ATL (VC++)
• Component creation
• Component use in applications
Why should you learn COM?
• Saves tremendous time (after the initial learning curve)
• Use of existing objects• Object Reuse: C++ tried to address this issue,
but just made it easy to reuse source code. • So you can use DCOM.
Parallel Programming
• Three main types of applications:– CPU intensive
• graphics rendering• BFA
– Resource Specific• DCOM lets you do this seamlessly
– Highly connected• custom data, application structures • hybrid memory models
Cradle - Traveling Salesman
Traveling Salesman - 13 Ponts
0
50
100
150
200
250
300
350
400
450
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Number of MachinesPII 333MHz
Seco
nds
to c
ompl
ete
0.00%
20.00%
40.00%
60.00%
80.00%
100.00%
120.00%
140.00%
160.00%
180.00%
Perc
enta
ge o
f The
oret
ical
Theoretical
Actual
% Theoretical
6min 30 sec
16 sec
Traveling Salesman - 17 Points(43,680 times the calculation)
0
2000000
4000000
6000000
8000000
10000000
12000000
14000000
16000000
18000000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Number of MachinesPII 333MHz
Seco
nds
to c
ompl
ete
0.00%
10.00%
20.00%
30.00%
40.00%
50.00%
60.00%
70.00%
80.00%
90.00%
100.00%
Perc
enta
ge o
f The
oret
ical
Theoretical
Actual
% Theoretical
197 days
3.5 Days
Life 3D
Life3D face relationships
21
43
5 6
1
5
6 2
3
4
Symera Viewer
Clustering Scenarios
Tight Coupling Loose Coupling
Life3D Class Conversion
CMainWindow CFaceWindow
CCubeFace(interface)
CFace(implementation)
CSymObj CSymObjRef
Original classes
New classes
Symera base classes
CCubeFace
CSymObj
User Interface Distributed Object
Recommended Reading
• Dr. GUI articles on COM - a MUST READ• Essential COM by Don Box• Inside COM & Inside Distributed COM (MS Press)• ActiveX/COM Control Programming (WROX Press)
• For the complete history and theory, read:– Inside OLE (MS Press)