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 Adapter zamiast POA Protokół ICE Bezpieczeństwo Zarządzanie wersjami Komunikaty asynchroniczne
SLICE Specification 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