Dlaczego w niektórych ramach warstwa logiczna nazywa się „Model”, podczas gdy w niektórych nazywana jest „Usługą”. Czy różnią się od siebie, czy po prostu różnią się konwencjami nazewnictwa?
AKTUALIZACJA 1
Pytam dlatego, że w Zend Framework, klasycznym frameworku MVC, wszyscy używają koncepcji Model. Teraz uczę się AngularJS i wydaje się, że słowo Model zniknęło i zostało zastąpione słowem usługa.
Zauważyłem, że usługa jest bardziej jak singleton, który może być ponownie wykorzystywany (przykład: klient REST), podczas gdy model jest bardziej związany z manipulacjami danych pochodzącymi z kontrolera we wzorze MVC.
Odpowiedzi:
Model: Pola należące do obiektu, metody, które pomagają uzyskać / ustawić dane z obiektu (akcesorium o pełnej nazwie, które zwraca imię + nazwisko)
Usługa: metody wykonywania operacji na jednym lub kilku modelach, patrz „jednostka pracy”, transakcje itp.
Pracownik :: tworzenie powinien po prostu pobrać zestaw danych, w razie potrzeby przeprowadzić weryfikację modelu i zwrócić Obiekt pracownika.
EmployeeService :: rentalEmployee może utworzyć pracownika, wysłać mu powitalny e-mail, utworzyć skrzynkę pocztową, zrobić z niego kanapkę itp. ... może zwrócić zestaw danych lub kod wyniku itp.
Może to również wpłynąć na sprawdzanie poprawności:
Walidacja modelu: pracownik musi mieć identyfikator, imię i nazwisko oraz datę urodzin
Walidacja usługi: pracownicy na stanowisko barmana muszą mieć ukończone 21 lat i być zatwierdzeni przez kierownika.
źródło
Zgodnie z moim doświadczeniem warstwa modelu we wzorcu projektowym MVC odnosi się do każdego komponentu oprogramowania związanego z manipulacją danymi (POJO, DAO, aż do SQL, JDBC itd.).
Podczas gdy warstwa usługi jest w rzeczywistości dodatkiem do MVC:
Wiemy, że komponenty warstwy modelu są wywoływane wewnątrz warstwy kontrolera . Po zbudowaniu tego ostatniego zdajesz sobie sprawę, że nie wygląda on zwięźle (bałagan z brudnym kodem); Kontroler może nie pozwolić sobie na dodatkowe szczegóły (np. formatowanie parametrów żądania przed wywołaniem metody DAO, która je wykorzysta ...). Dlatego możesz dołączyć tę dodatkową warstwę, a mianowicie warstwę usługi .
W końcu możesz umieścić swój brudny kod w metodach statycznych z sensowną nazwą, parametrami i tak dalej, co dałoby syntetyczną warstwę kontrolera.
Spójrz na ten link:
/programming/2762978/the-purpose-of-a-service-layer-and-asp-net-mvc-2
źródło
Strukturalnie te podstawowe klasy są takie same, jednak służą do klasyfikowania różnych problemów związanych z warstwami usług i modeli implementacji MVCS
Tak więc, chociaż klasy podstawowe są podobne, konkretne klasy utworzone przez rozszerzenie tych klas podstawowych służą dwóm zupełnie innym celom.
źródło