Internet Communications Engine

Internet Communications Engine, w skrócie ICE, to protokół zdalnego wywoływania procedur i obiektowe oprogramowanie pośredniczące stworzone przez ZeroC i podwójnie licencjonowane jako GNU GPL z możliwością wykupienia licencji komercyjnej. Twórcy założyli stworzenie rzeczywistego systemu bez przesadnej złożoności jednak cechującego się wysoką wydajnością i skalowalnością. Systemu można używać na różnorodnych platformach, takich jak: C++, Java, .NET, Visual Basic, Python, Ruby oraz PHP, jak również na większości głównych systemów operacyjnych takich jak Linux, Solaris, Windows i OS X. Powstała również wersja ICE o nazwie Ice-e, która jest przeznaczona dla telefonów komórkowych.

Jak sama nazwa wskazuje, middleware (oprogramowanie pośredniczące) może być używane dla aplikacji internetowych bez konieczności korzystania z protokołu HTTP i jest w stanie przejść przez zapory sieciowe w przeciwieństwie do większości innych programów tego typu.

ICE i CORBA edytuj

ICE cechuje podobieństwo do CORBA, został stworzony przez kilku developerów CORBA włączając w to Michi Henninga. Od CORBA różni go to, że jest dużo mniejszy i mniej rozbudowany. Według danych ze strony producenta jest to zasługą stworzenia tego systemu przez kilku doświadczonych programistów, bez negatywnych skutków ‘tworzenia przez komitet’.

Składniki ICE edytuj

ICE to zestaw komponentów podobnych jak w CORBA, które zawierają zdalne wywołanie obiektów (object-oriented remote-object-invocation), replikację, przetwarzanie siatkowe (Grid Computing), poprawną pracę mimo usterek (failover), równoważenie obciążenia (load-balancing), przechodzenie zapory (firewall-traversals), oraz serwisy pozwalające na publikację i subskrypcję usług (publish-subscribe services). Aby uzyskać dostęp do tych usług, aplikacje są powiązane z biblioteką uzupełniającą lub zestawem, który jest generowany ze składni niezależnego języka IDL – jak na przykład SLICE.

IceStorm edytuj

IceStorm jest obiektowo zorientowanym frameworkiem pozwalającym na publikację i subskrypcję, który również wspiera standardy jakości usług QoS. W przeciwieństwie do innych frameworków tego typu (takich jak np. niżej wspomniane TIBCOs Rendezvous, czy SmartSockets) treść wiadomości składa się z obiektów dobrze zdefiniowanych klas, a nie tekstu strukturalnego.

IceGrid edytuj

IceGrid to zestaw ram, które dostarczają zorientowanego obiektowo równoważenia obciążenia, obsługi błędów, wykrywania obiektów, oraz rejestru usług.

IcePatch edytuj

IcePatch ułatwia rozmieszczenie oprogramowania opartego na ICE. Może skorzystać z IcePatch na przykład użytkownik, który chce wdrożyć nową funkcjonalność i / lub poprawki do kilku serwerów.

Glacier edytuj

Glacier jest to usługa stworzona na podstawie proxy, umożliwiająca komunikację przez zapory sieciowe, co pozwala nam tworzyć ICE silnika komunikacji internetowej.

IceBox edytuj

IceBox jest podobnym w architekturze do SOA kontenerem usług wykonywalnych, implementowanym w bibliotekch.dll lub.so. Jest to wygodniejsza alternatywa w porównaniu do budowania wszystkich wykonań dla każdego serwisu.

Slice edytuj

Slice jest formatem plików należącym do firmy ZeroC, który programiści używają niezależnie od języka do edytowania deklaracji i definicji klas, interfejsów, struktur i wyliczeń. Pliki definicji Slice stanowią punkt wyjścia do procesu wytwarzania procedur stub. Stub z kolei jest powiązaniem aplikacji z serwerami, które powinny komunikować się ze sobą w oparciu o interfejsy i klasy zadeklarowane lub określone przez definicje Slice.

Niezależnie od CORBA, klasy i interfejsy wspierają dziedziczenie i klasy abstrakcyjne. Dodatkowo Slice dostarcza opcje konfiguracji w postaci makra i atrybutów, bezpośrednio do procesu generowania kodu. Przykładem jest dyrektywa do generowania pewnego szablonu STL list<double> w zamian domyślnego, który służy do tworzenia szablonu STL vector<double>.

Porównanie z innymi protokołami typu middleware edytuj

SOAP edytuj

ICE wypada korzystnie w porównaniu do SOAP, jego główną zaletą jest to, iż jest bardziej zorientowana obiektowo. Inną ważną zaletą jest to, że oferuje znacznie lepsze wyniki zarówno pod względem przepustowości, jak i obciążenia procesora. To dlatego, że SOAP oparty jest na HTTP i XML, wymagających analizy, a Ice wykorzystuje binarny protokół zaprojektowany dla wysokiej wydajności i niskiej szczegółowości. Jednakże ICE może nie oferować podobnej wydajność lub ścisłości zwartości, podczas gdy komunikaty SOAP są przesyłane za pomocą bardziej efektywnego transportu i kodowania wiadomości, takich jak SOAP/TCP, czy Fast Infoset.

CORBA edytuj

CORBA (ang. Common Object Request Broker Architecture) to technologia zapewniająca komunikację pomiędzy obiektami pracującymi w heterogenicznych (różnorodnych) systemach komputerowych. Obiekty pełniące dowolne funkcje mogą być zaimplementowane w różnych językach programowania, na dowolnej platformie sprzętowej, pod kontrolą różnych systemów operacyjnych.

TIBCO Rendezvous/EMS edytuj

Rendezvous jest dostarczonym przez TIBCO, asynchronicznym pośrednikiem typu tylko publikuj/subskrybuj, który dostarcza wiadomości tekstowe, jak również swoje własne nazwy wartości i formaty. Demon działa po stronie klienta i komunikuje się z subskrypcją procesów klienta przez łącza komunikacyjne IPC lub TCP/IP. Demon pośredniczy między procesami klienta i demonami, które obsługują serwery publikacji. Te demony wspierają komunikację przez rozsyłanie grupowe (multicast), jak również komunikację rozgłoszeniową (broadcast).

EMS to skrót od Enterprise Messaging Services i jest implementacją serwera JMS, który ma także wsparcie dla Rendezvous TIBCO.

Talarian Smartsockets edytuj

Różnice pomiędzy opisanymi powyżej Rendezvous / EMS to brak formatu payload, oraz to, że te demony te działają po stronie klienta. Zamiast tego, wiele demonów typu publikuj/subskrybuj uruchomia się gdzieś w sieci zwanej chmurą. Zapewnia to lepszą wydajność i przełączania awaryjne, ponieważ komunikacja jest rozłożona na kilka demonów naraz, demony są uruchomione w stanach niedostępnych, a klienci mogą automatycznie przełączyć się do innego demona. Chmura również wyłapuje opublikowane dane i udostępnia interfejs dla klientów do pobierania danych. Każdy klient może w związku z tym zażądać ostatnich opublikowanych danych w dowolnym czasie bez konieczności oczekiwania na źródła do publikowania danych.Tego ostatniego mechanizmu obecnie brakuje w ICE.

Zobacz też edytuj

Linki zewnętrzne edytuj