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
1994 - CORBA 2.0
◦ obsahuje jazyk pro definici rozhraní - Interface Definition Language (IDL) ◦ 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 InterORB 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