2009-09-17 28 views
45

Jaka jest różnica między repozytorium a usługą? Nie wydaje mi się, że to rozumiem.Różnica między repozytorium a usługą?

Mówię o dostępie do danych przez warstwę dostępu do danych, zwykle z linq do sql.

Bardzo często widzę repozytoria z prostymi metodami CRUD i usługami z bardziej specyficznymi metodami biznesowymi.

Możemy wziąć this blogu jako przykład. Jeśli spojrzysz na interfejsy na dole (obrazy), ma on dwa repozytoria i dwie usługi. Skąd wiadomo, co umieścić?

Tak jak powiedziałem, wydaje się, że repozytoria są bardziej podobne do operacji typu CRUD i usług bardziej zorientowanych na biznes.

Dzięki

+0

Czy potrafisz dokonać kalibracji? W jakim kontekście? Jak większość słów, kontekst, w którym te słowa są używane, pomaga zdefiniować znaczenie. – David

+2

Uwaga: Nie mówię tu o usługach internetowych ani o czymś tutaj. Mówię o dostępie do danych przez warstwę danych. – alexn

Odpowiedz

45

repozytorium jest zasadniczo fasada dla wytrwałości który używa semantykę stylu Collection (Dodaj, Aktualizuj, Usuń), aby zapewnić dostęp do danych/obiektów. Jest to sposób na oddzielenie sposobu przechowywania danych/obiektów od reszty aplikacji.

Usługa zapewnia koordynację lub inne "usługi" wymagane do obsługi aplikacji. Różnią się one bardzo pod tym względem, że Usługi zazwyczaj nie wiedzą, jak uzyskać dostęp do danych z trwałości, a repozytoria zazwyczaj mają dostęp do danych/obiektów dla dowolnych usług, które możesz mieć.

+5

Powiedziałbym, że repozytorium jest rodzajem usługi, która jest używana do dostępu do danych. –

+1

To jest dobra definicja w tym sensie, że prawie wszystko, co piszemy, jest "usługą" na pewnym poziomie, ale traci podstawową intencję, że repozytorium ma być * kolekcją * obiektów. – jlembke

+2

W przypadku testowania jednostkowego może być bardziej przejrzyste myślenie o repozytoriach jako minimalnej abstrakcji w celu zminimalizowania szyderstwa potrzebnego do uniknięcia bazy danych. –

9

Powiedziałbym, jak za pierwszym razem, w sensie ogólnym (dopóki nie dać więcej kontekstu jeśli posiadasz):

  • repozytorium miejscu można umieścić kilka obiektów globalnych , do wykorzystania później.
  • serwis jest kod logiki biznesowej, wyraźnie (i idealnie oddzielony od warstwy prezentacji i bazy danych warstwy?)
70

Repozytorium jest miejscem przechowywania danych. Usługa manipuluje danymi.

W świecie rzeczywistym porównania sytuacji, jeśli pieniądze są przechowywane w sejfie w banku, sklepienie jest repozytorium. Kasjer, który depozytuje, wypłaca, itp., Jest usługą.

+2

Dzięki za tę odpowiedź! Prosty i zwięzły. – alexn

+0

zgodził się z powyższym komentarzem! Uwielbiam również wyjaśnienia z prawdziwego świata! – Kleigh

Powiązane problemy