2010-06-14 14 views
7

Po prostu staram się pogodzić z odpowiedzialnością warstwy usługi i warstwy repozytorium podczas zapisywania obiektu w moim magazynie danych trwałości.Obowiązki warstw usługi i repozytorium

Mój obecny pod kondycji jest taka:

W moim kontrolera I stworzyli „Uwaga” obiekt z danymi przedstawionymi przez użytkownika (z formy). Następnie użytkownik wywołuje "Zapisz" w "NoteService" (który jest tam przez wtrysk zależności).

W ramach metody "Zapisz" w "NoteService" przeprowadzam moją walidację logiki biznesowej, a następnie przekazuję obiekt "Note" do metody "Save" w "NoteRepository".

Metoda "Zapisz" w "NoteRepository" następnie sprawdza, czy istnieje istniejący klucz podstawowy na tym obiekcie, a jeśli tak, pobierz ten obiekt z bazy danych i zaktualizuj jego właściwości za pomocą przejętego obiektu "Uwaga" i jest następnie zapisywany z powrotem do bazy danych. Jeśli nie ma klucza podstawowego, obiekt jest po prostu zapisywany w bazie danych, a następnie wraca do usługi za pomocą nowo utworzonego klucza podstawowego.

+0

Myślę, że to dobrze, co mówisz, jakie jest pytanie? – uvita

+0

Moje pytanie było w zasadzie to, jak to zrobić, tzn. Czy jest to poprawny wzorzec/przepływ pracy – Gazeth

Odpowiedz

4

Twoje rozdzielenie spraw brzmi całkiem nieźle. Stosujemy ten sam wzorzec, ale zwykle dodajemy jeszcze jedną warstwę do warstwy repozytorium. Nazywamy to warstwą domeny i wykonujemy tam całą naszą logikę biznesową. Nasza warstwa usługowa jest tylko przejściem do naszej domeny, na wypadek gdybyśmy musieli opublikować dowolne z naszych usług na ESB w przyszłości.

Największą korzyścią z tego, co robisz, nie jest zaabsorbowanie całej firmy i logiki DB w kontrolerze, które wiele osób robi. Zawsze chcesz, aby twoje kontrolery były tak lekkie, jak to tylko możliwe, jeśli naprawdę chcesz podążać za MVC.