Common Object Request Broker Architecture FJFI ČVUT 9. 12. 2010
Osnova 1 2 3 4 5
Standard umožňující propojení aplikací psaných v různých jazycích a běžících na různých strojích a architekturách. Definuje způsob sdílení objektů více aplikacemi. Podporuje řadu programovacích jazyků Ada, C, C++, Lisp, Ruby, Smalltalk, Java, COBOL, PL/I a Python standardně + Perl, Visual Basic, Erlang a Tcl. Není podporován C#. Spravován konsorciem OMG (Object Management Group).
1.0 říjen 1991 Object model, (Interface Definition Language), Interface Repository, sada API... podpora pro jazyk C 1.1 únor 1992 První publikovaná verze 2.0 srpen 1996 Objevuje se DSI (Dynamic Skeleton Interface), GIOP a IIOP, podpora zabezpečení 2.4 říjen 2000 Specifikace Minimum a Real-time 3.0 červenec 2002 3.1 leden 2008 aktuální verze
Princip
General InterORB Protocol Abstraktní protokol zajišt ující komunikaci mezi ORBy. Konkrétní implementace: Internet InterORB Protocol (IIOP) zprávy předávány pomocí TCP/IP protokolu, SSL InterORB Protocol (SSLIOP) IIOP + šifrování, HyperText InterORB Protocol (HTIOP) využívá HTTP pro překonání proxy a firewallů.
General InterORB Protocol Typy zpráv: Požadavek (Request) vyvolá metodu vzdáleného objektu. Odpověd (Reply) vrací výsledek. Zrušení požadavku (CancelRequest). Vyhledání požadavku (LocateRequest) ověření, zda server zná požadovaný objekt a případně indikace kam se má klient obrátit. Odpověd na vyhlednání požadavku (LocateReply). Ukončení spojení (CloseConnection). Chyba (MessageError). Fragment pokračování dlouhé zprávy.
Interface Definition Language Jazyk, kterým se definuje rozhraní distrubuovaného objektu. Základní klíčová slova: module seskupuje rozhraní a proměnné, interface definuje rozhraní. Syntaxe podobná C++, každý příkaz ukončen středníkem. Každý parametr metody musí mít definován typ: in vstupní parametr metody, out výstupní parametr, inout in i out. Pomocí kódu se generuje Stub, Skeleton a Object Reference kód.
Interface Definition Language Příklad module DistCalc { interface Calc { long secti(in long a,in long b); long nasob(in long a,in long b); oneway void shutdown(); }; };
Interoperable Object Reference Jedinečný identifikátor objektu. Obvykle kóduje IP adresu serveru, port, řetězec s definicí třídy vzdáleného objektu a identifikátor objektu. Odkaz na objekt lze získat: pomocí Name Sevice vyhledání objektu podle jména, jako URI řetězec CorbaLoc corbaloc::160.45.110.41:38693/standardns/ Name-/_root, předáním jako parametru metody. Portable Interceptors zprostředkovávají vytváření referencí, místní volání a zpracování vzdálených volání.
Portable Object Adapter rozlišuje Objekt a Služebníka (Servant) Objekt příjmá vzdálená volání, zatímco Služebník požadované metody vykonává. Jeden Služebník může obsluhovat i více Objektů. se stará o propojení Objektu a Služebníka. Zajišt uje možnost implementace s různými ORBy.
Sun s Java Java; 2.3.1 omniorb GPL/LGPL; C++ a Python; 2.6 ORBit2 GPL/LGPL; C, C++ a Python; 2.4
distribuované kalkulačky Servant Client
Princip - definuje objekt. Překladem do Javy se vytvoří třidy pro práci přes ORB.
Princip - zavolá funkci objektu. Generované třídy se postarají o předání požadavku ORBu na straně serveru. ho vyřeší a přes ORB pošle zpět. dostane odpověd od objektu.
Princip - Požadavek dojde na ORB. Provede se překlad na objekt (demarshalling). Servant vyřeší funkci, server obstará komunikaci. ORB přeloží zpět a odešle (marshalling).
Common Object Request Broker Architecture, URL: http://en.wikipedia.org/wiki/common_object_request_broker_architecture, Online: 9. prosince 2010. Object Management Group, Common Object Request Broker Architecture (), URL: http://www.omg.org/spec//, Online: 9. prosince 2010. ORACLE, Introduction to, URL: http://java.sun.com/developer/onlinetraining/corba/, Online: 9. prosince 2010. Petr Lampa, a IIOP, URL: http://www.fit.vutbr.cz/ lampa/papers/corba.html, Online: 9. prosince 2010. Milan Čečrdle, Možnosti tvorby distribuovaných aplikací v Javě s využitím technologií, RMI a DCOM, URL: http://java.cecrdle.net/vyzkum/kapitola_3.htm, Online: 9. prosince 2010.