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
Sie Glauben Sie nicht, dass, wenn man bedenkt, dass die Architektur vertikal geschnitten werden sollte, dies eine Spaghetti-Architektur schaffen würde? – iwayneo
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
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