wykład 11

Transkrypt

wykład 11
Podstawowe pojęcia
•
•
•
•
•
•
•
•
•
•
Referencja do obiektu (object reference) – uchwyt obiektu określonego typu
identyfikujący jego położenie
Klient – wykonuje żądania na obiekcie poprzez jedną z jego referencji
Serwer – Kontekst obliczeniowy (np.. Proces) dla obiektów/serwantów. Klient i serwer
są rolami
Stopka (stub) – pośrednik klienta tłumaczący wywołania metod na komunikaty
Szkielet (skeleton) – pośrednik serwera tłumaczący komunikaty na wywołania metod
Obiekt – Jednostka programowania w CORBA posiadająca tożsamość, interfejs i
implementację. Z punktu widzenia klienta jest to jednostka identyfikowana przez
referencję i udostępniająca zdefiniowane w interfejsie operacje nieprzerwanie od
momentu kreacji (creation) do zniszczenia (destruction). Te operacje z punktu
widzenia klienta należy rozumieć w kontekscie referencji a nie samego obiektu.
Zniszczenie obiektu jest nieodwołalne.
Aktywacja i deaktywacja – są widoczne tylko dla serwera i oznaczają przydzielenie
zasobów obliczeniowych dla obiektu. Jeżeli obiekt ma stan to przy deaktywacji musi
on zostać utrwalony. Istnieje wiele wzorców aktywacji/deaktywacji.
Serwant (servant) – jednostka języka programowania implementująca żądania
jednego lub więcej obiektów. Odwzorowanie obiekt-serwant jest ustalane w trakcie
wykonania i może ulegać zmianie nawet co wywołanie
POA (portable object adapter) – pojemnik na obiekty/serwanty na serwerze zarządza
aktywacjajmi i odwzorowaniami serwant/obiekt. Dawniej BOA.
ORB (object request broker) – Infrastruktura przekazywania komunikatów
CORBA - aplikacje
• Aplikacje CORBA – są tworzone jako zbiory
obiektów, które często modelują elementy
świata rzeczywistego. Każdy obiekt może mieć
jedną lub więcej instancji
• Dla każdego obiektu należy zdefiniować interfejs
za pomocą OMG IDL – określa on dostępne
operacje i przepakowywanie argumentów
• OMG zapewnia specyfikacje mapowania IDL do
C, C++, Java, COBOL, Smalltalk, Ada, Lisp,
Python, and IDLscript
Aplikacja 3 warstwowa
Wzorce stanu sesji
• Sesja klienta – dane o sesji na kliencie
• Sesja serwera – dane sesji na serwerze
• Database session state – dane sesji w
bazie
CORBA - działanie
IIOP
• Zestaw sposobów formatowania danych
CDR (Common Data Representation),
pokrywających się z typami w CORBA IDL
• Zestaw formatów wiadomości
pokrywających całą semantykę ORB’a
• GIOP + TCP/IP = IIOP
• IOR (Interoperable Object Reference)
zawiera przynajmniej 1 profil IIOP
pozwalający na odnalezienie obiektu
CORBA pojęcia
•
•
•
•
•
ORB Interface - ORB jest jednostką logiczną która może być implementowana na
wiele sposobów (one or more processes or a set of libraries). Specyfikacja CORBY
zapewnia abstrakcyjny interfejs dla funkcji dostarczanych przez ORB (wszystkich
poza wywołaniami klienta (stopki lub DII) oraz aktywacją obiektów (adapter (POA)).
Te usługi to: dostęp do usług początkowych naming, trader, root POA, dostęp do IFR
i konstrukcja wywołań DII, operacja na referencjach do obiektów (np. konwersja
pomiedzy session i stringified format)
ORB jest zdefiniowany na poziomie interfejsu i dostarczanych usług. Specyfikacja
nie mówi nic o realizacji tzn. może on się wykonywać jako proces na komputerach
serwera i klienta ale może być także rozproszony na wiele procesów na jednej lubv
wielu maszynach połączonych siecią
Dynamic Invocation Interface (DII) – Ten interfejs pozwala klientowi na bezposredni
dostep do mechanizmu wywołań. Pozwala to na wywołania bez koniczności
linkowania (znajomości) stopek IDL.Pozwala to także na wywołania jednostronne i
asynchroniczne. Użycie polega na odkryciu nowego rodzaju obiektów (np.. Za
pomocą trader service), pobraniu jego interfejsu z Interface Repository (IR lub IFR) i
skonstruowaniu obiektu invocation, który także jest obiektem corby. Ponieważ
przepakowywanie następuje za pomocą usług ORB’a to istnieje tylko jeden DII
obsługujący wszystkie obiekty.
Dynamic Skeleton Interface (DSI) – Analog DII po stronie serwera. Pozwala to
ORBowi na dostarczanie żądań do implementacji obiektu, która nie wie co
implementuje w trakcie kompilacji. Klient i serwer nie wiedzą czy druga strona używa
IDL czy DII/DSI..
Object Adapter – posredniczy pomiędzy ORB a obiektem w wywołaniach i aktywacji.
Tworzenie aplikacji
POA policies
• LifespanPolicy – persistent (obiekty trwałe, mogą
przeżyć serwer- > mogą migrować -> load balancing ,
reliability, są utrwalane) albo transient (krótko żyjące
obiekty, giną wraz z serwerem nawet gdy istnieją
referencje, nie migrują )
• ServantRetentionPolicy – retain (serwant pozostaje
aktywny i jest zapisywany w mapie aktywnych obiektów),
non-retain serwant jest dezaktywowany po obsłużeniu
żądania
• IdAssignmentPolicy – kto nadaje identyfikator będący
elementem referencji obiektu. Id jest przekazywany do
serwanta przy re-aktywacji i pozwala odtworzyć jego
stan.
Wzorce trwałości obiektów
•
•
•
•
Service pattern uses your server resources the most efficiently. A Service object or component including its object reference - is used once, and then destroyed and its resources reclaimed.
Service objects have Transient object references, saving server resources. Należy mozliwie dużo
funkcjonalności przenieść do pojedyńczych wywołań usług.
The Session pattern also uses a temporary object reference, but lasts for several calls by the
same client. Because its reference is temporary, you would not register it in persistent storage
such as a Naming or Trading service. Use Session objects for iterators or other objects that will be
called some limited number of times in quick succession by the same client, and then discarded.
Try to avoid using persistent storage for a Session object; if your server crashes and then comes
up again, the object and its storage will no longer be accessible. (If you're using this pattern for an
iterator holding multiple megabytes of data, this may be unavoidable.)
The Process pattern is the first one we'll discuss with a persistent object reference, allowing you
to store it in a Naming or Trading service and access persistent storage (but see the next category
before you do this!) without violating good programming practice. Use this pattern to represent a
medium-term process' functionality. Examples of good use include applying for a mortgage (but
not the mortgage itself), or a shopping cart that may be used across web sessions. (If you only
allow a cart to last for a single web session, use the Session pattern instead.)
The Entity pattern also has a persistent object reference, and has a strong identity. Use this
pattern to represent data in your database to your application. Your application will be most
efficient if you code these objects to be a thin layer between your datastore and your application they represent your data, and do nothing else. In the CORBA Component Model, Entity
components have strong identity, with their references stored by the container in a flat Naming
service.
Wytyczne Root POA
•
•
•
•
– The lifespan policy is transient
– The ID assignment policy uses system IDs
– The ID uniqueness policy uses unique IDs
– The implicit activation policy is enabled (not
default)
• – The request processing policy uses an active
object map
• – The servant retention policy retains servants
• – The thread policy gives the ORB control
Podsumowanie
CORBA dostarcza m. in. specyfikacji następujących
elementów
• IDL
• Mapowanie IDL – języki programowania
• Static Invocation Interface
• DII
• Repozytoria interfejsów i implementacji zawierające
metadane dostępne podczas wykonania
• POA umożliwia łączenie usług z ORB
• I wiele innych ...
• Tutaj pokazana była tylko najbardziej podstawowa część
(dalej np. CCM)
COS – CORBA Services
Service
Description
Object life cycle
Defines how CORBA objects are created, removed,
moved, and copied
Naming
Defines how CORBA objects can have friendly symbolic
names
Events
Decouples the communication between distributed objects
Relationships
Provides arbitrary typed n-ary relationships between
CORBA objects
Externalization
Coordinates the transformation of CORBA objects to and
from external media
Transactions
Coordinates atomic access to CORBA objects
Concurrency Control
Provides a locking service for CORBA objects in order to
ensure serializable access
Property
Supports the association of name-value pairs with
CORBA objects
Trader
Supports the finding of CORBA objects based on
properties describing the service offered by the object
Query
Supports queries on objects
Naming Service
Implementation Repository

Podobne dokumenty