Internet Communications Engine
Internet Communications Engine, w skrócie ICE – 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
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
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
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
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
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
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
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
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
SOAP
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
Osobny artykuł: Common Object Request Broker Architecture.
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
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
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ż
- Abstract Syntax Notation One (ASN.1)
Linki zewnętrzne
- zeroc.com
- ACM Queue article on using ICE in game development. acmqueue.com. [zarchiwizowane z tego adresu (2007-09-27)].