DCOM Áttekintés Miskolci Egyetem Általános Informatikai Tanszék DCOM /1
Mi a DCOM? DCOM: Distributed Component Object Model A Microsoft osztott objektum modellje Bináris együttmÿködési szabvány és annak implementációja (könyvtár formájában) API szintÿ szolgáltatások Nincs magas szintÿ nyelvi leképezés, de a Microsoft Visual J++ biztosítja a Java leképezést A DCE alapjaira épül DCOM (Áttekintés) DCOM /2
A DCOM objektum A DCOM objektum egy komponens, amely egy vagy több interface-t támogat Egy 128 bites CLSID-vel (Class ID) azonosított Nem objektum a klasszikus OO szemlélet szerint Nincs objektum azonosító Egy DCOM objektum nem tartja meg a státuszát az egyes kapcsolatok között. Egy kliens nem tud pontosan ugyanahhoz az objektumhoz újra csatlakozni DCOM (Áttekintés) DCOM /3
A DCOM interface Összetartozó függvények halmaza Elválasztja az interface-t az implementációtól A MIDL-t (Microsoft IDL): a DCE által definiált IDL objektum alapú kiegészítésekkel Alacsonyszintÿ, bináris API-t definiál egy pointer tábla (vtable) segítségével Egy interface-nek van szimbolikus neve, de futásid ben egy 128 bites IID (Interface Identifier) azonosítja DCOM (Áttekintés) DCOM /4
A DCOM interface (folyt( folyt.) Kliens Az objektum pointert használ Az interface fügvények táblája Tagfüggvények implementációi Belsÿ adatok DCOM objektum DCOM (Áttekintés) DCOM /5
A DCOM interface (folyt( folyt.) Minden DCOM objektumnak implementálnia kell az IUnknown interface-t A kliens ezt használhatja az objektum élettartamának szabályozására az objektum által támogatott interface-ek felfedezésére Interface A Interface B Interface C IUnknown DCOM Object DCOM (Áttekintés) DCOM /6
A DCOM szervers A szerver egy vagy több, CLSID-vel azonosított objektum osztályt tartalmazhat. A kliens kérhet egy adott CLSID-vel azonosított objektumot A szerver új objektumot készít a class factory segítségével Az új objektum els dleges (primary) interfaceének pointerét megkapja a kliens A szerver nem egy objektum, hanem egy EXE vagy egy DLL (vagy egy Java osztály). DCOM (Áttekintés) DCOM /7
A DCOM szervers struktúrája IUnknown Object Interfaces IClassFactory or IClassFactory2 DCOM Object Class Factory DCOM Server EXE or DLL DCOM (Áttekintés) DCOM /8
A DCOM szervers funkciói Implementál "class factory" interface-eket Minden CLSID-hez egyet Az osztály támogathatja a licenc kezelést (IClassFactory2) Regisztrálja az általa támogatott osztályokat Minden CLSID-hez egy registry bejegyzés, amely tartalmazza az implementáció EXE vagy DLL filejának specifikációját. DCOM (Áttekintés) DCOM /9
A DCOM szervers funkciói (foly( foly.) Initializálja a DCOM könyvtárat CoInitialize API hívás a DCOM könyvtár futásidejÿ szolgáltatásokat és API-t biztosít Ellen rzi, hogy a könyvtár kompatibilis verziójú CoBuildVersion API hívás Egy törlési (unloading) mechanizmust biztosít Az aktív kliensek nélküli objektumok terminálására Uninicializálja a DCOM könyvtárat Ha már egyetlen objektumnak sincs aktív kliense DCOM (Áttekintés) DCOM /10
Az architea rchitekturális megoldás Client Call_service Call a service on an interface * CreateInstance * Factory Create_Component Ask for a reference to an interface 1 * new Component Create_Component IUnknown QueryInterface <<extends>> Server Initialize/Uninitialize implements 1+ Extension Interfacei QueryInterface service_i DCOM (Áttekintés) DCOM /11
Local/Remote transzparencia Három fajta szerver in-process server (processzen belüli) A szerver és a kliens azonos címtérben (DLL) local server (helyi szerver) A szerver és a kliens különálló processzek ugyanazon a gépen (EXE) remote server (távoli szerver) A szerver és a kliens különálló proceszek, amelyek különböz gépeken futnak. DCOM (Áttekintés) DCOM /12
DCOM kliens/szerver Client Process Client Appl. In-process Object Local Object Proxy COM Remote Object Proxy DCOM Stub Stub COM LRPC RPC Local Server Process Remote Machine Remote Server Process Stub DCOM Local Object Local Server Remote Object Remote Server DCOM (Áttekintés) DCOM /13
DCOM objektum készítés forgatókönyve Client DCOM API IClassFactory2 1: CoGetClassObject (CLSID) 2: CoRegisterClassObject 3: CreateInstanceLic 5: Obtain Services 4: Create IMyInterface 7: Release 8: CoRevokeClassObject DCOM (Áttekintés) DCOM /14
DCOM objektum létrehozás 1. A kliens kér egy pointert a "class factory"-hoz Megadja a MyClass osztály CLSID-jét 2. A szerver példányosítja a "class factory"-t és regisztrálja azt 3. A kliens kéri a osztálynak egy példányát Az IClassFactory elkészíti a MyClass egy példányát A kliens megkap egy IID-t az IMyInterface-hez DCOM (Áttekintés) DCOM /15
DCOM objektum létrehozás (folyt.) 4. A "class factory" létrehozza az osztály egy példányát Visszaadja a kliensnek a kért interface pointerét 5. A kliens kommunikál az interface-szel. 6. A kliens felszabadítja az IMyInterface-t. 7. A kliens felszabadítja az IClassfaxtory2-t. 8. A szerver leáll. DCOM (Áttekintés) DCOM /16
Mi a COM+ COM+ = COM + szolgáltatások A COM+ a Win2000 integráns része COM+ szolgáltatások: Transaction Services (MTS) Security Services Syncronization Services Queued Components Event Service DCOM (Áttekintés) DCOM /17