100 likes | 249 Views
Internet Communication Engine. Maciej Górnicki. Czym jest ICE ?. ICE to nowa platforma dla oprogramowania pośredniczące pozwalająca na tworzenie rozproszonych aplikacji klient-serwer. Dostarcza prostszy i skuteczniejszy model obiektowy niż Corba.
E N D
Internet Communication Engine Maciej Górnicki
Czym jest ICE ? • ICE to nowa platforma dla oprogramowania pośredniczące pozwalająca na tworzenie rozproszonych aplikacji klient-serwer. • Dostarcza prostszy i skuteczniejszy model obiektowy niż Corba. • ICE to podejście do oprogramowania pośredniczącego oparte na Corbie, ale unikające jej słabości.
ICE vs Corba • Brak typu ‘Any’ • Ice Object Adapterzamiast POA • Protokół ICE • Bezpieczeństwo • Zarządzanie wersjami • Komunikaty asynchroniczne
SLICESpecification Language for ICE • Podobny do IDL’a • Obsługiowane typy : • Integer : short (16 bitów), int (32 bity), long (64 bity) • Float i double • Byte (8 bitów) • String (Unicode) • Object • Bool • Const • Enumeration, sequence, structure, module
Dodatkowo SLICE dostarcza nowe typy : • Dictionary – kolekcja par klucz-wartość • Klasy (class) – podobnie jak struktury są przekazywane przez wartosć. Dodatkowo pozwalają na jedno-dziedziczenie implementacji i wielo-dziedziczenie interfejsów. W przeciwieństwie do struktur mogą posiadać operacje.
Twórcy SLICE zdecydowali się na pominięcie pewnych rzeczy : • Brak typów zagnieżdżonych • Brak unii • Brak rozróżnienia typu String na narrow i wide • Brak typów anonimowych (zasady składni wymuszają, aby wszystkie typy były nazwane) • Brak parametru ‘inout’ • Brak atrybutów (tylko operacje) (!)
Protokół ICE • Różnica pomiędzy ICE i IIOP polega na zaimplementowaniu w ICE możliwości komunikacji poprzez UDP (datagramy) • Implementacja nowych możliwości na zasadzie plugin-ów (nie ma potrzeby ingerencji w kod źródłowy ICE)
Wielowątkowość • ICE w przeciwieństwie do Corby wspomaga wielowątkowość • Po stronie serwera znajduje się pula wątków (thread pool). Konfiguracja pozwala na ustawienie rozmiaru puli (pula o rozmiarze równym 1 oznacza jednowątkowość). Istnieje możliwość powoływania dodatkowych pul wątków przez serwery, co pozwala na dzielenie wykonywania żądanych przez klienta operacji na różne pule. (uniknięcie zakleszczenia/zagłodzenia wątków)
Firewall – rozwiązanie (?) • Glacier (lodowiec) jest firewall’em dla ICE – pozwala klientom i serwerom na bezpieczną komunikację poprzez firewall’a. Ruch pomiędzy klientem i serwerem szyfrowany. • Interfejs Ice::Router pozwala na przechwycenie żądania i dostarczenie go do serwera. W rzeczywistości Glacier jest implementacją tego serwisu. • Glacier powinien działać na hoście z dostępem do sieci prywatnej jak i publicznej. W pewnych przypadkach możliwe jest uruchomienie Glacier’a poza firewallem, ale preferowanym jest, aby to Glacier był firewallem dla aplikacji ICE. • Klient podłącza się do Glacier’a i wysyła żądanie tak, jakby to Glacier był serwerem. Ustanawiane jest połączenie klienckie z serwerem, przekazanie żądanie i ewentualne przekazanie odpowiedzi serwera do klienta.
Materiały • www.zeroC.com