76.Struktura oprogramowania rozproszonego. NajwaŜniejsze

Transkrypt

76.Struktura oprogramowania rozproszonego. NajwaŜniejsze
76.Struktura oprogramowania rozproszonego.
NajwaŜniejsze aspekty obiektowego programowania rozproszonego to:
Współdziałanie (interoperability) modułów programowych na róŜnych maszynach.
Wielokrotne wykorzystanie (reusability) modułów programowych.
Standaryzacja de facto (przemysłowa) lub de iure (niezaleŜna).
A tu mamy rysunek obrazujący samą strukturę oprogramowania i pewnie trzeba go wykuć:
Aplikacje działające w środowisku rozproszonym mogą być napisane w róŜnych
językach programowania.
Interfejs do operacji zdalnych jest definiowany w specyficznym języku narzędzia
programowania rozproszonego.
Interfejs słuŜy do wygenerowania zestawu procedur w konkretnym języku
programowania.
77.Elementy modelu klient – serwer
Interfejs generuje zestaw procedur w konkretnym języku programowania. Część tych
procedur będzie wywoływana przez serwer tj. program świadczący usługę wykonania
operacji.
Inna część tych procedur będzie wykonywana przez klienta tj. program na komputerze
zdalnym. Są to tzw. namiastki (stubs) operacji wykonywanych przez serwer.
Namiastki
Procedury stub maja prawie dokładnie taka samą liczbę i typy parametrów jak w
deklaracji
interfejsu, ale słuŜą wyłącznie do przekazania argumentów wywołania do serwera, a następnie
odebranie wyników zdalnej procedury tam wykonanej.
Kod odpowiedzialny za organizacje i konwersje przekazywanych danych
(marshalling code) jest generowany automatycznie.
Serwer
Procedury wygenerowane automatycznie dla serwera to takŜe marshalling code, ale
w trakcie obsługi zlecenia następuje wywołanie implementacji tj. procedury, która
faktycznie wykona operacje zdefiniowane w interfejsie.
Stworzenie implementacji jest zadaniem programisty.
Szkielet serwera jest tworzony automatycznie.
Ograniczenia przesyłania parametrów
Przesyłanie tablic wymaga kaŜdorazowo podania ich rozmiaru.
Przesyłanie wskaźników i referencji nie ma sensu:
– róŜne przestrzenie adresowe serwera i klienta.
Przesyłanie deskryptorów plików, uchwytów okien nie ma sensu:
– obiekty te maja charakter lokalny.
Opakowywanie procedur
Wrapping – przystosowywanie istniejących procedur do pracy w środowisku rozproszonym.
Repozytorium serwerów
Specjalny proces serwerowy zarządzający katalogiem (repository) serwerów
działających w danym systemie.
Udostępnia klientom identyfikatory operacji wykonywanych przez poszczególne
zarejestrowane serwery.
Inne programy zarządzające – serwisy (services):
– zawiadujące (Gronek napisał zawiadujące, ale moim zdaniem chodziło mu o
zarządzające...) przesyłaniem komunikatów, prawami dostępu do obiektów,
bezpieczeństwem, transakcjami.
78.Organizacja serwisów usług rozproszonych.
Serwisy (services) – programy zarządzające przesyłaniem komunikatów, prawami dostępu do
obiektów, bezpieczeństwem, transakcjami.
I tu znowu mamy rysunek:
79. Ogólne właściwości mechanizmu RPC.
Tyle mamy od Gronka:
RPC - Remote Procedure Call
Mechanizm RPC został opracowany przez firmę Sun; obecnie znormalizowany przez
ISO/IEC.
Nie przystosowany do programowania obiektowego.
Powszechnie stosowany w systemach Unix.
Wspólny sposób reprezentacji podstawowych typów danych – eXternal Data
Representation (XDR). RPC zawiera funkcje słuŜące do kodowania i dekodowania
typów prostych, łańcuchów znaków, tablic, unii i wskaźników języka C w
standardzie XDR.
A oto co mówi Wiki na ten temat:
Remote Procedure Call (RPC) to protokół zdalnego wywoływania procedur, stworzony
przez Suna i swego czasu dość popularny na Uniksach, obsługiwany w bibliotekach języka
Java, a współcześnie wypierany przez bardziej rozbudowane protokoły takie jak CORBA czy
XML-RPC.
Standard RPC zdefiniowany jest w RFC 1057. RPC uŜywa do kodowania danych formatu
XDR (eXternal Data Representation) zdefiniowanego w RFC 1832.
Protokoły tego typu (jak RPC, CORBA, DCOM, czy XML-RPC) mają na celu ułatwienie
komunikacji pomiędzy komputerami. Zazwyczaj wyglądało to tak:
•
•
Serwer (czyli program oferujący usługi, np. drukowania) przez cały czas nasłuchuje na
wybranym porcie, czy ktoś się z nim nie łączy.
Klient (czyli program który potrzebuje jakiejś usługi od serwera na innym
komputerze) nawiązuje z nim łączność poprzez sieć komputerową.
•
•
Klient wysyła swoje dane we wcześniej ustalonym przez programistów klienta i
serwera formacie.
Serwer realizuje usługę i odsyła potwierdzenie lub kod błędu.
Protokoły powyŜsze same zapewniają cały powyŜszy mechanizm, ukrywając go przed
klientem. MoŜe on nawet nie wiedzieć, Ŝe łączy się z innym komputerem - z punktu widzenia
programisty zdalne wywołanie procedury serwera wygląda jak wywołanie dowolnej innej
procedury z programu klienta.
80. Zastosowania i operacje wykonywane na strukturach XDR.
XDR - External Data Representation
XDR – ma za zadanie zniwelować róŜnice w reprezentacji typów danych w róŜnych
maszynach.
RPC zawiera funkcje słuŜące do kodowania i dekodowania typów prostych,
łańcuchów znaków, tablic, unii i wskaźników języka C w standardzie XDR.
Dane są zapisywane/odczytywane z potoku XDR tj. strumienia bajtów.
Potok XDR – sposób przekazywania zakodowanych danych
Dane są zapisywane w kwantach 4-bajtowych. (znowu te kwanty ☺)
Dane w potoku znajdują się w kolejności wywołań funkcji je kodujących.
Nie ma moŜliwości testowania typów danych w potoku – kolejność dekodowania
musi odpowiadać kolejności kodowania.
Funkcje kodujące/dekodujące – filtry XDR.
Filtry XDR – czyli te funkcje kodujące/dekodujące
Operacje kodowania i dekodowania są wykonywane przez te same funkcje.
Pierwszym argumentem filtru XDR jest zawsze wskaźnik na strukturę reprezentującą
potok XDR.
Liczba i typy pozostałych argumentów zaleŜą od typu kodowanych danych.
Źródła danych potoków XDR
Deskryptor pliku:
– kodowanie – zapis do wskazanego pliku,
– dekodowanie – na odczycie z pliku,
– tworzenie potoku – funkcja xdrstdio_create.
Obszar pamięci operacyjnej:
– kodowanie – zapis do pamięci od wskazanego adresu,
– dekodowanie – odczyt z pamięci,
– tworzenie potoku – funkcja xdrmem_create.
Dowolne źródło danych – poprzez dostarczone z zewnątrz funkcje zapisu i odczytu:
– kodowanie – wywołanie funkcji zapisującej dane,
– dekodowanie – wywołanie funkcji dostarczającej dane,
– tworzenie potoku – funkcja xdrrec_create
Tryb działania potoku
Obowiązkowym parametrem funkcji tworzenia potoku jest tryb, w jakim będzie
pracował potok XDR:
– XDR_ENCODE – do kodowania danych,
– XDR_DECODE – do dekodowania danych,
– XDR_FREE – do zwalniania pamięci przydzielonej podczas dekodowania.
Nagłówki filtrów XDR
Nagłówki filtrów dla typów prostych języka C:
bool_t xdr_type(XDR *pStream, type *pObject);
gdzie type jest jednym z typów: char, int, long, float, double, void lub enum.
Argument pObject wskazuje na kodowaną bądź dekodowaną zmienną.
Podobnie wyglądają nagłówki filtrów dla łańcuchów znaków, tablic, unii i
wskaźników (mogą one mieć większą liczbę argumentów, w zaleŜności od danego
typu).
Kodowanie struktur
• Dla wszystkich pól struktury, w kolejności definiowania wywoływane są odpowiednie filtry.
• Brak uniwersalnego filtru dla struktur.
• Definicji struktur dokonuje się w języku RPC.
• rpcgen – program automatycznie generujący odpowiednie filtry dla struktur:
– tworzy plik nagłówkowy z definicjami struktur w języku C,
– oraz plik z kodem źródłowym stosownych filtrów.