Geschäftslogik gegen Serviceschicht

9

Ich habe diese Antwort gelesen: https://softwareengineering.stackexchange.com/a/234254/173318 Bitte korrigieren Sie mein Verständnis.

Geschäftsregeln beziehen sich auf die Liste der Geschäftsschritte in der realen Welt (keine Codes).

Geschäftslogik bezieht sich auf den Prozess der Umwandlung der Geschäftsregeln in Codes und diese Art von Codes, die als "Geschäftslogik" bezeichnet werden.

Und wofür wird die Service-Schicht verwendet? Wenn ich diese Antwort lese, klingt das mit der Geschäftslogik https://stackoverflow.com/a/4817935/4190539 nicht anders

Ist die Serviceschicht ein Ort, an dem sich Geschäftslogik und Repository treffen?

Kakashi
quelle
1
"Service Layer" ist ein Oberbegriff, der beliebig sein oder enthalten kann. In dieser von Ihnen zitierten SO-Frage ging es um die "Service-Schicht in ASP.NET MVC", die dem Begriff einen spezifischeren Schwerpunkt gibt. Sprechen Sie absichtlich über Letzteres? Oder haben Sie den Unterschied einfach verpasst?
Doc Brown
das habe ich bisher bekommen. aber ich würde gerne Ihre Erklärung über sie alle hören.
Kakashi

Antworten:

11

"Service Layer" ist ein architektonischer Begriff. Es bezieht sich auf einen Teil des Systems, der sich irgendwo in der Mitte einer mehrschichtigen Architektur befindet , unterhalb der Benutzerinteraktionsschicht, aber oberhalb der Datenzugriffsschicht.

Business - Logik kann implementiert in der Dienstschicht, wodurch die Durchsetzung von Geschäftsregeln.

Beachten Sie jedoch, dass es Fälle gibt, in denen Geschäftslogik in anderen Ebenen endet. Beispielsweise werden einige Geschäftsregeln in der Benutzerinteraktionsschicht durchgesetzt, um die Benutzererfahrung zu verbessern (z. B. in Javascript geschriebene Validatoren, damit Sie sie ohne Roundtrip zum Server überprüfen können). In diesem Fall dupliziert die Serviceschicht normalerweise die Durchsetzung.

Andere Geschäftsregeln können nur auf Datenbankebene durchgesetzt werden, z. B. wenn Parallelitätsprobleme (stellen Sie sich eine Anwendung vor, in der Sie ein Bibliotheksbuch auschecken können) oder Leistungsprobleme (stellen Sie sich ein Programm vor, das die jährliche Provision eines vielbeschäftigten Verkäufers basierend auf a berechnet) komplexe Gebührenstruktur).

John Wu
quelle
Ist es in Ordnung, wenn ich ein Dienstverzeichnis habe und Klassen als Orte enthält, an denen ich die Geschäftslogik platziere und dort das Repository, einen anderen Dienst, die Validierung einfüge?
Kakashi
Ja, es ist natürlich, andere Dienste, einschließlich Datenzugriff, in eine Dienstschicht einzufügen - sie muss Daten irgendwie speichern, und wenn sie richtig geschrieben sind, weiß sie nicht, wie sie es selbst tun sollen.
John Wu
Repository darf keinen Business Code enthalten, oder? es bedeutet, dass das Repository frei von Validierung, Filter oder anderen Strijg-Manipulationen sein muss, wie zum Beispiel strtolower?
Kakashi
Nicht unbedingt (ich habe Ihnen bereits zwei Beispiele in meinem Beitrag gegeben), aber es ist eine gute Praxis, so viel Geschäftslogik wie möglich in die Service-Schicht zu verschieben.
John Wu
Oh, okay, übrigens, haben Sie Repository-Mustercode, den ich sehen kann?
Kakashi