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.