Download presentation
Presentation is loading. Please wait.
Published byBrook Dixon Modified over 9 years ago
1
Intro to COM What is it and how do I use it?
2
Objectives Teach the fundamentals of COM. Understand the reason for using it. Learn to make a simple in-process server.
3
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.
4
What does it do? It allows for “Plug and Play” software. Helps to create distributed systems transparently.
5
Why should you learn COM? Flexibility: can be used from and written in all popular languages. 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.
6
Why should you learn COM? Rapid Application Development Seamless application updates Build great apps without reinventing the wheel Interface different systems with ease
7
Component Hierarchy Components are made up of objects Objects are made up of interfaces Interfaces are made up of member functions
8
What makes an object? Objects support object-oriented principles: 4encapsulation 4polymorphism 4inheritance? Conceptual in nature Known only through interfaces ObjectInterfaces
9
What makes an object? Clients can interact with any object without knowing which object with which it interacts Object 1 Object 2 Client
10
The Specifics
11
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
12
Interfaces An interface is a set of similar methods –Analogous to a C++ class Binary level, not source code level Indentified by an Interface Identifier (IID) interface ISquirrel : IUnknown { HRESULT EatNuts(); HRESULT ClimbTree(); HRESULT RunAway(); };
13
IUnknown Base interface Polymorhic to all other interfaces Implements reference counting All other interfaces are retrieved through IUnknown interface IUnknown { ULONG AddRef(); ULONG Release(); HRESULT QueryInterface(REFIID iid, void **ppObject); };
14
Accessing Objects CoCreateInstance Based on a class ID (CLSID) Specify requested interface Object can be anywhere STDAPI CoCreateInstance( REFCLSID rlcsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID *ppv );
15
Where do components live? In-Process servers (.dll) Out-of-Process servers (.exe) Remote servers (.exe) ActiveX (.ocx)
16
Uses ActiveX DCOM DirectX Automation OLE etc.
17
Recommended Reading The definitive beginner’s guide to COM: –Inside COM by Dale Rogerson A great online tutorial that summarizes much of Inside COM: –http://beta.develop.com/comtutorial For the complete history and theory: –Inside OLE by Kraig Brockschmidt
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.