Title: Bazy danych i inzynieria oprogramowania
1Bazy danych i inzynieria oprogramowania
Wyklad 2 Wprowadzenie do OMG CORBA
Kazimierz Subieta Instytut Podstaw Informatyki
PAN, Warszawa Polsko-Japonska Wyzsza
Szkola Technik Komputerowych, Warszawa
2CORBA schemat wywolywania dynamicznego
Host klienta
Host serwera
Klient
Obiekt
Dynamiczna implementacja interfejsu (szkielet
kod)
Wywolanie operacji
zlecenie
DII
Posrednik (ORB, Object Request Broker)
wynik, parametry wyj
Klient wysyla zlecenia poprzez DII (Dynamic
Invocation Interface), niezaleznie od IDL
(korzystajac np. z repozytorium
interfejsów). Interfejs do obiektu po stronie
serwera musi byc zaimplementowany w postaci
dynamicznie wiazanych operacji (a la DLL).
Dynamiczny kod powstaje z dynamicznego szkieletu
interfejsu do obiektu, który jest nastepnie
wypelniany kodem implementacji operacji.
3Wolania dynamiczne
Wolania poprzez pniaki i szkielety jest
statyczne, tj. odpowiednie fragmenty kodu sa
wprowadzane do aplikacji podczas kompilacji.
DII (Dynamic Invocation Interface) umozliwia
dynamiczne wywolanie zlecenia do obiektu od
strony klienta (podobnie do pniaka, generic stub).
DSI (Dynamic Skeleton Interface) umozliwia
dynamiczne przekazanie zlecenia do obiektu od
strony serwera (podobnie do szkieletu, generic
skeleton).
Nie zaleza one od interfejsów w IDL. Klient nie
musi podczas kompilacji znac interfejsy do
obiektów. Moze je ustalic dynamicznie, poprzez
generyczna funkcje create_request, nalezaca do
interfejsu Object, oraz Repozytorium Interfejsów.
Tego rodzaju udogodnienie jest szczególnie wazne
dla niektórych aplikacji, takich jak
przegladarki, które musza przejrzec aktualnie
dostepne obiekty bez wiedzy, jakie one sa, jak sa
zbudowane i jakie maja interfejsy.
4Rodzaje wolan dynamicznych
Wolanie synchroniczne Klient wywoluje zlecenie i
nastepnie czeka na odpowiedz. Zachowanie sie jest
identyczne do RPC (Remote Procedure Call). Ten
tryb wolania jest takze cecha statycznych pniaków
i szkieletów.
Opóznione wolanie synchroniczne Klient wywoluje
zlecenie, ale po tym kontynuuje przetwarzanie,
podczas gdy zlecenie jest przekazywane do
obiektu. Odpowiedz od obiektu jest zbierana i
przetwarzana pózniej. Klient moze równolegle
wyslac wiele zlecen dla uruchomienia niezaleznie
wielu dlugo trwajacych aplikacji.
Wywolanie w jedna strone (oneway) Klient
wywoluje zlecenie i nie czeka na odpowiedz. Ta
forma jest czesto nazywana fire and forget.
Klient moze stwierdziæ rezultat w inny sposób,
np. poprzez wyslanie kolejnego zlecenia.
5DSI Dynamiczny szkielet
Tak samo jak DII pozwala na dostep do obiektów
bez dostepu do statycznych pniaków, DSI umozliwia
implementacje strony serwera bez statycznej
wiedzy zawartej w szkielecie.
Zastosowania podobne, np. przegladarka. Taka
aplikacja wymaga dynamicznego dostepu do operacji
na obiekcie. Nie jest akceptowalna ponowna
kompilacja czesci serwera po kazdej zmianie
zestawu, struktury lub interfejsów
obiektów. Wlasnosc ta jest dostepna w CORBA 2.0.
Pewnym problemem okazalo sie zapewnienie
wspólpracy z wieloma protokolami komunikacyjnymi.
Wlasnosc jest istotna dla budowy pomostów
(gateways) pomiedzy oprogramowaniem nie
bazujacym na CORBA, np. Microsoft COM/DCOM.
6CORBA Rdzen ORB przezroczystosc
ORB Core, transparency
Kluczowa wlasnosc ORB - przezroczystosc, czyli
ukrywanie nieistotnej informacji.
ORB ukrywa
- Lokalizacje obiektu klient nie potrzebuje
wiedziec, gdzie obiekt jest ulokowany. - Implementacje obiektu klient nie potrzebuje
wiedziec, jak obiekt jest - zaimplementowany.
- Stan dzialania obiektu klient nie potrzebuje
wiedziec, czy obiekt jest aktywny, - gotowy do akceptacji zapytania, czy nie
uczestniczy aktualnie w innych procesach. - Mechanizmy komunikowania sie obiektów klient
nie potrzebuje wiedziec, jaki - mechanizm komunikacyjny jest uzywany (TCP/IP,
wspólna pamiec, lokalne - wolanie metod, itd.)
Klient moze skupic sie na problemach zwiazanych z
dziedzina aplikacyjna, a nie na problemach
realizacyjnych zwiazanych ze srodowiskiem
komputerowym.
7Rdzen ORB referencje do obiektów
object references
Aby przeslac zlecenie, klient specyfikuje
docelowy obiekt poprzez podanie jego referencji.
Referencja do obiektu jest tworzona wraz z
utworzeniem obiektu i nigdy sie nie zmienia, az
do jego skasowania. Referencje sa nieczytelne,
tj. tylko ORB wie, jak referencje sa tworzone,
jak równiez niemodyfikowalne nie ma zadnej
mozliwosci ich zmiany.
Referencje moga miec postac standardowa Internet
Inter-ORB Protocol (IIOP) Distributed Computing
Environment Common Inter-ORB Protocol lub moga
miec postac specyficzna dla danego ORB, danej
aplikacji lub dziedziny.
Metody uzyskiwania referencji do obiektów
- Tworzenie obiektów po utworzeniu obiektu klient
otrzymuje jego referencje. (CORBA nie ma operacji
tworzenia obiektów, naleza one do aplikacji.) - Uslugi w zakresie katalogów klient moze wywolac
usluge przegladania obiektów, patrz wspomniane
uslugi w zakresie nazw (Name Service) i wlasnosci
(Trader Service). - Zamiana referencji na string i odwrotnie
aplikacja moze zamienic referencje na string i
zapamietac w pliku lub bazie danych.
8Model obiektowy OMG (1)
object model
Obiekt identyfikowalny, hermetyzowany byt
zapewniajacy jedna lub wiecej uslug, które moga
byc zlecane przez klienta. Zlecenie (request)
jest zdarzeniem, tj. czyms, co zachodzi w pewnym
punkcie czasowym. Zlecenie moze miec parametry,
które sa uzywane do przesylania danych do
obiektu. Zlecenie jest kierowane do obiektu i
powoduje wywolanie uslugi na rzecz zlecajacego.
Usluga moze zwrócic zlecajacemu wynik. Wartosc
moze byc parametrem zlecenia jest ona
wystapieniem typu danych OMG IDL. Wartosc, która
ientyfikuje obiekt, nazywana jest nazwa
obiektu. Referencja do obiektu jest wewnetrzna
(nieczytelna) nazwa obiektu, która w sposób
unikalny identyfikuje pojedynczy obiekt. Wyjatek
pojawia sie wtedy, gdy zlecenie nie zakonczylo
sie w sposób normalny.
9Model obiektowy OMG (2)
Obiekty moga byc tworzone, modyfikowane i usuwane
poprzez wykonanie odpowiednich zlecen. Typ jest
nazwanym zbiorem wartosci spelniajacych pewien
warunek. Wartosc spelniajaca ten warunek jest
nazywana czlonkiem typu. Zbiór wszystkich takich
wartosci jest nazywany ekstensja typu (type
extension). Typ obiektu jest takim typem,
którego czlonkami sa obiekty. Dokladniej, typ
obiektu jest okreslony przez typ przechowywanych
w nim wartosci. Interfejs jest opisem zestawu
wszystkich operacji, które klient moze zlecac dla
obiektu. Interfejsy sa definiowane w jezyku OMG
IDL. Interfejs podlega dziedziczeniu
(wielo-dziedziczeniu). Interfejs
dowolnego obiektu zawiera oprócz wlasnych
operacji wszystkie odziedziczone operacje.
10Model obiektowy OMG (3)
Operacja zapewnia wykonanie okreslonej uslugi na
obiekcie. Operacja posiada sygnature, która
opisuje parametry zlecenia, zwracana wartosc,
mozliwosc spowodowania wyjatku, dodatkowy
kontekst, semantyke wykonania. Skladnia
sygnatury oneway ltop_type_specgt ltidentifiergt
(param1,...,paramL) raises(except1,...,exceptN)
context(name2,...,nameM) oneway zlecajacy
nie czeka na wynik. context ustala
dodatkowa informacje specyficzna dla danej
operacji. Parametr operacji jest
scharakteryzowany przez typ i tryb. Tryby
parametrów in (wejsciowy), out (wyjsciowy),
inout (wejsciowy i wyjsciowy) Deklaracja
atrybutu jest równowazna deklaracji dwóch
operacji pierwszej, która odczytuje wartosc tego
atrybutu, i drugiej, która te wartosc zmienia.
11Model obiektowy OMG zestawienie typów
Wartosc
Referencja do obiektu
Wartosc konstruowana
Wartosc bazowa
Struct
Sequence
Union
Array
Short Long UShort Ulong Float Double
Char String Boolean Octet Enum Any
12OMG IDL
Interface Definition Language
- IDL jest kluczem do wspóldzialania systemów
poprzez interfejsy oparte na OMG CORBA. Jest on
jezykiem neutralnym, niezaleznym od
jakiegokolwiek jezyka programowania. IDL jest
deklaracyjny zajmuje sie wylacznie specyfikacja
obiektów. - Jest on potrzebny uzytkownikom do dwóch celów
- klientom, którzy moga wywolywac operacje
zdefiniowane w IDL, - projektantom, którzy moga rozszerzac istniejace
funkcje systemu poprzez specjalizacje
istniejacych interfejsów.
IDL okresla typy i interfejsy obiektów, podobnie
do klas w C lub interfejsów w Java. IDL nic nie
mówi o implementacji obiektów i operacji na
obiektach.
module Bank interface Konto ...
interface Klient ... ....
13Przyklad opisu w IDL
Specyfikacja wirtualnych zwierzatek
module Moje_Zwierzatka / definicja
interfejsu dla psa / interface Pies
Ulubieniec, Zwierze readonly attribute
integer wiek exception NieReagujestring
dlaczego void Szczekaj( in short
jak_dlugo) raises (NieReaguje)
void Usiadz( in string gdzie ) raises
(NieReaguje) void Warcz(in string
na_kogo) raises (NieReaguje)
/ definicja interfejsu dla kota /
interface Kot Zwierze void Miaucz( in
short ile_razy ) raises
(NieReaguje) void Mrucz( in short
jak_dlugo ) raises (NieReaguje)
Ulubieniec wlasciciel
Zwierze
14OMG IDL - inny przyklad ost 6.10
interface Osoba
Osoba Imie Nazwisko Data_Urodzenia wiek()
attribute stringlt20gt Imie attribute stringlt30gt
Nazwisko attribute long Data_Urodzenia short
Wiek( void ) ...
interface Kierowca Osoba
attribute short Punkty_Karne attribute long
Numer_Prawa_Jazdy exception Odebranie_Prawa_Jazdy
... stringlt80gt Przyczyna ...
void Wykroczenie(in short punkty )
raises( Odebranie_Prawa_Jazdy ) ...
Kierowca Punkty_Karne Numer_Prawa_Jazdy Wykroczeni
e(..)
15IDL jeszcze inny przyklad
interface Konto readonly attribute float
bilans void zmien_bilans( in float
wartosc) interface SprawdzKonto
Konto attribute float LimitPrzekroczKonta in
terface Bank Konto NoweKonto( in string
nazwisko) SprawdzKonto SprawdzNowe( in string
nazwisko ) void UsunKonto( in Konto
konto_klienta )
16OMG IDL pojecia (1)
Moduly (modules) sa zbiorami interfejsów
zgrupowanych pod jedna nazwa. Modul wyznacza
zakres nazw nazwy wewnatrz modulu nie koliduja z
nazwami z innych modulów. Nazwa z wnetrza modulu
musi byc kwalifikowana nazwa modulu, np. Bank
Konto Interfejs definiuje zbiór operacji, które
klient moze wywolywac w stosunku do obiektu. Jest
to specyfikacja obiektu, która opisuje metody,
parametery metod, typy danych i wyjatki.
Interfejs nie zawiera implementacji. Interfejs
moze miec atrybuty i kazdy z tych atrybutów
posiada automatycznie dwie metody get (daj
wartosc) oraz set (podstaw wartosc). Atrybut
moze byc readonly (tylko do czytania). Interfejs
moze byc definiowany z uzyciem dziedziczenia
(inheritance) lub wielo-dziedziczenia
(multiple-inheritance).
17OMG IDL pojecia (2)
Wyjatki sluza do obslugi bledów (moga miec takze
inne zastosowania). Mozliwe sa dwa typy wyjatków
wyjatki systemowe (standardowe dla CORBA) oraz
wyjatki uzytkownika (definiowane w specyfikacji
IDL). Wyjatek jest struktura danych zawierajaca
atrybuty informujace np. o przyczynach powstania
wyjatku. Kontekst jest to obiekt zawierajacy
liste wlasnosci specyficznych dla klienta. Jest
to dodatkowy parametr operacji pozwalajacy np.
ustalic, który klient zada danej uslugi. Operacja
jest elementem proceduralnym, która klient moze
zastosowac w stosunku do obiektu. Sygnatura
operacji specyfikuje jej nazwe, typ wyniku, nazwy
i typy parametrów, tryb okreslajacy, czy parametr
jest wejsciowy czy wyjsciowy, oraz nazwe wyjatku
skojarzona ew. z lokalnym kontekstem
klienta. Domyslnie wykonywanie operacji jest
synchroniczne, tj. po wywolaniu operacji
aplikacja klienta czeka na jej zakonczenie.
Mozliwe sa inne tryby wykonywania operacji
(oneway) . Typ danych uzywany do opisu wartosci
parametrów, atrybutów i zwracanych wartosci.
18IDL typy wbudowane
32-bitowe typy arytmetyczne 64-bitowe typy
arytmetyczne 16-bitowe typy arytmetyczne IEEE
754-1985 typy zmienno-przecinkowe typ znakowe i
szeroko-znakowe typ boolowski 8-bitowa wartosc
(nie zmienialna przy transmisji) typy
wyliczeniowe typ, który moze charakteryzowac
dowolna wartosc
long (signed and unsigned) long long (signed and
unsigned) short (signed and unsigned) float,
double, long double char , wchar boolean octet enu
m any
Specyfikacja CORBA okresla rozmiary wszystkich
typów bazowych, dla zapewnienia wspóldzialania
pomiedzy heterogenicznymi platformami.
Przyklad typu wyliczeniowego
enum Waluta zloty, frank, dolar, funt
19IDL typy konstruowane, typy wzorcowe
constructed types, template types
Typy konstruowane
struct - agregacja danych podobna do struct w
C/C union - rozlaczna unia typów, j.w.,
ewentualnie z dyskryminatorem umozliwiajacym
dynamiczne rozróznienie typu wartosci. Pojecie
unii jest identyczne z podobnym pojeciem w C/C.
Typy wzorcowe
string i wstring - typy stringowe i stringowe z
rozszerzonym zakresem znaków stringlt10gt -
ograniczenie do 10-ciu znaków string - brak
ograniczenia dlugosci sequence - liniowy
kontener o ograniczonej lub nieograniczonej
dlugosci. Typ elementu i ograniczenie - w
nawiasach trójkatnych, np. sequenceltFactorygt -
dowolnie dluga sekwencja referencji do obiektów
Factory, sequenceltstring,10gt - sekwencja
stringów ograniczona do max 10-ciu
20IDL typy referencji do obiektów
Operacja find_factories jest jedna ze
standardowych operacji w ramach OMG Common
Object Services Lifecycle Specification
//OMG IDL interface FactoryFinder // definicja
sekwencji referencji do obiektów Factory typedef
sequenceltFactorygt FactorySeq FactorySeq
find_factories ( in string interface_name )
FactorySeq - nieograniczona sekwencja referencji
do obiektów Factory find_factories - operacja,
która bierze jako parametr nieograniczony
string i zwraca jako rezutat taka sekwencje
referencji