Na wysokim poziomie odpowiedź brzmi Tak, jednak nie do końca.
SOA wymaga myślenia o systemie pod względem
- Services (dobrze zdefiniowane funkcjonalności biznesowych)
- składników (oddzielne kawałki kodu i/lub struktur danych)
- procesów (orkiestracji usług. Generalnie przy użyciu BPEL)
Możliwość tworzenia nowych usług na wyższym poziomie lub procesów biznesowych jest podstawową cechą dobrego SOA. Usługi sieciowe oparte na XML i SOAP oraz powiązane standardy są odpowiednie do realizacji SOA.
także SOA ma kilka przyjętymi zasadami - http://en.wikipedia.org/wiki/Service-oriented_architecture#Principles
- Znormalizowany Roboty budowlane - Usługi przylegają do układu komunikacyjnego, określone wspólnie przez jednego lub więcej dokumentów serwisowych opisie.
- Usługa Loose Coupling - Usługi utrzymują relację, która minimalizuje zależności i wymaga tylko, aby utrzymywali wzajemną świadomość.
- Abstrakcja usług - poza opisami w umowie o świadczenie usług, usługi ukrywają logikę przed światem zewnętrznym.
- Obsługa wielokrotnego użytku - logika jest podzielona na usługi mające na celu promowanie ponownego użycia.
- Autonomia usług - usługi mają kontrolę nad logiką, którą obejmują.
- Granularność usług - Uwzględnienie projektu w celu zapewnienia optymalnego zakresu i odpowiedniego poziomu szczegółowości funkcjonalności biznesowej w działaniu usługi.
- Bezpaństwowość usług - usługi minimalizują zużycie zasobów, odraczając w razie potrzeby zarządzanie informacjami o stanie.
- Wykrywalność usług - Usługi są uzupełniane o meta dane komunikacyjne, dzięki którym można je skutecznie wykryć i zinterpretować.
- Komponowanie usług - usługi są efektywnymi uczestnikami kompozycji, niezależnie od wielkości i złożoności kompozycji.
Architektura oparta na architekturze SOA ma mieć definicję usługi. Ponieważ usługi sieciowe RESTful nie mają definitywnej definicji usługi (podobnie jak w przypadku wsdl), system oparty na REST nie może spełnić większości z powyższych zasad.
Aby osiągnąć taki sam przy użyciu odpoczynek, trzeba by mieć relaksującego Web Services + orkiestracji (możliwe przy użyciu jakiś lekki ESB jak MuleESB lub camel)
Proszę również zobaczyć ten zasób - From SOA to REST
Dodanie tej części do wyjaśnienia poniżej komentarza -
Do komponowania procesów wymagana jest orkiestracja. To zapewnia największą korzyść z SOA.
Say masz aplikację przetwarzania zamówień z operacjami jak -
- AddItem
- addTax
- calculateTotal
- placeOrder
Początkowo został utworzony proces (używając BPEL) który używa tych operacji w sekwencji. Masz klientów, którzy korzystają z tej złożonej usługi. Po kilku miesiącach pojawia się nowy klient, który ma zwolnienie podatkowe, wtedy zamiast pisać nową usługę, możesz po prostu utworzyć nowy proces pomijając operację addTax. W ten sposób można szybciej osiągnąć funkcjonalność biznesową, ponownie korzystając z istniejącej usługi. W praktyce istnieje wiele takich usług.
Tak więc technologia BPEL lub podobne (ESB lub routing) jest niezbędna dla architektury SOA. Bez zastosowania biznesowego, SOA nie jest tak naprawdę SOA.
Krzyża pisał na moim osobistym blogu - http://blog.padmarag.com
Zobacz również nowy zasób natknąłem - REST based SOA
Czy ktoś rozważył alternatywne rozwiązania alternatywne do REST oparte na HTTP do komunikacji wewnętrznej? Na bardzo gadatliwej platformie chmury krytycznej o znaczeniu misji, REST ma również swoje wady. Działa, ale najprawdopodobniej następna ewolucja w zakresie komunikacji. Zastanawiasz się, czy jest tu ktoś, kto ma jakiś wkład w tym obszarze. Oczekując moderatora, by nie lubił tego komentarza, ale myślałem, że i tak spróbuję. :) –