2011.03.23.
Tartalom DCOM
Szoftvertechnológia előadás
Történeti áttekintés Architektúra DCOM vs CORBA
2
Történeti áttekintés
1987 – Dynamic Data Exchange (DDE) { { {
Történeti áttekintés
Windows 2.0-ban Windows alkalmazások közötti adatcsere Ma is használatos (pl. vágólap)
{
{
NetDDE { {
{
1990 – Object Linking and Embedding (OLE 1.0)
NetBIOS protokol felett Windows XP-ig használatos (pl. Fekete Macska kártyajáték) A Windows Vista már nem tartalmazza
1993 – Component Object Model (COM) { { { {
3
Üzenetek helyett dokumentum-megosztás (Virtual Function Table –VTBL) Windows 3.0 Folyamatok Fol amatok közötti kö ötti kommunikáció komm nikáció Dinamikus objektum-készítés Objektumok nyelv-független megvalósítása 1997-ig nem használták a COM elnevezést 4
1
2011.03.23.
Történeti áttekintés
1993 – OLE 2.0 { {
COM alapú implementáció Windows 3.1
1994 – OLE Custom Controls { { {
Történeti áttekintés
{
OLE 2.0-t támogató tárolókba ágyazhatók 1996-tól ActiveX Hálózati megosztása g a dokumentumoknak
{ {
COM+ { {
1997 – Distributed Component Object Model (DCOM)
{
Windows NT SP 4.0 Új esemény-modell
{
Eredeti neve Network OLE Válasz a CORBA-ra RPC-t használ Alternatív implementációk is léteznek Más (nem Windows) rendszerek is támogatják
5
A DCOM jellemzői
{
Minden olyan operációs rendszerben működik, amely nyújt DCOM támogatást Windows, Unix, Macintosh (tipikusan MS)
Nyelv-független {
A DCOM lényegében …
Platform-független {
C++,, Delphi, stb. C
Átviteli mód-független {
6
A DCOM a COM (Component Object Model) kiterjesztése elosztott alkalmazások fejlesztéséhez Válasz a CORBA-ra Továbblépési o ább épés lehetőség e e őség b biztosítása os ása a az MS fejlesztésekben
TCP/IP, UDP. IPX/SPX, NetBIOS, AppleTalk 7
8
2
2011.03.23.
Felhasználás (egy folyamaton belül)
Az Objektum-model elemei
Interfész { { {
{
Komponens
Platform-független Nyelv-független Microsoft Interface Definition Language (IDL) Lefordítható a szükséges programozási nyelvre
Kliens
Platform-specifikus Számos nyelven készülhet (C, C++, Delphi stb.)
{ {
Komponens
Hatékony {
{ { {
a kliens közvetlenül hívja a komponens metódusait egyszerű közvetlen kapcsolat nincs szükség az ORB-re nincs hálózati kommunikáció
9
Felhasználás (folyamatok között) COM környezet
Kliens Security
DCE RPC
LPC
10
… folytatás …
COM környezet Security
Komponens DCE RPC
LPC
DCE / RPC - "Distributed Computing Environment / Remote Procedure Calls", (lehetővé teszi osztott rendszerek fejlesztését úgy, mintha egyazon gépen futna minden) 11
A DCE/RPC eredetileg a The Open Group fejlesztése Számos verzióban létezik, pl: samba A DCE/RPC Microsoft verziója az S C,a ami a Windows do s NT-vel e "MSRPC", jelent meg.
12
3
2011.03.23.
… folytatás …
LPC – „Local Local Procedure Call Call” de gyakran hívják „Lightweight Procedure Call” vagy „Local InterProcess Communication” néven is. Egy nem dokumentált „inter-process communication” mód, ami a Microsoft Windows NT kernel-ben jelent meg azonos gépen futó folyamatok közötti kommunikációra.
… folytatás …
13
14
Felhasználás (folyamatok között, /folytatás/)
… folytatás …
A kommunikáció már port alapú, A működési mechanizmus már a jól ismert mód: { { { {
{
Az LPC egyszerű szinkron request/reply mechanizmust használ, aminek a teljesítménye és biztonsága nem volt kielégítő A Vistától kezdve továbbfejlesztették, ALPC „Advanced Local Procedure Call” (nagyobb teljesítményű, biztonságosabb.
Szerver portot nyit (NtCreatePort) Szerver figyel (NtListenPort) Kli Kliens küld egy iigényt é t (NtC (NtConnectPort) tP t) Szerver elfogadja nyit két kommunikációs portot (szerver komm. Port, kliens komm. Port) Kommunikációs csatornák biztosítva a szerver és kliens között 15
folyamatok között már nincs lehetőség közvetlen elérésre Biztosítani kell egy teljesen transzparens és egyszerű elérési módot a kliens és a komponens is a COM kö környezettel l kkommunikál ikál Stabil, egyszerű 16
4
2011.03.23.
Felhasználás (távolról) COM környezet
Kliens Security
Felhasználás (DCOM) COM környezet
DCE RPC
Protocol Stack
Security
Komponens
COM környezet
Kliens
DCE RPC
Security OLE
Protocol Stack
COM környezet
DCE RPC
Security
Protocol Stack
Komponens DCE RPC
Protocol Stack
SCM
SCM
Registry
Registry DCOM network
Hálózat
protocol 17
18
SCM: Service Control Modul
Alapvetően hogyan működik a kapcsolat?
A kliens és a szerver oldali komponens közötti kapcsolat létrehozásának és menedzselésének folyamatát mutatja a következő ábra. Alapvetően a klienstől a szerver oldali komponens felé irányuló adat-áramlás szemléletű blokkdiagram megközelítés a legfontosabb elemek megadásával.
19
20
5
2011.03.23.
Egy picit másként nézve …
A DCOM lényeges elemei
Idézzük fel a „jó öreg” 7 rétegű OSI modellt a DCOM vizsgálatához
Alapvetően igaz, hogy a kapcsolat menedzselése független a komponens bonyolultságától, Csak az adat-áramlás intenzitását befolyásolja a komponens funkcionalításának mértéke, az alpvető aktivitásokat nem
21
22
A DCOM lényeges elemei (folytatás…)
A DCOM lényeges elemei (folytatás …) OLE32 DLL Egy objektum-példány létrehozásához szükséges metódusokat tartalmazza 5 metódus áll rendelkezésre egy „remote object” létrehozására: CoCreateInstanceEx(),
Client Alapvető tulajdonsága, hogy szolgáltatást igényel a funkciója végrehajtásához Az ő szemszögéből nézve a komponens ott van an „mellette” mellette” és csak „rá rá vár” ár” Szolgáltatás: erőforrás vagy adat
CoGetInstanceFromFile() CoGetInstanceFromStorage(), CoGetInstanceFromFile(), CoGetInstanceFromStorage() CoGetClassObject(), és CoGetClassObjectFromURL().
23
Az Mscoree.dll-t hívja meg a CCW (COM Callable Wrapper) létrehozására a komponens részére.
24
6
2011.03.23.
A DCOM lényeges elemei (folytatás …)
A DCOM lényeges elemei (folytatás …) Proxy y
Service Control Manager (SCM) A kliens és szerver közötti kapcsolatfelvételért felelős elem. A DCOM az SCM-met csak az objektum létrehozására használja. Az A implementáció i l tá ió a Rpcltscm.dll R lt dll TransportLoad() metodusával történik meg.
25
Biztosítja a szerver „jelenlétét” a kliens címtartományában. A Proxy-t az operációs rendszer hozza létre és menedzseli A Proxy lényegében egy táblázat, amely a COM runtime kéréseinek megfelelő interfészeket tartalmazza Segítségével a kliens úgy látja, mintha a szerver a saját gépen lenne A Windows pl. a CreateProxyFromTypeInfo() metodust aktivizálja az Rpcrt4.dll fájlból egy proxy létrehozására.26
A DCOM lényeges elemei (folytatás …)
A DCOM lényeges elemei (folytatás …)
COM runtime Az operácios rendszer azon elemeit foglalja magában, amelyek a kliensszerver kommunikációt támogatják. A COM runtime úgy a folyamaton belüli, mint a folyamatok közötti kliens-szerver kapcsolat alapja.
Security provider Az adatcserében résztvevő minden elem jogosultságának megfelelő kezelést biztosítja A kapcsolat létrehozása érdekében bejelentkezteti a klienst a szerverre Minden adatcserét résztvevő adatot titkosítással véd. 27
28
7
2011.03.23.
A DCOM lényeges elemei (folytatás …)
A DCOM lényeges elemei (folytatás …)
A Windows számos security provider-t támogat úgy lokális hálózat, mint internet szinten: {
{
{
{
NT LAN Manager (NTLM, standard Windows NT security protocol), Kerberos, Distributed Password Authentication (DPA, which is used by CompuServe and MSN), Secure Sockets Layer (SSL)/ Private Communications Technology (PCT), Third party Distributed Computing Environment (DCE) providers. 29
A DCOM lényeges elemei (folytatás …)
DCOM Network Protocol ((DCE RPC Network Protocol)) Egy protokollt (szabály rendszert), határoz meg, amely távoli szerveren elhelyezkedő objektumokkal történő kapcsolat létrehozását támogatja. Ez a blokk tartalmazza egy komponens protokoll implementálásához szükséges összes elemet, amelyek az applikáció szintjén szükségesek A Microsoft dokumentációkban ennek az elemnek többféle elnevezése is megtalálható, leginkább DCOM wire protocol néven hivatkoznak rá. Alacsony szintű adat transzfer protokoll, ami a fejlesztő 30 számára nem látható már (nem is kell törődni vele).
A DCOM lényeges elemei (folytatás …)
Protocol Stack A Protocol Stack biztosítja a hálózat különböző szintjein az alacsony szintű hálózati kezelést. A hálózati kommunikáció többféle protokollt igényel, amelyeket a Protocol Stack tartalmazza. Egy gy tipikus p Protocol Stack tartalmazza p pl: TCP/IP,, Winsock driver, User Datagram Protocol (UDP), Internet Protocol (IP), Ethernet driver. Az Ethernet Network Interface Card (NIC) a fizikai hálózati kapcsolatért felelős. (az ábrán nem szerepel) 31
Stub A kliens objektumot reprezentálja a szerver címterében. Feladata hasonló, mint a kliens oldalon a Proxy-é (segítségével a szerver egy lokális klienssel kommunikál) A Windows a CreateStubFromTypeInfo() metódust használja az Rpcrt4.dll fájlból egy stub létrehozására. 32
8
2011.03.23.
A DCOM használata Megosztandó g objektum j elkészítése
1.
3.
5.
Komponens Interfész(ek) Proxy
DCOM {
{
Proxy objektum és az interfészek eljuttatása a felhasználói oldalra Proxy és interfészek regisztrációja
2.
4.
DCOM vs CORBA
{
Regisztrációs adatbázisban (registry) A COM környezet innen olvassa ki az objektum elérhetőségét (a tároló szerver címét)
Az interfész lefordítása a használt nyelvre Az objektum felhasználása a programunkban
{
33
Egy objektumnak több interfésze is lehet Az interfészeket IDL nyelven írja le A kliens egy interfészére mutató referencián keresztül használja az objektumot RPC alapú kliensszerver kommunikáció
CORBA {
{
{
{
Többszörös öröklődés az interfészek között Az interfészeket IDL nyelven írja le A kliens a klienscsonkon keresztül használja az objektumot RPC alapú kliensszerver kommunikáció 34
Irodalom
http://www.wikipedia.org http://www wikipedia org http://msdn2.microsoft.com/enus/library/ms809340.aspx http://www.infosys.tuwien.ac.at/Staff/tg/Teac hing/UniZH/CBSE/slides/lecture11.pdf http://lass.cs.umass.edu/~shenoy/courses/s p y pring07/lectures/Lec25.pdf data.uta.edu/~ramesh/cse5306/DCOMCom parison.ppt 35
9