Normalerweise verwende ich eine Service-Schicht, wenn ich eine ASP.NET MVC-Anwendung entwickle. Es ähnelt dem Service-Layer-Muster , das Martin Fowler in Patterns of Enterprise Application Architecture erläutert . Es kapselt Ihre Geschäftslogik und macht die Controller ziemlich dünn. Grundsätzlich verwenden die Controller die Serviceschicht, um die Domänenmodelle abzurufen, die dann in Ansichtsmodelle umgewandelt werden. Ich verwende auch das Unit of Work-Entwurfsmuster , um Transaktionen abzuwickeln, und das Repository-Entwurfsmuster , um die Datenzugriffsschicht zu kapseln, um das Testen von Einheiten zu vereinfachen und ORMs einfach auszutauschen. Diese Abbildung zeigt die typischen Ebenen, die ich in einer MVC-Anwendung verwende.
Die Serviceschicht wird in diesem Diagramm als "Anwendungs- oder Domänenschicht" bezeichnet, da die Leute verwirrt sind, wenn Sie den Begriff "Serviceschicht" verwenden. Sie neigen dazu zu denken, dass dies ein Webdienst ist. Es handelt sich tatsächlich um eine Assembly, die von Ihrer bevorzugten Webdiensttechnologie wie ASP.NET Web API oder WCF sowie von einem Controller verwendet werden kann.
Für Namenskonventionen verwende ich normalerweise etwas, das die Domäne beschreibt, gefolgt vom Dienst. Wenn ich beispielsweise eine Service-Schicht habe, die die Benutzermitgliedschaft verwaltet, hätte ich eine Klasse namens MembershipService, die alle Methoden enthält, die von Controllern und Webdiensten zum Abfragen und Bearbeiten der Mitgliedschaftsdomäne benötigt werden. Beachten Sie, dass Sie möglicherweise mehrere Domänen in derselben Anwendung haben, sodass Sie mehrere Service-Layer haben können. Mein Punkt ist hier, dass Sie nicht einen einzigen monolithischen Dienst haben müssen, der sich um die gesamte Anwendung kümmert.