CORBA (uttalas vanligtvis [ korba ], ibland slang [ cobra ]; engelsk Common Object Request Broker Architecture - den allmänna arkitekturen för en objektförfråganmäklare ; typisk arkitektur för indirekta objektförfrågningar) - en teknisk standard för att skriva distribuerade applikationer som främjas av konsortiet ( arbetsgrupp) OMG och dess relaterade informationsteknologi . CORBA ger interoperabilitet mellan system som körs på olika operativsystem skrivna på olika programmeringsspråkoch körs på olika datorutrustning. CORBA använder en objektorienterad modell, även om system som använder CORBA inte behöver vara objektorienterade. CORBA är ett exempel på ett distribuerat objektsystemparadigm .
CORBA-teknologin är utformad för att stödja utveckling och driftsättning av komplexa objektorienterade applikationssystem.
CORBA är en mekanism i programvara för att implementera sandlådeintegration som gör att program skrivna på olika programmeringsspråk som körs på olika nätverksnoder kan kommunicera med varandra lika enkelt som om de befann sig i adressutrymmet för samma process.
CORBA-specifikationen föreskriver associeringen av programkod till ett objekt, som ska innehålla information om kodens funktionalitet och åtkomstgränssnitt. Klara objekt kan anropas från andra program (eller CORBA-specifikationsobjekt) som finns i nätverket.
CORBA-specifikationen använder Interface Description Language (OMG IDL) för att definiera gränssnitt för objekt att interagera med omvärlden, och den beskriver mappningsreglerna från IDL till språket som används av utvecklaren av ett CORBA-objekt.
Mappningar för Ada , C , C++ , Lisp , Smalltalk , Java , Cobol , Object Pascal , PL/1 och Python har standardiserats . Det finns också icke-standardiserade mappningar till Perl , Visual Basic , Ruby och Tcl implementerade av ORB- verktyg skrivna för dessa språk.
Följande beskriver några av de viktigaste funktionerna som erbjuds av CORBA för kommunikation mellan distribuerade objekt.
Referensen till objektet anges med ( URL ), objektets adress ställs in på samma sätt som när man söker upp adresser i domännamnssystemet ( DNS )), eller skickas som en metodparameter under anropet. Objektreferenser är lätta objekt som överensstämmer med gränssnittet för ett verkligt objekt (fjärr eller lokalt). Att anropa en metod genom referens resulterar i efterföljande ORB-anrop och blockering av tråden, i väntan på svar, framgång eller misslyckande. Parametrar, returdata (om några) och undantagsdata sorteras internt av ORB enligt det lokala språket och OS-mappningen.
Interface Definition Language (IDL) CORBA tillhandahåller en språk- och OS-oberoende definition av kommunikation mellan objekt. CORBA-objekt skickas med referens, medan data (heltal, dubblar, strukturer, uppräkningar, etc.) skickas med värde. Kombinationen av objekt-för-referens och data-för-värde ger ett sätt att framtvinga datainmatning vid kompilering av klienter och servrar, samtidigt som flexibiliteten hos anpassad mjukvaruimplementering för var och en av de CORBA-kommunicerande programvarukomponenterna bibehålls.
Förutom fjärrobjekt definierar CORBA 3.0 begreppet objekt efter värde. Denna definition görs RMI-IIOP- kompatibel . Koden för metoderna för sådana objekt exekveras lokalt som standard. Om objektet efter värde erhölls från fjärrsidan, måste den nödvändiga koden antingen vara känd för båda sidor i förväg eller laddas dynamiskt. För att göra detta möjligt innehåller posten som definierar ett sådant objekt ett kodbasfält, vilket är en lista över URL:er där koden kan laddas från.
Ett objekt efter värde kan också ha fjärrmetoder, fält som skickas tillsammans med själva objektet. Fält kan i sin tur också vara sådana objekt och på så sätt bilda listor, träd eller godtyckliga grafer. Objekt efter värde kan ha en klasshierarki, inklusive abstrakt och multipelt arv.
CORBA Component Model (CCM) är ett nyligen tillägg till CORBA-familjen av definitioner.
CCM har introducerats sedan CORBA 3.0 och beskriver ett standardapplikationsramverk för CORBA-komponenter. CCM är starkt influerad av Enterprise JavaBeans (EJB) och är i själva verket en språkoberoende förlängning av den. CCM tillhandahåller en abstraktion av enheter som kan tillhandahålla och ta emot tjänster genom väldefinierade namngivna gränssnitt, portar .
CCM tillhandahåller en komponentbehållare i vilken programvarukomponenter kan skickas. Behållaren tillhandahåller en uppsättning tjänster som komponenten kan använda. Dessa tjänster inkluderar (men är inte begränsade till) meddelande-, auktoriserings-, persistens- och transaktionshanteringstjänster. Dessa är de mest använda tjänsterna av en distribuerad applikation. Genom att flytta implementeringen av dessa tjänster bort från att behöva implementeras av själva applikationen och till funktionaliteten i applikationsbehållaren, kan komplexiteten för att implementera själva komponenterna reduceras avsevärt.
GIOP (General Inter-ORB Protocol) är ett abstrakt protokoll i CORBA-standarden som tillhandahåller interoperabilitet för mäklare . De protokollrelaterade standarderna utfärdas av Object Management Group (OMG). GIOP-arkitekturen inkluderar flera specifika protokoll:
CorbaLoc ( Eng. Corba Location ) är en strängreferens till ett CORBA-teknikobjekt, liknande en URL .
Alla CORBA-implementationer måste stödja minst två OMG URL-varianter: corbaloc: och corbaname: . Deras syfte är att tillhandahålla ett sätt för en person att läsa och redigera en referens, genom vilket en referens till ett CORBA-objekt kan erhållas .
corbaloc exempel :
corbaloc::160.45.110.41:38693/StandardNS/NameServer-POA/_rootEn CORBA-implementering kan ge stöd för formaten "http:", "ftp:" och "file:". Syftet med dessa format är att specificera ett sätt att få strängrepresentationen av en CORBA-objektreferens.