CORBA (obvykle vyslovováno [ korba ], někdy slangově [ kobra ]; anglicky Common Object Request Broker Architecture - obecná architektura zprostředkovatele objektových požadavků ; typická architektura nepřímých požadavků na objekty) - technologický standard pro psaní distribuovaných aplikací propagovaný konsorciem ( pracovní skupina) OMG a související informační technologie . CORBA poskytuje interoperabilitu mezi systémy běžícími na různých operačních systémech , napsanými v různých programovacích jazycích a běžícími na různém výpočetním hardwaru. CORBA používá objektově orientovaný model, ačkoli systémy používající CORBA nemusí být objektově orientované. CORBA je příkladem paradigmatu distribuovaného objektového systému .
Technologie CORBA je navržena tak, aby podporovala vývoj a nasazení komplexních objektově orientovaných aplikačních systémů.
CORBA je softwarový mechanismus pro implementaci integrace sandboxu, který umožňuje programům napsaným v různých programovacích jazycích běžících na různých síťových uzlech vzájemně komunikovat tak snadno, jako by byly v adresovém prostoru stejného procesu.
Specifikace CORBA předepisuje asociaci programového kódu do objektu, který musí obsahovat informace o funkčnosti kódu a přístupových rozhraních. Připravené objekty lze volat z jiných programů (nebo objektů specifikace CORBA) umístěných v síti.
Specifikace CORBA používá jazyk popisu rozhraní (OMG IDL) k definování rozhraní pro objekty pro interakci s vnějším světem a popisuje pravidla mapování z IDL do jazyka používaného vývojářem objektu CORBA.
Mapování pro Ada , C , C++ , Lisp , Smalltalk , Java , Cobol , Object Pascal , PL/1 a Python byla standardizována . Existují také nestandardní mapování na Perl , Visual Basic , Ruby a Tcl implementovaná nástroji ORB napsanými pro tyto jazyky.
Níže jsou popsány některé z nejdůležitějších funkcí nabízených CORBA pro komunikaci mezi distribuovanými objekty.
Odkaz na objekt se zadává pomocí ( URL ), adresa objektu se nastavuje stejným způsobem jako při vyhledávání adres v systému doménových jmen ( DNS ) nebo se předává jako parametr metody během volání. Odkazy na objekty jsou zjednodušené objekty, které odpovídají rozhraní skutečného objektu (vzdáleného nebo místního). Volání metody pomocí odkazu má za následek následná volání ORB a zablokování vlákna, čekání na odpověď, úspěch nebo selhání. Parametry, návratová data (pokud existují) a data výjimek jsou interně zařazovány ORB podle místního jazyka a mapování OS.
Interface Definition Language (IDL) CORBA poskytuje definici meziobjektové komunikace nezávislou na jazyce a OS. Objekty CORBA jsou předávány odkazem, zatímco data (celá čísla, dvojice, struktury, výčty atd.) jsou předávány hodnotou. Kombinace objekt po referenci a data podle hodnoty poskytuje prostředky k vynucení typování dat při kompilaci klientů a serverů při zachování flexibility implementace vlastního softwaru pro každou softwarovou komponentu komunikující CORBA.
Kromě vzdálených objektů definuje CORBA 3.0 koncept objektu hodnotou. Tato definice je kompatibilní s RMI-IIOP . Kód pro metody takových objektů se standardně spouští lokálně. Pokud byl objekt podle hodnoty získán ze vzdálené strany, pak musí být potřebný kód buď oběma stranám znám předem, nebo musí být dynamicky načten. Aby to bylo možné, obsahuje záznam, který definuje takový objekt, pole Code Base, což je seznam adres URL, ze kterých lze kód načíst.
Objekt podle hodnoty může mít také vzdálené metody, pole, která jsou předávána spolu s objektem samotným. Pole zase mohou být takovými objekty a tvoří tak seznamy, stromy nebo libovolné grafy. Objekty podle hodnoty mohou mít hierarchii tříd, včetně abstraktní a vícenásobné dědičnosti.
CORBA Component Model (CCM) je nedávným přírůstkem do rodiny definic CORBA.
CCM byl zaveden od verze CORBA 3.0 a popisuje standardní aplikační rámec pro komponenty CORBA. CCM je silně ovlivněný Enterprise JavaBeans (EJB) a je ve skutečnosti jeho jazykově nezávislým rozšířením. CCM poskytuje abstrakci entit, které mohou poskytovat a přijímat služby prostřednictvím dobře definovaných pojmenovaných rozhraní, portů .
CCM poskytuje kontejner komponent, ve kterém lze dodávat softwarové komponenty. Kontejner poskytuje sadu služeb, které může komponenta používat. Tyto služby zahrnují (ale nejsou omezeny na) služby oznamování, autorizace, perzistence a správy transakcí. Jedná se o nejčastěji používané služby distribuovanou aplikací. Přesunutím implementace těchto služeb od nutnosti implementovat samotnou aplikací do funkčnosti aplikačního kontejneru lze značně snížit složitost implementace samotných komponent.
GIOP (General Inter-ORB Protocol) je abstraktní protokol ve standardu CORBA, který poskytuje interoperabilitu brokerů . Standardy související s protokoly vydává Object Management Group (OMG). Architektura GIOP obsahuje několik specifických protokolů:
CorbaLoc ( anglicky Corba Location ) je řetězcový odkaz na objekt technologie CORBA, podobný URL .
Všechny implementace CORBA musí podporovat alespoň dvě varianty URL OMG: corbaloc: a corbaname: . Jejich účelem je poskytnout osobě způsob, jak číst a upravovat referenci, prostřednictvím které lze získat referenci na objekt CORBA .
příklad corbaloc :
corbaloc::160.45.110.41:38693/StandardNS/NameServer-POA/_rootImplementace CORBA může poskytovat podporu pro formáty "http:", "ftp:" a "file:". Účelem těchto formátů je určit způsob, jak získat řetězcovou reprezentaci odkazu na objekt CORBA.