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