Co to jest SOA?

SOA - architektura oparta na usługach (ang: Service-Oriented Architecture) jest koncepcją tworzenia systemów informatycznych, w oparciu o zdefiniowane usługi spełniające określone wymagania użytkowników.

Podstawowe cechy

  • Luźne powiązanie komponentów. Oznacza to, że dostęp do jednego systemu nie wpływa znacząco na pracę drugiego systemu, a implementacja usług jest ukryta dla aplikacji zgłaszającej zadanie do realizacji.
  • Poszczególne usługi są od siebie niezależne. Interfejsy nie przechowują danych historycznych o wcześniej obsługiwanych zadaniach i realizują swe bieżące zadania tylko w oparciu o aktualnie wymieniane z innymi modułami dane, nie korzystając z żadnych dodatkowych, ukrytych informacji historycznych lub dostarczonych przez np. operatorów.
  • Interfejsy pracują w trybie modelu RPC (z ang. zdalne wywoływanie procedur). Model ten determinuje postrzeganie interfejsu jako swego rodzaju lokalnej funkcji czy podprogramu, wywoływanych z poziomu innego programu lub aplikacji, bez dodatkowych informacji o protokole komunikacji czy typie transmitowanych danych.
  • Interfejsy bazujące na wiadomościach. Interfejsy tego typu przekazują wiadomości pomiędzy aplikacjami, korzystając z ogólnozakładowej magistrali komunikacyjnej. Magistrala ta zapewnia podstawowe usługi wymiany danych dla systemów o rozbudowanej architekturze, dzięki zaaplikowanemu mechanizmowi obsługi zdarzeń i standardowych wiadomości.
  • Wiadomości zawierają dane w formacie XML. Nie stosuje się tu plików typu flat czy specjalnych, dedykowanych interfejsów binarnych.
  • Interfejsy mogą obsługiwać dwa typy transmisji – synchroniczny i asynchroniczny. Usługi mogą być realizowane w trybie synchronicznym, tzn. generowane jest zapytanie i następnie oczekiwana jest odpowiedź. Alternatywnym rozwiązaniem jest komunikacja asynchroniczna, gdzie aplikacja generuje zapytanie i nie czekając na odpowiedź, realizuje kolejne zadania, a odpowiedź przychodzi później.

TECHNOLOGIE

Architektura SOA może być implementowana na wielu różnych platformach i z użyciem różnych technologii.

  • SOAP (ang. Simple Object Access Protocol) jest protokołem komunikacyjnym w którym wykorzystywany jest XML (kodowanie wywołań) oraz protokół komunikacyjny (zazwyczaj HTTP);
  • RPC - Zdalne wywołanie procedury (ang. remote procedure call) – protokół służący do zdalnego wywoływania procedur. Aktualnie protokół ten jest coraz rzadziej stosowany i ustępuje miejsca bardziej zaawansowanym protokołom takim jak: CORBA, XML-RPC, czy JSON-RPC.
  • REST (ang. Representational State Transfer) - rodzaj architektury, w którym wykorzystane są m.in. jednorodny interfejs, bezstanową komunikację, zasoby, reprezentacje, hipermedia
  • DCOM (ang. Distributed Component Object Model) - technologia należąca do firmy Microsoft służąca do budowania komponentów oprogramowania oraz komunikacji pomiędzy tymi komponentami w sieci.
  • CORBA (ang. Common Object Request Broker Architecture) - standard opracowany przez OMG (Object Management Group) w celu ułatwienia komunikacji pomiędzy obiektami w systemów opracowanych na niejednorodnych platformach.
  • OPC-UA (OPC Unified Architecture) - protokół komunikacyjny rozwijany przez OPC Foundation. Opiera się się o znane protokoły (TCP/IP, HTTP, SOAP) i umozliwia przesyłania danych przy użyciu różnego rodzaju formatów (XML, formatu binarnego). Serwery OPC udostępniają usługi służące do komunikacji.
  • Web Services - usługa internetowa świadczona za pośrednictwem internetu. Dane przekazywane są zazwyczaj przy użyciu protokołu HTTP z wykorzystaniem XML-a
  • DDS (ang. Data Distribution Service) - standard rozwijamy przez Object Management Group (OMG), którego celem jest umożliwienie skalowania, niezależności, wysokiej wydajności oraz międzyoperacyjną wymianę danych pomiędzy nadawcami i odbiorcami.
  • Java RMI (ang. Remote Method Invocation) - zdalne wywołanie metod - mechanizm pozwalający na zdalne wywoływanie metod obiektów, które mogą znajdować się na innych wirtualnych maszynach Java, na innych komputerach.
  • WCF (ang. Windows Communication Foundation) - integruje oraz ujednolica technologie Microsoftu służące do komunikacji (m.in. .Net Remoting, COM+, MSMQ, ASMX)
  • Apache Thrift – język opisu interfejsu (IDL - Interface Description Language), używany do definiowania i tworzenia obsługi wielu języków
  • SORCER - zorientowane na usługi środowisko programistyczny zaimplementowane w Javie

ZALETY SOA

  1. Możliwość ponownego (wielokrotnego) użycia zaimplementowanych usług przy wprowadzaniu nowych funkcjonalności.
  2. Łatwa skalowalność rozwiązań zbudowanych zgodnie z architekturą SOA
  3. Możliwość użycia stworzonej usługi niezależnie od konkretnej platformy i technologii
  4. Uproszczenie zarządzania zmianami.
  5. Uproszczenie stopniowego rozwoju złożonych systemów
  6. Możliwość zróżnicowania dostawców poszczególnych komponentów oprogramowania

Przydatne linki