Frage

Ich weiß, das klingt vielleicht albern, aber ich finde es schwer, die Notwendigkeit einer Dienstschicht und ihre Unterschiede mit Business-Schicht zu verstehen.

So verwenden wir asp.net Mvc 2 und Datenzugriffsschicht, die mit der Datenbank, die alle die Abfrage tut und dann haben wir die Business-Schicht, die die Geschäftslogik und Validierungen hat getan werden muß. Schließlich haben wir die Darstellungsschicht, die im Grunde alle Ansichten hat. Darüber hinaus haben wir auch einige Helfer, DTOs und Viewmodel Klassen in verschiedenen Ordnern als Teil unserer Bibliotheken. Aber ich habe versucht, über Architektur zu lesen und es scheint, dass Service-Schicht ist ein wichtiger Bestandteil einer Architektur.

Alles, was ich verstehe, ist, dass eine Dienstschicht ist etwas, das alle Funktionen aufruft. Aber ich kann nicht wirklich die Notwendigkeit der Dienstschicht in unserer Anwendung sehen? Oder es könnte schon da sein, und ich kann es nicht sehen ... Kann mir jemand erklären, mit einem Beispiel, wie eine Dienstschicht wichtig ist? Wie unterscheidet es sich von einer Business-Schicht, weil von dem, was ich gelesen habe, scheint ziemlich ähnlich? Wenn es in den ersten überhaupt notwendig? Alles, was wir zu tun versuchen, ist Architekt unsere Anwendung auf die bestmögliche Art und Weise, was auf sie Ihre Gedanken und Erfahrungen sind?

War es hilfreich?

Lösung

Es geht um die Entkopplung der App in Selbst Stücke enthalten, die jeweils durch die Forderung definiert wirklich gut einen Job zu tun.

So können Sie jede Komponente spezialisiert Design Patterns und Best Practices anzuwenden.

Zum Beispiel der Aufgabe der Business-Schicht ist die Geschäftslogik zu implementieren. Punkt. ein API freilegen entworfen von der Präsentationsschicht verbraucht wird, ist nicht seine „Besorgnis“.

Diese Rolle von unterwegs zwischen am besten durch eine Service-Schicht durchgeführt. Unter Ausklammerung dieser Spezialschicht ermöglicht es Ihnen, viel mehr spezialisierte Muster auf jede einzelne Komponente anzuwenden.

Es gibt keine Notwendigkeit Design Dinge auf diese Art und Weise zu tun, aber die gesammelte Erfahrung der Gemeinschaft zeigt, dass es in einer Anwendung führt, die viel einfacher zu entwickeln und zu pflegen, weil Sie genau wissen, was jede Komponente erwartet wird, zu tun, auch vor Sie beginnen Codierung der App.

Jede Schicht sollte wirklich gut einen Job. Die Rolle der go zwischen, dass die Service-Schicht führt ist eine solche gut definierte Aufgabe und das ist der Grund für seine Existenz: es ist eine Einheit der Komplexität ist, die auf die gleiche Art und Weise immer und immer wieder ausgelegt ist, anstatt das Rad neu zu erfinden jedes Mal, diese Rolle mit der Business-Logik zerfleischen, wo es nicht gehört. Man denke an die Serviceschicht als eine Mapping-Komponente. Es ist außerhalb der Business-Logik und gehört nicht in ihren Klassen oder in den Steuerungen auch nicht.

Auch als Ergebnis wird von der Business-Logik herausgerechnet, erhalten Sie einfacher Business-Objekte, die von anderen Anwendungen einfacher zu bedienen sind und Dienstleistungen, die das „Business“ verbraucht.

ASP.NET MVC ist nichts, wenn nicht eine Plattform, damit Sie Ihre Anwendungen als spezialisierte Komponenten schreiben.

Als Folge dieses zunehmenden Verständnis davon, wie Komponenten zu spezialisieren, entwickeln sie Programme von einer Ur-Schüssel Suppe und Spaghetti in etwas anders und fremd. Die Komplexität sie ansprechen können, während immer noch einfache Strukturen verwendet wird, nimmt zu. Evolution in Gang zu bringen. Wenn das Leben nach zu urteilen ist, hat dies gut zu sein, hält so den Ball ins Rollen.

Andere Tipps

Sie können den Begriff Architektur Astronaut interessant finden.

Der Punkt ist, werden nicht in allen diesen „Schichten“ gefangen, dass die Menschen über Bandy. Jedes Mal, wenn Sie eine weitere Schicht auf die Anwendung hatte, muss es einen Sinn darin sein.

Zum Beispiel kombinieren manche Menschen erfolgreich die Konzepte eines Data Access und Business-Logik-Schicht in einem. Es ist nicht richtig für jede Lösung, aber es funktioniert perfekt für eine Menge von ihnen. Einige Leute könnten sogar kombinieren Präsentation mit Business ... die ein Haupt ist nein nein in vielen Kreisen, aber auch hier kann für die Notwendigkeit in Frage perfekt sein.

Grundsätzlich ist das Problem, das Sie lösen soll die Struktur der Anwendung diktieren. Wenn andere Anwendungen mit Ihnen integrieren müssen, dann kann ein Service Layer hinzugefügt werden müssen. Dies könnte in Form von einfachen Web-Formen annehmen, die anderen Daten oder es könnte noch weiter gehen veröffentlichen kann voll auf Web-Service zu sein. Es könnte sogar Situationen, in denen Sie die Service-Schicht die primäre unterwegs Standort für mehrere Präsentationen sein wollen.

Sie können erhalten so kompliziert, wie Sie wollen, aber eine gute Faustregel ist es einfach zu halten, bis die Komplikationen notwendig werden.

Bei einigen Ausführungen wird die Service-Schicht nicht durch die Präsentationsschicht verwendet.

Die Dienstschicht von anderen Anwendungen aufgerufen wird, die die Geschäfts- und Datenzugriffsschichten in der Anwendung verwendet werden soll.

In einer Art und Weise, der Service-Layer ist ein anderes Front-End von der Präsentationsschicht trennen.

Sehen Sie die Architekturdiagramm hier. Der Anwender Zugriff auf die Anwendung über die Präsentationsschicht. Und die externen Systemen Zugriff auf die Anwendung über die Diensteschicht. Die Präsentationsschicht und die Diensteschicht Rede an die Anwendung Fassade in der Business-Schicht.

Als ein Beispiel von dem, was die anderen „externen Systemen“ auch sein mögen, Web-Service und WCF-Dienste rufen Sie die Service-Schicht. Einige andere Web-Anwendung könnte diese Anwendung die Service-Layer rufen in einem Web-Service-Aufruf. Dies wäre ein Weg, um sicherzustellen, dass beide Anwendungen die gleiche Geschäftslogik anwenden, und dass Änderungen an der Business-Logik hergestellt werden sowohl der Anwendungen wider.

Als Chris Lively weist darauf hin, sollte man nicht mit dem Erstellen von Schichten mitreißen. Ich würde empfehlen, nur um die Schichten zu schaffen, die in Ihrer Anwendung nützlich sein würde. Nach meiner Erfahrung ist die Notwendigkeit für eine Dienstschicht nicht häufig, aber die Notwendigkeit einer Business-Schicht ist sehr häufig.

Der Service Layer in der Regel in Form von diskreten Operationen aufgebaut ist, die für einen Client unterstützt werden muß.

Zum Beispiel kann ein Service Layer belichten, um ein Konto anlegen. Während die Business Layer bei der Schaffung eines Kontos erforderlich, um die Parameter der Validierung bestehen, Daten konstruieren Objekte beibehalten werden, etc.

Oft der Service Layer verwendet ein prozedurale oder Transaction Script Artcode das Geschäft und / oder logische Schichten orchestrieren.

Mit diesem Wissen können Sie erkennen, dass Ihre Business Layer wirklich ein Service Layer als auch. Irgendwann ist der Punkt, von dem fordern Sie diese Frage ein solcher Punkt ist, ist die Unterscheidung meist semantischen.

Aus meiner Sicht eine Service-Schicht können Sie Ihre Präsentationsschicht von Ihrem Business-Schicht isolieren, auf die gleiche Art und Weise die Geschäfts- und Datenzugriffsschicht trennt Sie von, wie Sie die Daten bestehen bleiben.

In Ihrer Business-Schicht würden Sie Dinge setzen, die Ihr ‚Geschäfts‘ schwenkbar sind. Ein erfunden (und wahrscheinlich schlecht Beispiel gedacht) wäre, dass der Ort sein, wo sagt Diskontierung Preise auf einem Produkt auftreten.

Die Service-Layer können Sie die Schnittstelle aus dem Geschäft weiter trennen. Oder auch den Swap andere Business-Schichten in Abhängigkeit von den wechselnden Szenarien des Unternehmens.

Nicht jede Anwendung benötigt man allerdings (viele Variablen in dieser Bestimmung gehen), zu viel Architektur kann Komplexitäten Ihr Team vorstellen kann nicht benötigen.

Werfen Sie einen Blick auf das, was Randy Stafford sagt über Service Layer in der „P von EAA“ Buch http://martinfowler.com/eaaCatalog/serviceLayer.html

  

Ein Service Layer definiert ein   Anwendung Grenze [Cockburn Plop]   und seine Menge der verfügbaren Operationen   aus der Perspektive der Schnittstellen   Client-Schichten. Sie kapselt die   Anwendung Geschäftslogik ,   Controlling-Transaktionen und   Koor-dinating Antworten in der   Durchführung ihrer Operationen.

Einfach. Um Ihre Geschäftslogik zu einem Client, verwenden Sie eine Service-Schicht aus. Fragen Sie sich:

Wenn die Business-Logik zu ändern, sollte der Service-Layer-Wechsel? Wenn die Antwort „nicht immer“, dann eine Service-Schicht benötigt wird.

Ich weiß, dieser Thread ist alt, aber eine nützliche Sache, die ich in der Service-Schicht getan habe, ist zu Griff-Transaktionen (Business Layer soll nicht wissen müssen, wie Rollbacks, Bestellung von Operationen zu handhaben, usw.).

Eine andere Sache, die ich getan habe, ist es verwendet, um zwischen Domain-Entitäten und DTOs zu übersetzen. Die Business-Schicht befasst sich mit dem Domain-Modell, aber ich habe die Daten zurück an die Präsentationsschicht in Form von DTOs bestanden (in einigen Fällen war es nicht praktisch die gesamte Domain-Modell an die Präsentationsschicht aus verschiedenen Gründen aussetzen), so dass die Service-Layer übernimmt diese Zuordnung.

Letztlich sehe ich die Business-Schicht als mehr feinkörnig, während die Dienstschicht gröber sein kann, dass es mehrere Operationen in der BLL und Tätigen von Anrufen innerhalb eines Service-Anrufs nennen könnte.

Ja, und ich möchte darauf hinweisen, auf auch, dass die Service-Schicht ein guter Ort für die Authentifizierung ist sowohl rollenbasierte und benutzerbasierte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top