Tartalom D Szoftvertechnológia előadás Történeti áttekintés Architektúra D vs CORBA 2 Történeti áttekintés 1987 Dynamic Data Exchange (DDE) Windows 2.0-ban Windows alkalmazások közötti adatcsere Ma is használatos (pl. vágólap) NetDDE NetBIOS protokol felett Windows XP-ig használatos (pl. Fekete Macska kártyajáték) A Windows Vista már nem tartalmazza Történeti áttekintés 1990 Object Linking and Embedding (OLE 1.0) Üzenetek helyett dokumentum-megosztás (Virtual Function Table VTBL) Windows 3.0 1993 Component Object Model () Folyamatok közötti ötti kommunikáció Dinamikus objektum-készítés Objektumok nyelv-független megvalósítása 1997-ig nem használták a elnevezést 3 4 1
Történeti áttekintés 1993 OLE 2.0 alapú implementáció Windows 3.1 1994 OLE Custom Controls OLE 2.0-t támogató tárolókba ágyazhatók 1996-tól ActiveX Hálózati megosztása a dokumentumoknak + Windows NT SP 4.0 Új esemény-modell Történeti áttekintés 1997 Distributed Component Object Model (D) 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 6 A D jellemzői Platform-független Minden olyan operációs rendszerben működik, amely nyújt D támogatást Windows, Unix, Macintosh (tipikusan MS) Nyelv-független C++, Delphi, stb. Átviteli mód-független TCP/IP, UDP. IPX/SPX, NetBIOS, AppleTalk A D lényegében A D a (Component Object Model) kiterjesztése elosztott alkalmazások fejlesztéséhez Válasz a CORBA-ra Továbblépési lehetőség e biztosítása az MS fejlesztésekben 7 8 2
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 Platform-specifikus Számos nyelven készülhet (C, C++, Delphi stb.) 9 Kliens (egy folyamaton belül) Hatékony Komponens 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ó 10 (folyamatok között) folytatás Kliens LPC LPC Komponens DCE / RPC - "Distributed Computing Environment / Remote Procedure Calls", (lehetővé teszi osztott rendszerek fejlesztését úgy, mintha egyazon gépen futna 11 minden) 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 "MSRPC", ami a Windows NT-vel jelent meg. 12 3
folytatás LPC Local Procedure Call de gyakran hívják Lightweight Procedure Call vagy Local Inter- Process 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. 13 folytatás 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. 14 folytatás A kommunikáció már port alapú, A működési mechanizmus már a jól ismert mód: Szerver portot nyit (NtCreatePort) Szerver figyel (NtListenPort) Kliens küld egy igényt (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 15 és kliens között (folyamatok között, /folytatás/) 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 tel kommunikál Stabil, egyszerű 16 4
(távolról) (D) Kliens Komponens Kliens Komponens OLE Registry SCM SCM Registry Hálózat D network protocol 17 SCM: Service Control Modul 18 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
Egy picit másként nézve Idézzük fel a jó öreg 7 rétegű OSI modellt a D 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 (folytatás ) 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 mellette és csak rá vár Szolgáltatás: erőforrás vagy adat 23 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(), CoGetInstanceFromFile(), CoGetInstanceFromStorage(), CoGetClassObject(), és CoGetClassObjectFromURL(). Az Mscoree.dll-t hívja meg a CCW ( Callable Wrapper) létrehozására a komponens részére. 24 6
Service Control Manager (SCM) A kliens és szerver közötti kapcsolatfelvételért felelős elem. A D az SCM-met csak az objektum létrehozására használja. Az implementáció ió a Rpcltscm.dll TransportLoad() metodusával történik meg. 25 Proxy 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 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 runtime Az operácios rendszer azon elemeit foglalja magában, amelyek a kliensszerver kommunikációt támogatják. A runtime úgy a folyamaton belüli, mint a folyamatok közötti kliens-szerver kapcsolat alapja. 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
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 D Network Protocol ( 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 D 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 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 tartalmazza. Egy tipikus tartalmazza 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 31 szerepel) 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
A D használata 1. Megosztandó objektum elkészítése Komponens Interfész(ek) Proxy 2. Proxy objektum és az interfészek eljuttatása a felhasználói oldalra 3. Proxy és interfészek regisztrációja Regisztrációs adatbázisban (registry) A innen olvassa ki az objektum elérhetőségét (a tároló szerver címét) 4. Az interfész lefordítása a használt nyelvre 5. Az objektum felhasználása a programunkban D vs CORBA D CORBA 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ó 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ó 33 34 Irodalom http://www.wikipedia.orgwikipedia 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 pring07/lectures/lec25.pdf data.uta.edu/~ramesh/cse5306/dcom parison.ppt 35 9