2011-01-11 12 views

Antwort

3

Definitiv ja. Dieses SOA-Muster wird im Allgemeinen als Choreographie bezeichnet, bei der ein Webdienst die Nachricht verarbeitet und sie dann an eine andere Verarbeitungspipeline weitergibt. Google es und Sie werden einige gute Referenzen finden.
Ein weiterer Fall kann mehr technischen Grund, wie Routing, wo Sie Frontend-Webdiensten, die Routen Ihre messaged auf verschiedene Dienste Backend basierend auf Sicherheitspolitik, Inhalt, andere Technologie oder Transportprotokoll usw. brücken

5

Ich kann aus irgendeinem Grund nicht, warum nicht. Ich kann mir mehrere Gründe vorstellen, warum ein Dienst einen anderen Dienst anrufen könnte. Ich habe mehrere Services entwickelt und implementiert, die dies tun. Ich kenne auch andere Architekturen, die ein solches System aufbauen.

+0

Sie Glauben Sie nicht, dass, wenn man bedenkt, dass die Architektur vertikal geschnitten werden sollte, dies eine Spaghetti-Architektur schaffen würde? – iwayneo

+0

Ich denke, wenn Sie Sägen vertikal durch Ihre Server laufen, haben Sie andere Probleme zu bewältigen. Ich denke auch, Pasta wird schlecht für die Interna sein. Haben Sie konkrete Beispiele dafür, welche Probleme Ihrer Meinung nach auftreten können? – Mark

+0

ein Problem, das ich habe ist, dass zum Beispiel wenn ich auf meiner Website, rufe ich einen WCF-Dienst, der einen WCF-Dienst ruft, die möglicherweise einen WCF-Dienst anrufen könnte ... usw. usw. – iwayneo

0

Denken Sie über das architektonische Ziel der "Trennung von Anliegen" nach. anstatt jeder Dienstleistung, die weiß, wie man alles macht, kann sie sich auf andere spezialisierte Dienstleistungen für geteilte Stücke der Funktionalität verlassen

+0

Dem stimme ich überhaupt nicht zu. Einer der Kernpunkte der Serviceorientierung ist, dass Services autonom sind. Sie erstellen Abhängigkeiten von anderen Webdiensten, wenn Sie sich auf andere spezialisierte Dienste für gemeinsame Funktionen verlassen. – user1431072

0

Ich habe ein anderes Szenario. Was ist, wenn Sie Service Level Clustering in Ihrer SOA implementieren möchten? Beispiel: Der Persistenzdienst befindet sich auf einem Computer und ist für die Verarbeitung aller Persistenzaufgaben im Cluster zuständig. Auf anderen Rechnern, die Persistenzfunktionen benötigen, müssen Sie sich nur mit dem betreffenden Rechner verbinden (Ignorierfaktor).

Wenn der Benutzerdienst während der Anmeldung eine Instanz des Persistence-Dienstes direkt hat, können Sie Service Level Clustering nicht implementieren.

Wir haben unsere SOA Middleware und ich rief Service von einander direkt an. Als wir Service Level Clustering mit JMS/ActiveMQ implementierten, sahen wir uns jedoch mit dem Problem dieser verbundenen Dienste konfrontiert.

3

Die Antwort auf diese wie immer "es kommt darauf an ..." lass mich erklären, was ich meine.

Der Aufruf eines anderen Dienstes in einer SOA ist natürlich völlig akzeptabel, es ist das Herzstück von SOA, aus bestehenden Diensten neue Dinge zusammenstellen zu können.

Der wichtigere Teil ist, wie Sie die Dienste aufrufen. Betrachten Sie ein SOA-System, bei dem mehrere Dienste in einem Call-Chain-Call zusammenarbeiten, wobei jeder den anderen im Transaktionsbereich anruft. Dies ohne eine sorgfältige Planung zu tun, wird sich massiv auf die Systemleistung auswirken. Dieselbe Anrufkette, die unter Verwendung von gut partitionierten Diensten entworfen wurde, die auf die richtige Arbeitseinheit beschränkt sind, leidet weniger.

Betrachten System Robustheit, in einer typischen Architektur ein Service wird tendenziell beliebter als andere und landet mit vielen anderen Diensten, die es nennen. Ein Ausfall dieses einen Dienstes bringt das gesamte System zum Absturz, weil alle anderen Dienste von dem Anruf zu diesem einen Dienst abhängig sind.

Betrachten Sie den Unterschied zwischen synchronen und asynchronen Aufrufen, wann verwenden Sie was? Das ist die Auswirkung von jedem?

Wie entwerfen und partitionieren Sie Dienste, um die Kosten für die Überschreitung der Dienstgrenze bei jedem Anruf zu begrenzen?

Viele Fragen, aber wenn Sie sich umsehen gibt es viele Orte, um Antworten zu finden, schlage ich vor, damit zu beginnen.

Ich würde vorschlagen, Sie lesen Artikel von Thomas Erl und Roger Sessions, dies wird Ihnen einen festen Griff auf was SOA ist alles geben.

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

Verwandte Themen