2008-09-25 8 views

Antwort

12

Für mich ist dies eine persönliche Designentscheidung, wie Sie mit Ihrem Projektdesign umgehen wollen. Zuweilen sind Datenzugriff und Datenservice ein und dasselbe. Für .NET und LINQ ist das der Fall.

Für mich ist die Data-Service-Schicht, was tatsächlich den Aufruf der Datenbank ausführt. Die Datenzugriffsebene empfängt die Objekte und erstellt sie oder ändert sie, damit die Datendienstschicht den Aufruf an die Datenbank ausführt.

In meinen Entwürfen manipuliert die Geschäftslogikschicht die Objekte basierend auf den Geschäftsregeln und übergibt sie dann an die Datenzugriffsebene, die sie formatiert, um in die Datenbank oder die Objekte aus der Datenbank zu gelangen, und die Datenserviceebene behandelt der eigentliche Datenbankaufruf

7

Ich denke, im Allgemeinen sind die beiden Begriffe austauschbar, könnten aber je nach Kontext Ihrer Entwicklungsumgebung eine spezifischere Bedeutung haben.

Ein Data Access Layer befindet sich an der Grenze zwischen Daten und der Anwendung. Die "Daten" sind einfach die vielfältigen Datenquellen, die von der Anwendung verwendet werden. Dies kann bedeuten, dass in jeder Anwendung eine wesentliche Codierung vorgenommen werden muss, um Daten aus mehreren Quellen zusammen zu ziehen. Der Code, der die erforderlichen Datenansichten erstellt, ist in einigen Anwendungen redundant.

Da die Anzahl der Datenquellen wächst und komplexer wird, müssen verschiedene Aufgaben des Datenzugriffs isoliert werden, um Details des Datenzugriffs, der Datentransformation und der Integration zu adressieren. Mit gut gestalteten Datendiensten können Business Services in der Lage sein, mit Daten auf einer höheren Abstraktionsebene zu interagieren. Die Datenlogik, die den Datenzugriff, die Integration, semantische Auflösung, Transformation und Restrukturierung behandelt, um die von Anwendungen benötigten Datenansichten und Strukturen zu adressieren, ist am besten in der Data-Services-Layer gekapselt.

Es ist möglich, die Data Services Layer noch weiter in ihre Bestandteile zu zerlegen (z. B. Datenzugriff, Transformation und Integration). In diesem Fall verfügen Sie möglicherweise über einen "Data Access Layer", der nur Daten abruft, und einen "Data Service Layer", der seine Daten über den Data Access Layer abruft und die abgerufenen Daten in die verschiedenen Objekte, die für die Daten benötigt werden, umwandelt und transformiert die Business-Service-Schicht.

0

Das Data Service Layer- Konzept in der Dokumentation WebSphere Commerce getan ist einfach:

Die Datendienstschicht (DSL) bietet eine Abstraktionsschicht für den Datenzugriff, die unabhängig von dem physikalischen Schema ist. Der Zweck der Datendienstschicht ist eine einheitliche Schnittstelle zu schaffen, für den Zugriff auf Daten, unabhängig von dem objektrelationalen Mapping-Framework (der Datendienst Fassade genannt)

Aktuell im Internet des DSL Konzept ist vor allem damit verbundene mit der SOAs (Service-orientierte Architekturen), aber nicht nur. Here wird in einem Beispiel für N-Tier-Anwendungen erwähnt.

1

Hier ist eine andere Perspektive tief aus den Schützengräben! Ein Datenzugriffsschicht ist eine Software-Abstraktionsschicht, die die Komplexität/Implementierung des tatsächlichen Erhaltens der Daten verbirgt. Die Anwendungen fragen die Datenzugriffsschicht (siehe DAO-Entwurfsmuster), "um mir das zu holen" oder "aktualisieren das" usw. (Indirection). Die Datenzugriffsschicht ist für die Durchführung implementierungsspezifischer Operationen zuständig, beispielsweise für das Lesen/Aktualisieren verschiedener Datenquellen wie Oracle, MySQL, Cassandra, RabbitMQ, Redis, eines einfachen Dateisystems, eines Caches oder sogar Delegierens an eine andere Data Service Layer .

Wenn all diese Arbeit innerhalb einer einzigen Maschine und in derselben Anwendung stattfindet, entspricht der Begriff Data Service Layer einer Service Facade (Indirektion). Es ist verantwortlich für das Warten und Delegieren von Anwendungsaufrufen an die richtige Datenzugriffsebene.

Etwas verwirrend kann in einer verteilten Computerwelt oder serviceorientierten Architektur ein Data Service Layer tatsächlich ein Webdienst sein, der als eigenständige Anwendung fungiert. In diesem Kontext delegiert die Datenservice-Schicht empfangene Upstream-Anwendungsdatenanforderungen an die korrekte Datenzugriffsebene. In diesem Fall leiten Web-Services den Datenzugriff von Anwendungen aus - die Anwendung muss nur wissen, welcher Dienst aufgerufen werden muss, um die Daten zu erhalten. Als eine Faustregel in verteilten Computerumgebungen reduziert dieser Ansatz die Anwendungskomplexität (und es gibt immer Ausnahmefälle)

Also nur um klar zu sein, verwendet die Anwendung ein DSL und eine DAL. Das DSL in der App sollte mit einer DAL in der gleichen Anwendung sprechen. DALs haben die Wahl, eine einzige Datenquelle zu verwenden oder an einen anderen Webdienst zu delegieren. Web Service DSL kann die Arbeit für diese Anfrage an die DAL delegieren. In der Tat ist es möglich, dass eine einzelne Web-Service-Anfrage eine Anzahl von Datenquellen verwendet, um auf die Daten zu antworten.

Mit allem, was aus pragmatischer Perspektive gesagt wird, ist es nur dann, wenn Systeme immer komplexer werden, mehr Aufmerksamkeit auf architektonische Muster zu richten. Es ist eine gute Übung, die Dinge richtig zu machen, aber es hat keinen Sinn, Ihre Arbeit unnötig zu vergolden. Erinnerst du dich an YAGNI? Nun, das bringt nicht mit, es kommt die Zeit, die es braucht!

Zum Schluss: Ein berühmter Aphorismus von David Wheeler lautet: "Alle Probleme in der Informatik können durch eine andere Ebene der Indirektion gelöst werden"; [1] Dies ist oft bewusst falsch zitiert mit "Abstraktionsschicht" ersetzt "Ebene der Indirektion ". Kevlin Henney folgt daraus: "... mit Ausnahme des Problems der zu vielen Ebenen der Indirektion."