250 likes | 333 Views
CryptoChat projekt. Bognár Attila, Herényi Gergely, Tihanyi Sándor. Konzulens: Vajda István, BME-HIT Nagy András, Egus InfoSystems. A projekt háttere. CORBA Java, C++ Dokumentálás Verziókezelés. Mi is az a CORBA?. Elosztott számítógépes alkalmazások korábban csak UNIX világban
E N D
CryptoChat projekt Bognár Attila, Herényi Gergely, Tihanyi Sándor Konzulens: Vajda István, BME-HIT Nagy András, Egus InfoSystems
A projekt háttere • CORBA • Java, C++ • Dokumentálás • Verziókezelés
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
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
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
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ók felé • visszatérő érték visszaadása
CORBA szolgáltatások (3/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 • Trader Service: • az objektumok "tartalom" szerinti megnevezése
CORBA szolgáltatások (3/2) • 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 • Security Service: • Elosztott biztonsági szolgáltatások • Licensing Service: • licensz jogok
CORBA szolgáltatások (3/3) • Naming Service: • az objektumok azonosítása megnevezés alapján • Event Service: • az események megfelelő helyekre eljuttatása • Property Service: • objektumokhoz tulajdonságok rendelhetők • Any típusú • ezen tulajdonságok kezelése
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
ORBacus for C++ and Java • Megvalósított CORBA funkciók: • 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 • Dinamic Invocation Interface (DII), Dinamic Skeleton Interface(DSI) • DynAny típus • a fordítási időben ismeretlen objektumok kezelésére
ORBacus for C++ and Java • Kiegészítő elemek, alkalmazások az OOC-től: • SSL (biztonságos kommunikáció) • Trader (objektum kereső) • Names (adminisztrációs GUI)
IDL nyelv • Feladata: • objektum felületének leírása • nyelvfüggetlen módon • architektúra független módon • Részei • modul • interface C++ class • attribute, readonly attribute • egyszerű típusok, struktúrák • metódusok • in, out, inout argumentumokkal • oneway metódusok: asszinkron módon hívható • exception
obj.cpp generálódik obj.IDL obj.h obj_impl.cpp obj_skel.h miírjuk obj_impl.h obj_skel.cpp Server.cpp Client.cpp Interfész specifikáció leképzése
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
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 file-ba az ORB objektum segítségével • a BOA elindítása: a szerver működik és várja a kéréseket
Hello World: kliens oldal • Client: • ORB objektum példányosítása • a szerver által file-ba 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
Hello World: osztályhierarchia CORBA_Object CORBA_Object_skel Hello Hello_skel Client Server Hello_impl
Egyéb lehetőségek • Naming Service használata • Naming szerver funkció elindítása egy adott porton • Távoli objektumok megtalálása „név” szerint • Biztonságos kommunikáció • SSL (Secure Socket Layer) pluggable protocol használata
Más lehetőségek a CORBA használatára • MICO • http://www.mico.org • GNU CopyLeft • idl fordító csak C++-hoz • Java IDL • JDK 1.2 része • http://www.javasoft.com/products/jdk/idl/index.html
Fejlesztési környezet • Java™: JDK 1.2 • kliens oldal (bármilyen Java platform) • előnye, hátránya: • része a Java IDL • egyelőre nem támogatják a böngészők, csak az 1.1-es verziót • C++ • szerver oldal (UNIX, Linux) • egcs 1.1.2 (Experimental GNU Compiler)
Dokumentálás • LaTeX 2 • nem WYSIWYG • stabil, nyomdaképes kimenet • struktúrált szerkesztési lehetőség • platformfüggetlen, kis erőforrásigényű • magyar nyelv támogatás: • elválasztás • korrekt ékezetek (T1 encoding) • generált szövegek magyarul (pl. „Tartalomjegyzék”, „ábra”, „Függelék”)
Dokumentálás • LaTeX kimeneti formátum lehetőségei • DVI (Device Independent) • dvips: PS (Adobe PostScript) • latex2html: HTML formátumra konvertálás • latex2rtf: RTF formátumra konvertálás • ps2pdf: Adobe Portable Document Format • Rajzok • xfig: • vektorgrafika • exportálás EPS, PS, LaTeX, PNG, stb. formátumba
Verziókezelés • CVS (Concurrent Versions System) • file-csoportok konkurens kezelésére • csapatmunka támogatás • változások nyomon követhetősége • UNIX, Linux, Windows platformokra