Common Object Request Broker Architecture
Tvorba aplikací, jejichž komponenty budou komunikovat přes počítačovou síť Programátor jedné aplikace volá metody vzdálených objektů podobně jako u sebe lokální metody CORBA zajišťuje veškerou potřebnou síťovou komunikaci podpora jazykově neutrálního transparentního použití distribuovaných objektů
Standard zavedený organizací Object Managemenet Group Architektura pro distribuované systémy Sjednocuje komunikaci objektů postavených na různých platformách, a to bez rozdílu: výpočetního hardwaru operačního systému programovacího jazyka Verze 1.0 vypuštěna v září 1991
Postupný vznik distribuovaných systémů monolitické systémy nástup osobních počítačů model klient-server objektové programování
Např. mainframy (sálové počítače s terminály) Jeden mainframe obsluhuje zároveň několik klientů najednou Centralizace systému, snadná administrace Nevýhodou je monolitický software Uživatelské rozhraní, výkonná část a přístupy k datům obsaženy v jedné aplikaci Jakákoliv změna může ovlivnit celou aplikaci
Nástup osobních počítačů Dvouvrstvá architektura klient-server Přenesení část zátěže na osobní počítače Typicky databáze sídlí na serveru Uživatelský interface umístěn na klientovi (v PC) Logika aplikace umístněna na server či ke klientovi Odstraněna monolitičnost softwaru Změna ve struktuře či přístupu do DB musí být projeveny ve všech klientech
Členění aplikace na nezávislé části Uživatelské rozhraní Logika aplikace Přístup k datům Cílem je odolnost a flexibilita aplikace Izolace klienta od zbytku aplikace Klient by neměl komunikovat např. napřímo s databázi dat Změny v přístupu k databázi neovlivní uživatelské rozhraní Minimální redistribuce aplikace směrem ke klientovi Výpočty, databáze se mohou distribuovat na různé servery rozložení zátěže
Příchod objektově orientovaného programování Zohlednění zapouzdření, dědičnosti a polymorfismu ve vícevrstvé architektuře vedlo k distribuovaným systémům Aplikační vrstvy jsou nahrazeny komponenty (objekty), jež navzájem využívají svých služeb (metod) Vyžadováno je rozhraní komponent
Definuje protokol komunikace mezi dvěma oddělenými komponentami systému Definuje jaké služby jsou nabízeny a způsob jejich použití Při zachovaném rozhraní se může dynamicky měnit výkonová část komponenty, aniž by byla ovlivněna práce klientů
Abstrakce Redukce složitosti Zapouzdření izoluje programátora od implementačních detailů systému Skládání aplikace z existujících komponent Distribuované systémy navíc poskytují služby v oblasti bezpečnosti a uschování objektů či adresářové služby
Sada služeb, které umožňují objektům se navzájem vyhledávat Seskupují se související informace dohromady Je možné je použít k rozložení zátěže v systému Např. klient se obrátí na nejméně zatíženou komponentu CORBA nabízí tyto a jiné služby pod názvy CORBAservices a CORBAfacilities
Poměrně křehká monolitická architektura ===> velmi pružná architektura Různé architektury postupně umožňovaly vývoj stále robustnějších a více rozčleněných aplikací
Možnost, jak vyvíjet distribuované aplikace Zajišťuje komunikaci různých komponent aplikací Nabízí mechanismus (jazyk) definice rozhraní komponent Specifikuje řadu standardních podpůrných služeb jako např. adresářové služby Nezávislost na platformě Nezávislost na programovém jazyce Schopnost pracovat v různém síťovém prostředí
Pro malé aplikace příliš těžkopádný nástroj Režie plynoucí ze zajištění nezávislosti na programovém jazyce
1989 - založena organizace Object Management Group cílem vytvořit obecnou soustavu architektur pro objektově orientované aplikace založených na specifikaci rozhraní zveřejněna architektura Object Management Architecture, součástí je CORBA hlavní částí je Object Request Broker (ORB) úlohou CORBA (resp. ORB) je zde realizace žádostí o objekty 1991 CORBA 1.0, 1.1 obsahuje jazyk pro definici rozhraní - Interface Definition Language (IDL) 1994 - CORBA 2.0 definuje protokol pro komunikaci mezi ORB - Internet Inter-ORB Protocol (IIOP)
Základní kameny architektury Object Request Broker (ORB) Interface Definition Language (IDL) Komunikační model architektury CORBA
Softwarový prostředek - middleware Zajišťuje komunikaci mezi objekty Klient může transparentně volat metody jiných objektů Volané objekty mohou být umístěny kdekoliv v síti
Parametry volané metody jsou před posláním upraveny do nezávislého formátu (marshalling) Podobně v cíli jsou převedeny do formátu pro cílovou platformu Nezávislost na hardwaru ORB se např. také postará o malý a velký endian Komunikovat lze s jakoukoliv platformou, pro niž existuje implementace ORB Programátor rozdíly mezi platformami již neřeší, pouze volá metody a získává výstup podobně jako u lokálních metod
Marshaling parametrů proces převodu parametrů do formátu přenášeného po síti Unmarshaling parametrů převod parametrů zpátky do formátu, kterému rozumí volaná komponenta
Získá se odkaz na volaný objekt Využívají se např. adresářové služby Cílové ORB přijme požadavek a nalezne požadovaný objekt Klientovo ORB převede a přenese vstupní parametry Cílové ORB zajistí vyvolání příslušné metody a podobně nazpět zasílá výstup Klientovo ORB vrací výstup klientovi
Jazyk pro definici rozhraní komponent Druhý základní kámen architektury CORBA Každá komponenta musí mít napsané své rozhraní v jazyce IDL V IDL se nepíše implementace aplikací, jen pouze rozhraní Rozhraní: definice třídy bez implementace metod
Účelem IDL je umožnit implementaci klienta a serveru v libovolném jazyce Uplatňuje se zde jazykové mapování
Proces převádějící konstrukci jazyka IDL na konstrukce v daném programovacím jazyce Příklad: V jazyce IDL je typ long 32-bitové znaménkové celé číslo V C++ se mapuje na long nebo na int v Javě
Úkolem specifikace IDL je, aby definovala převod na jazyce závislých typů Organizace OMG definovala standardizované mapování např. pro jazyky C, C++, COBOL, Java či SmallTalk. Pro další existují privátní nestandardizovaná řešení Existence mapování je jedinou věcí omezující nezávislost na jazyce
Specifikován obecný standard komunikace mezi dvěma různými implementacemi ORB Obecný standard komunikace se upřesňuje pro konkrétní transportní protokoly např. pro TCP/IP máme standardní prokotol Internet Inter- ORB protocol (IIOP) každý ORB musí tento protokol podporovat
Volání vzdálené procedury se může zdát transparentní a volající o celém skrytém mechanismu v pozadí nemusí ani vědět Při přenosu se však mohou vyskytnout chyby CORBA nabízí prostředek pro ošetření výjimek Jeli detekována chyba, CORBA objekt způsobí výjimku Výjimka může například signalizovat síťovou chybu nebo nedostupnost serveru
V distribuovaných systémech může komponenta získat přístup k objektu: Předáváním odkazem Předáváním hodnotou CORBA zpočátku umožňovala předávání pouze odkazem Na předávání objektu hodnotou se pracovalo dodatečně
Standard CORBA nabízí několik rozhraní mezi implementací objektu a ORB Nejpoužívanějším je právě BOA Nabízí sadu metod s přístupem k funkcím ORB autentizace, aktivace uložených objektů, aktivace a deaktivace volaného serveru,
Generovány IDL kompilátorem Tvoří tmel mezi rozhraním komponenty definovaný dle IDL a implementací klienta a serveru Stub klienta Malá část kódu, jež zpřístupňuje klientovi příslušné rozhraní serveru Skeleton serveru Část kódu, vytvářející kostru pro implementaci serveru
Vývojář vytvoří definice rozhraní komponenty za použití jazyka IDL Poté si vybere jazyk pro implementaci klienta a serveru Zavolá se IDL kompilátor a ten vytvoří stub klienta a skeleton serveru Stub komunikuje s rozhraním na serveru Volání vzdálené metody se tak odehrává skrze stub, který sám navíc zabezpečí komunikaci s ORB Na straně serveru podobně pracuje skeleton. Pro každou metodu vygeneruje IDL kompilátor prázdnou metodu, kam musí programátor doplnit její implementaci
Klient skrze stub předá žádost ORB ORB odevzdá žádost BOA, která aktivuje implementaci serveru Implementace serveru sdělí BOA, že je připravena BOA předá přes skeleton do implementace žádost o metodu Implementace vykoná metodu a vrací výsledek (nebo výjimku) zpět skrze skeleton, ORB, stub až ke klientovi
Architektura pro distribuované systémy Nezávislost na platformě Nezávislost na programovacím jazyce Schopnost pracovat v různém síťovém prostředí
Děkuji za pozornost..
Referát Pavla Váchy Common Object Request Broker Architecture (CORBA) MFF UK