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."