1 / 46

Elosztott objektumok használata

Elosztott objektumok használata. Tihanyi Sándor 1999. december. Tartalom. CORBA szabvány CORBA részei komponensek Objektumok elérése Naming Service használata CORBA termékek, példák. Mi is az a CORBA?. Elosztott számítógépes alkalmazások korábban csak UNIX világban

deanne
Download Presentation

Elosztott objektumok használata

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Elosztott objektumok használata Tihanyi Sándor 1999. december

  2. Tartalom • CORBA szabvány • CORBA részei • komponensek • Objektumok elérése • Naming Service használata • CORBA termékek, példák Tihanyi Sándor

  3. Mi is az a CORBA? • Elosztott számítógépes alkalmazások • korábban csak UNIX világban • RPC, socket programozás (rugalmatlan, nehezen átlátható kód) • Új gondolat: általános keretrendszer • szabványos • objektum-orientált • rendszerfüggetlen • programozási nyelvtől független Tihanyi Sándor

  4. Történeti áttekintés • Object Management Group (OMG) • keretrendszer kidolgozása (1989-től) • http://www.omg.org • Object Management Architecture (OMA) • az OMG által szabványosított architektúra • legalacsonyabb szintje a CORBA • Common Object Request Broker Architechture (CORBA) • 2.0-ás változat 1995-ben • 3.0-s változat folyamatban Tihanyi Sándor

  5. Az általános keretrendszer • Szabványos: • Object Management Architecture az OMG-től • Objektum-orientált • CORBA-objektumok megfeleltethetők a nyelvi objektumoknak • Rendszerfüggetlen: • a szabvány megfogalmazza a megkívánt funkciókat • Programozási nyelvtől független: • az IDL (Interface Definition Language) biztosítja Tihanyi Sándor

  6. Object Management Architecture • CORBA-objektumok és alkalmazás-objektumok • Object Request Brokers (ORBs) • csatorna az objektumok eléréséhez • CORBAservices • szolgáltatások az objektumok kezeléséhez • CORBAfacilities • szolgáltatások az alkalmazásnak Tihanyi Sándor

  7. CORBA 2.0 ORB struktúra Client Object Impl. Static IDL Skeleton Dynamic Skeleton Interface Client IDL Stub ORB Interface ORB Interface Interface Repository Dynamic Invocation Interface Object Adapter Implem. Repository ORB Core Tihanyi Sándor

  8. Object Adapter • CORBA 2.0-ban a Basic Object Adaptert (BOA) definiálták • alap funkcionalitás • nagy szabadságfok a gyártóknak • ez a hordozhatóságot és az együttműködés rovására megy • CORBA 3.0-ban: Portable Object Adapter • nem a BOA javítása, hanem teljesen új • még kidolgozás alatt Tihanyi Sándor

  9. CORBA komponensek • Kliens oldal (objektum felhasználó rész) • Szerver oldal (objektumot implementáló rész) • Más összefüggésben lehet kliens is • Bármelyik komponens bármilyen nyelven implementálható • Transzparens hálózati kommunikáció az ORB-n keresztül Tihanyi Sándor

  10. CORBA komponensek Tihanyi Sándor

  11. A rendszer működése • Kliens hozzáférése az objektumokhoz • proxyn keresztül • Proxy feladata • kérés továbbítása a szerver oldali objektum- implementáció felé • visszatérő érték visszaadása Tihanyi Sándor

  12. Távoli objektum használata 1. gép 2. gép Szerver Függvényhívás Függvényhívás továbbítása Valódi Kliens Proxy objektum Visszatérő érték visszaadása Visszatérő érték visszaadása Tihanyi Sándor

  13. Kapcsolat az ORB-k között Client Object Client Object Stub Skel Stub Skel ORB 1 ORB 2 Inter-ORB protocols Tihanyi Sándor

  14. CORBA 2.0 Inter-ORB architektúra Objektum kérés szemantikája CORBA IDL General Inter-ORB Protocol (GIOP) Enviroment Specific Inter-ORB Protocols (ESIOP) DCE/ESIOP Átviteli és üzenet szintaktika Internet Inter-ORB Protocol (IIOP) TCP/IP felett mások OSI, IPX/SPX DCE RPC TCP/IP felett DCE RCP OSI felett ... ... Transzport Internet CORBA 2.0-ban szerepel Opcionális Tihanyi Sándor

  15. Statikus hozzárendelés • A kliens az adott referencia alapján elkészíti a proxyt • A szerver oldalon is statikus az implementáció és az ORB kapcsolata Client Object Stub Skel ORB Tihanyi Sándor

  16. Dinamikus hozzárendelés • A felhasználó beilleszthet a kliens-programjába újabb elemeket ~ www-böngésző plugin • keresés pl. objektum böngésző segítségével • Szerver oldalon: • implementáció példányosítása igény szerint Tihanyi Sándor

  17. CORBAservices (5/1) • Lifecycle Service: • objektumok létrehozása, törlése, másolása, mozgatása • Relationship Service: • objektumok közti kapcsolatokat írja le • típusok, szerepek, a kapcsolat számossága, szemantikája • Persistent Object Service, Externalization Service: • interfész, protokoll definíció az objektumok elmentéséhez és visszaállításához Tihanyi Sándor

  18. CORBAservices (5/2) • Event Service: • az események megfelelő helyekre eljuttatása • Object Properties Service: • objektumokhoz tulajdonságok rendelhetők, ezek kezelése (Any típus) • Security Service: • Elosztott biztonsági szolgáltatások • Licensing Service: • licensz jogok kezelése Tihanyi Sándor

  19. CORBAservices (5/3) • Object Transaction Service: • műveletek csoportosítása, commit-rollback protokoll • Concurency Control Service: • több felhasználó esetén az adatbázisokban fellépő konkurencia kezelése • Object Query Service: • Objektumok, OO és relációs adatbázisok összekapcsolhatóak egyetlen adatbázisba, ezek lekérdezése Tihanyi Sándor

  20. CORBAservices (5/4) • Naming Service: • az objektumok azonosítása megnevezés alapján • relatív név az ún. Naming Context-hez képest • összetett név, a részek: • id: megnevezés • kind: fajta • pl.: object_code, c_source, executable, ... • nem kell névkonvenció (pl. *.o = UNIX obj. file) • csak névOR összerendelés • API szinten • bind, resolve, ... • név konvertálás általános formátumra (pl. Space = %20) Tihanyi Sándor

  21. CORBAservices (5/5) • Trader Service: • az objektumok „tartalom” szerinti megkeresése • néven kívül más tulajdonságok is kereshetők • bármiOR összerendelés • „yellow pages” • alkalmazási mód miatt nem API, hanem alkalmazás szinten implementált • Objektum böngésző Tihanyi Sándor

  22. CORBAfacilities • Vertical CORBAfacilities • üzleti szegmens specifikus alkalmazások támogatása • meglévő üzleti szabványok átültetése • egészségügy, pénzügy, telekommunikáció, ... ~ elemzési minták • Horizontal CORBAfacilities • Általános funkciók • felhasználói interfész, menedzsment (info, rendszer, folyamat), ... • első: Compound Document Tihanyi Sándor

  23. ORB megvalósítások • Kötelező részek a szabványból: • CORBA Core • CORBA objektum modell • CORBA architechtúra • OMG IDL szintaktika és szemantika értelmezése • CORBA Interoperability • Internet-Inter-ORB-Protocol (IIOP - TCP/IP felett) Tihanyi Sándor

  24. ORB megvalósítások • ORB komponensek közül: • Dynamic Invocation Interface (DII) • Dynamics Skeleton Interface (DSI) • Interface Repository (IR) • az ORB interfész • Basic Object Adapter • IDL fordító legalább egy nyelvre • C, C++, Smalltalk, Java, Ada, COBOL • lehet több nyelv támogatása Tihanyi Sándor

  25. További lehetőségek • ORB-k közötti kapcsolat • IIOP mellett mások (pl. DCE ESIOP) • CORBAservice-k • Főleg a Lifecycle, Events, Naming és a Persistent Object Service-t valósítják meg • Pl. Transaction and Concurrency csak speciális gyártók CORBA-jában • CORBAfacility-k • Pl. Compound Document Management and Display Tihanyi Sándor

  26. ORBacus for C++ and Java • Object-Oriented Concepts, Inc. • http://www.ooc.com/ob • IDL fordító • C++ és Java nyelvre • HTML és RTF formátumra dokumentáláshoz • Windows 95/98/NT, UNIX, Linux rendszerekre • Egy- és többszálas programozás támogatása • többféle konkurrencia modell használható • Interface Repository • segítségével könnyen lehet IDL fordítókat írni más nyelvekre Tihanyi Sándor

  27. ORBacus for C++ and Java • Megvalósított CORBAservice-ek: • Naming, Event, Property • Saját kommunikációs protokoll beillesztése • Open Communications Interface (OCI) • pluggable protocols: • IIOP (TCP/IP), SSLIOP, ATM, ISDN, multicast UDP/IP • Dinamikus programozás • Dynamic Invocation Interface (DII), Dynamic Skeleton Interface(DSI) • DynAny típus • a fordítási időben ismeretlen objektumok kezelésére Tihanyi Sándor

  28. ORBacus for C++ and Java • Kiegészítő elemek, alkalmazások az OOC-től: • SSL • biztonságos kommunikáció • egy OCI pluginként írták meg • Trader • objektum kereső • Trader Service applikáció megvalósítás • Names • adminisztrációs GUI • applikációs segédeszköz a Naming Service használatához Tihanyi Sándor

  29. Trader screenshot Tihanyi Sándor

  30. ORBacus konkurrencia modellek • Egyszálas • blokkoló • reaktiválódó • Többszálas • Thread-per-Client Server • Thread-per-Request Server • Thread Pool Server Tihanyi Sándor

  31. Az IDL nyelv • Interface Definition Language • Feladata: • objektum felületének szabványos leírása • nyelvfüggetlen módon • architektúra független módon • pl. byte-sorrend, ábrázolás • objektum azonosítható az IDL leírása alapján • ORB részére • Object Browser és debugger funkciókhoz Tihanyi Sándor

  32. Az IDL nyelv • Részei • modul • több interfész összefogása • interface  C++ class • attribute, readonly attribute • egyszerű típusok, struktúrák • metódusok • in, out, inout argumentumokkal • oneway metódusok: aszinkron módon hívható • exception • kivétel-típus Tihanyi Sándor

  33. obj.cpp obj.IDL obj.h obj_impl.cpp obj_skel.h obj_impl.h obj_skel.cpp Server.cpp Client.cpp Interfész specifikáció leképzése generálódik mi írjuk Tihanyi Sándor

  34. Példa alkalmazás: Hello World! • IDL file: • //IDL • interface Hello • { • void hello(); • }; Ebből az idl fordító a következőket generálja: hello.h, hello.cpp, hello_skel.h,hello_skel.cpp Tihanyi Sándor

  35. Hello World: szerver oldal • Hello_impl.h, Hello_impl.cpp • a Hello_skel osztályból örököltetjük az objektumot • itt írjuk meg a tényleges funkciókat • Server.cpp • ORB és BOA objektumok példányosítása • Hello_impl objektum példányosítása • objektumreferencia kiíratása fájlba az ORB objektum segítségével • a BOA elindítása: a szerver működik és várja a kéréseket Tihanyi Sándor

  36. Hello World: kliens oldal • Client: • ORB objektum példányosítása • a szerver által fájlba kiírt objektum-referencia beolvasása, majd CORBA objektummá konvertálása • az előbb kapott CORBA objektumból a hello objektum elkészítése (a proxy objektum) • ezek után az objektum úgy használható, mint ha a sajátunk volna • pl. hello->hello(); hívás Tihanyi Sándor

  37. Hello World: osztályhierarchia CORBA_Object CORBA_Object_skel Hello Hello_skel Client Server Hello_impl Tihanyi Sándor

  38. Objektumok elérése • Objektum referencia • hostname, port number, object key • stringgé alakítható és vissza • Referencia felhasználása • referencia-string beolvasás fájlból • Hello World! példában is ez szerepelt • szükséges a fájl megosztása • URL-en keresztül • pl. http://www.corbaserver/object.ref Tihanyi Sándor

  39. Objektumok elérése • Applet paraméterként • referencia-string a HTML kódba • a paraméter feldolgozása • felhasználás mint a fájlból olvasáskor • Névszerverhez kapcsolódás • Általános ORB: • get_inet_object/3 függvénnyel • Initial Services beolvasása (parancssori megadás) • ORBacus specifikus: • iiop://hostname:port/object-name Tihanyi Sándor

  40. További objektumok elérése • Factory-mintával • Így csak a B-t kell elérni az előbbi módszerekkel • //IDL • interface A • { • }; • interface B • { • A getA(); • }; Tihanyi Sándor

  41. Naming Service használata ORBacus-szal • Naming szerver funkció elindítása egy adott porton • nameserv -i -OAport 10000 > nameserv.ref • java com.ooc.CosNaming.Server -i Oaport 10000\ > nameserv.ref • NT Registry: service regisztrálás • ntnameservice -i • ntnameservice -u (leállítás) Tihanyi Sándor

  42. Naming Service használataORBacus-szal • Kliens kapcsolódása a Naming szerverhez • A default NameContext beállítása • java MyClient -ORBservice NameService `cat\ nameserv.ref` • java MyClient -ORBconfig orb.cfg • az orb.cfg tartalmazza a beállításokat • Műveletek a Naming szerverrel • bind, bind_context, new_context, bind_new_context, unbind • resolve, list (iterator) Tihanyi Sándor

  43. Más lehetőségek a CORBA használatára • SUN: • Java IDL • JDK 1.2 része • Csak alapszintű CORBA: • jidl/idltojava • BOA, DII, DSI, Naming Service • tnameserv -ORBInitialPort=1050 • Más gyártók javasolják a csomagok lecserélését a sajátjukra a bővebb funkciók használata érdekében Tihanyi Sándor

  44. Más lehetőségek a CORBA használatára • IONA Technologies • Orbix (C++), OrbixWeb (JAVA) • GNU • MICO • ORBit • ORBit-perl, ORBit-C++, ORBit-Eiffel • GNU Ada CORBA Kit (GNACK) • Torb: Tcl/CORBA interfész Tihanyi Sándor

  45. Címjegyzék • Siegel, Jon: CORBA Fundamentals and Programming, 1996 • Orfall, Robert & Harkey, Dan: Client/Server Programming with JAVA and CORBA, 1998 • OMG: http://www.omg.org Tihanyi Sándor

  46. Termékek • http://www.ooc.com/ob • http://java.sun.com/products/jdk/idl • http://www.iona.com/orbix • http://www.iona.com/orbixweb • http://www.labs.redhat.com/orbit • http://www.mico.org Tihanyi Sándor

More Related