Internet Communications Engine

Z Wikipedii, wolnej encyklopedii

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 | edytuj kod]

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 | edytuj kod]

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 | edytuj kod]

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 | edytuj kod]

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 | edytuj kod]

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 | edytuj kod]

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 | edytuj kod]

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 | edytuj kod]

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 | edytuj kod]

SOAP[edytuj | edytuj kod]

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 | edytuj kod]

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 | edytuj kod]

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 | edytuj kod]

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 | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]