2011-01-11 8 views

Odpowiedz

3

Zdecydowanie tak. Ten wzorzec SOA jest zwykle nazywany układem choreograficznym, w którym jedna usługa sieciowa przetwarza, a następnie przekazuje wiadomość do innej, w dół do potoku przetwarzania. Google to i znajdziesz kilka dobrych referencji.
Innym przypadkiem może być powodem bardziej techniczny jak routing, gdzie trzeba webservices frontend, który kieruje swój messaged do różnych usług zaplecza w oparciu o politykę bezpieczeństwa, treści, most inną technologię lub protokołu transportowego itd

5

nie mogę wymyślić żadnego powodu, dlaczego nie. Mogę wymyślić wiele powodów, dla których usługa może zadzwonić do innej usługi. Opracowałem i wdrożyłem wiele usług, które to umożliwiają. Jestem również świadomy innych architektur, które tworzą tego rodzaju system.

+0

ci nie sądzę, że biorąc pod uwagę, że architektura powinna być odpowiednio wycięta w pionie, stworzy to architekturę spaghetti? – iwayneo

+0

Myślę, że jeśli uruchomisz piły pionowo przez swoje serwery, będziesz miał inne problemy. Uważam też, że makaron będzie zły dla wewnętrznych elementów. Czy masz konkretne przykłady problemów, które Twoim zdaniem mogą się pojawić? – Mark

+0

Mam jeden problem, na przykład jeśli na mojej stronie internetowej, wywołuję usługę wcf, która wywołuje usługę wcf, która może potencjalnie wywoływać usługę wcf ... itd. Itd. – iwayneo

0

pomyśl o architektonicznym celu "rozdzielenia spraw". zamiast każdej usługi, która wie, jak zrobić wszystko, może polegać na innych wyspecjalizowanych usługach dla udostępnionych elementów funkcjonalności.

+0

Nie zgadzam się z tym w ogóle. Jedną z głównych zasad Orientacji Serwisu jest to, że usługi są autonomiczne. Tworzysz zaległości w innych usługach internetowych, jeśli "polegasz" na innych wyspecjalizowanych usługach w celu dzielenia się funkcjami. – user1431072

0

Mam inny scenariusz. Co się stanie, jeśli chcesz wdrożyć tworzenie klastrów na poziomie usług w swojej architekturze SOA? Na przykład, powiedzmy, że usługa utrwalania znajduje się na jednym komputerze i jest odpowiedzialna za obsługę wszystkich zadań trwałości w klastrze. Tak więc, na innej maszynie, która potrzebuje funkcji trwałości, należy połączyć się tylko z tą maszyną (ignoruj ​​czynnik fail over).

Teraz podczas logowania, jeśli usługa użytkownika ma bezpośrednio instancję usługi Persistence, nie będzie można wdrożyć klastrowania na poziomie usługi.

Posiadamy nasze oprogramowanie pośrednie SOA i nazwałem usługę bezpośrednio od siebie nawzajem. Ale kiedy wdrożyliśmy klastry na poziomie usług za pomocą JMS/ActiveMQ, stanęliśmy przed problemem tych połączonych ze sobą usług.

3

Odpowiedź na to jest tak zawsze "to zależy ..." pozwól mi wyjaśnić co mam na myśli.

Wywołanie innej usługi w architekturze SOA jest oczywiście całkowicie do przyjęcia, w centrum SOA leży możliwość tworzenia nowych elementów z istniejących usług.

Ważniejszą częścią jest to, jak wywołuje się usługi, należy rozważyć system SOA, w którym wiele usług współpracuje z każdym łańcuchem wywołań, nawiązując połączenie z innymi w zakresie transakcji. Robienie tego typu rzeczy bez dokładnego planowania będzie miało ogromny wpływ na wydajność twojego systemu. Ten sam łańcuch wywołań, zaprojektowany z wykorzystaniem dobrze podzielonych na partycje usług, o zasięgu w odpowiedniej jednostce pracy, jest mniejszy.

Rozważmy solidność systemu, w typowej architekturze jedna usługa staje się bardziej popularna niż inne i ląduje na wiele innych usług, które ją nazywają. Awaria tej jednej usługi obniża cały system, ponieważ wszystkie inne usługi są zależne od połączenia z tą jedną usługą.

Rozważ różnicę między połączeniami synchronicznymi i asynchronicznymi, kiedy używasz czegoś? To jest wpływ każdego?

W jaki sposób projektujesz i dzielisz usługi w celu ograniczenia kosztów przekraczania granicy usługi przy każdym połączeniu?

Wiele pytań, ale jeśli się rozejrzysz, jest wiele miejsc, w których można znaleźć odpowiedzi, sugeruję zacząć od tych.

Proponuję przeczytać artykuły Thomasa Erla i Rogera Sessions, to da ci mocną odpowiedź na temat tego, czym jest SOA.

Building a SOA

SOA Design Pattern

Achieving integrity in a SOA

Why your SOA should be like a VW Beetle

SOA explained for your boss

WCF Service Performance