5 Stimmen

Wie lässt sich der Grundsatz der einzigen Zuständigkeit in großen wcf-Diensten anwenden?

Im Moment nutzen wir etwa 7 Dienste. Sie sind ziemlich groß.

Hat jemand Erfahrung mit dem Prinzip der einzigen Verantwortung und WCF-Diensten? Bedeutet dies, dass man am Ende viele kleine Verträge haben wird? Wenn ja, wie verwalten Sie diese in Ihrer Anwendung?

7voto

Szymon Rozga Punkte 17510

Ich glaube, Sie verwechseln die alleinige Verantwortung mit der Schnittstellentrennung.

Aus der Perspektive der Kunden-/Dienstleistungsschnittstelle sollten Sie Ihre Verträge schlank und einfach halten. Im Folgenden finden Sie ein Beispiel dafür.

Was die SRP-Seite betrifft, so sollte diese vollständig in der Dienstimplementierung enthalten sein und der Kunde sollte nichts davon wissen. Wenn Ihr Dienstcode zu umfangreich ist, teilen Sie ihn in Klassen auf. Dann sollte Ihr Dienstcode, zumindest anfangs, als Fassade fungieren und alle Aufrufe an die entsprechenden Objekte weiterleiten. Später haben Sie die Möglichkeit, Ihren Dienst in mehrere Dienste aufzuteilen. Beachten Sie jedoch, dass sich SOA und objektorientiertes Design zwar überschneiden, aber dennoch getrennt sind und unterschiedliche Anforderungen haben.

Beispiel für die Trennung von Schnittstellen: Wir haben hier bei der Arbeit einen Dienst, mit dem wir verschiedene Funktionen für einige Geschäftsobjekte ausführen. Der ursprüngliche Dienst hatte eine Schnittstelle. Als er wuchs, stellten wir fest, dass wir drei Methodenfamilien hatten: Datenobjektpersistenz, Geschäftsaktualisierungen, Geschäftsanalyse. Wir haben uns in drei Verträge aufgeteilt. Unser Client/Dienst implementiert alle drei, also mussten wir nur den Vertrag in drei Teile aufteilen und zwei zusätzliche Endpunkte in unserer WCF-Konfiguration einrichten. Ganz einfach.

Ich hoffe, das hilft.

1voto

Jomit Punkte 596

Ich schlage vor, dass Sie sich diesen Podcast auf hanselminutes anhören:

SOLID-Prinzipien mit Onkel Bob - Robert C. Martin

Das würde helfen, die Dinge besser zu verstehen. . .

1voto

Thurein Punkte 6135

Sie könnten das Fassadenmuster für den Webdienst anwenden, der die Schnittstelle zum Client bildet, und in Ihrem Implementierungscode können Sie eine einzige Verantwortung übernehmen, um ihn wartbar zu machen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X