2009-09-17 14 views
45

Was ist der Unterschied zwischen einem Repository und einem Service? Ich verstehe es nicht.Unterschied zwischen Repository und Service?

Ich spreche über Datenzugriff über eine Datenzugriffsschicht, in der Regel mit LINQ zu SQL.

Sehr oft sehe ich Repositories mit einfachen CRUD-Methoden und Services mit mehr geschäftsspezifischen Methoden.

Wir können this Blogpost als ein Beispiel nehmen. Wenn man sich die unteren Schnittstellen anschaut (Images), hat er zwei Repositories und zwei Services. Woher weiß man, wo man hinlegt?

Wie ich schon sagte, scheint Repositories eher für CRUD-ähnliche Operationen und Services mehr geschäftlich orientiert zu sein.

Dank

+0

Können Sie kalalisieren? In welchem ​​Kontext? Wie bei den meisten Wörtern hilft auch der Kontext, in dem diese Wörter verwendet werden, die Bedeutung zu definieren. – David

+2

Hinweis: Ich spreche nicht über Webdienste oder etwas hier. Ich spreche von Datenzugriff über eine Datenschicht. – alexn

Antwort

45

Ein Repository ist im Wesentlichen eine Fassade für Persistenz die Sammlung Stil Semantik verwendet (Hinzufügen, Aktualisieren, Entfernen), um den Zugriff auf Daten/Objekte zu ermöglichen. Es ist eine Möglichkeit, die Art und Weise zu trennen, wie Sie Daten/Objekte vom Rest der Anwendung speichern.

Ein Service liefert Koordination oder andere "Services", die für den Betrieb Ihrer Anwendung erforderlich sind. Sie unterscheiden sich sehr darin, dass Dienste normalerweise nicht wissen, wie sie auf Daten aus der Persistenz zugreifen können, und in der Regel nur auf Zugriff auf Daten/Objekte für Dienste, die Sie möglicherweise haben.

+5

Ich würde sagen, dass ein Repository eine Art von Service ist, der für den Datenzugriff verwendet wird. –

+1

Das ist eine feine Definition in dem Sinne, dass fast alles, was wir schreiben, ein "Service" auf irgendeiner Ebene ist, aber es verliert die grundlegende Absicht, dass ein Repository eine * Sammlung * von Objekten sein soll. – jlembke

+2

Wenn Sie Unit-Testing durchführen, ist es vielleicht klarer, Repositories als minimale Abstraktion zu betrachten, um das Spott zu minimieren, der benötigt wird, um eine Datenbank zu vermeiden. –

9

ich als ersten Versuch, im allgemeinen Sinne sagen würde (bis Sie mehr Kontext geben, wenn Sie eine haben):

  • ein Repository ist, wo Sie einige globale Objekte platzieren , später zu verwenden. ein
  • Service ist ein Business-Logik-Code, explizit gemacht (und idealerweise von der Präsentationsschicht getrennt sind, und Datenbankschicht?)
70

Im Repository werden die Daten gespeichert. Der Service manipuliert die Daten.

In einem realen Situation Vergleich, wenn Ihr Geld in einem Tresor in einer Bank gespeichert ist, ist der Tresor das Repository. Der Kassierer, der einzahlt, abzieht, usw. ist der Service.

+2

Danke für diese Antwort! Einfach und prägnant. – alexn

+0

stimmte mit dem obigen Kommentar überein! Liebe auch die Erklärung der realen Welt! – Kleigh

Verwandte Themen