Logika biznesowa a warstwa usług

9

Przeczytałem tę odpowiedź: https://softwareengineering.stackexchange.com/a/234254/173318 proszę o poprawienie mojego zrozumienia.

Reguły biznesowe odnoszą się do listy etapów biznesowych w świecie rzeczywistym (bez kodów).

Logika biznesowa odnosi się do procesu przekształcania reguł biznesowych w kody i tych grup / rodzajów kodów adresowanych jako „Logika biznesowa”.

Do czego służy warstwa usługi? jeśli przeczytam tę odpowiedź, nie będzie inaczej w logice biznesowej https://stackoverflow.com/a/4817935/4190539

Czy warstwa usług jest miejscem, w którym logika biznesowa i repozytorium się spotykają?

Kakashi
źródło
1
„warstwa usługowa” jest terminem ogólnym, może zawierać lub zawierać cokolwiek zechcesz. To cytowane przez Ciebie pytanie SO mówiło o „warstwie usług w ASP.NET MVC”, która nadaje temu terminowi bardziej szczegółowy charakter. Czy celowo mówisz o tym ostatnim? A może po prostu przegapiłeś różnicę?
Doc Brown
właśnie to mam do tej pory. ale chciałbym usłyszeć twoje wyjaśnienie na ich temat.
Kakashi

Odpowiedzi:

11

„Warstwa serwisowa” jest terminem architektonicznym. Odnosi się do części systemu, która znajduje się gdzieś pośrodku wielowarstwowej architektury , poniżej warstwy interakcji użytkownika, ale powyżej warstwy dostępu do danych.

Logikę biznesową można wdrożyć w warstwie usług, egzekwując w ten sposób reguły biznesowe.

Należy jednak pamiętać, że zdarzają się przypadki, w których logika biznesowa kończy się na innych warstwach. Na przykład niektóre reguły biznesowe są egzekwowane w warstwie interakcji użytkownika w celu poprawy komfortu użytkowania (np. Walidatory napisane w JavaScript, aby można je było sprawdzić bez konieczności podróży w obie strony na serwer). W takim przypadku warstwa usługi zwykle powiela wymuszenie.

Inne reguły biznesowe można egzekwować tylko w warstwie bazy danych, na przykład, gdy istnieją obawy dotyczące współbieżności (wyobraź sobie aplikację, w której możesz sprawdzić książkę do biblioteki) lub problemy z wydajnością (wyobraź sobie program, który oblicza roczną prowizję zajętego sprzedawcy, na podstawie złożona struktura opłat).

John Wu
źródło
czy jest w porządku, jeśli mam katalog usług i zawiera klasy jako miejsca, w których umieszczam logikę biznesową i wstrzykuję repozytorium, inne usługi, sprawdzanie poprawności?
Kakashi
Tak, to naturalne, że wstrzykuje się inne usługi, w tym dostęp do danych, do warstwy usług - musi jakoś przechowywać dane, a jeśli zostanie poprawnie napisane, nie wie, jak to zrobić samodzielnie.
John Wu
repozytorium nie może zawierać żadnego kodu biznesowego, prawda? oznacza to, że repozytorium musi być wolne od sprawdzania poprawności, filtrowania lub innych manipulacji strijg, takich jak na przykład strtolower?
Kakashi
Niekoniecznie (podałem już dwa przykłady w moim poście), ale dobrą praktyką jest przeniesienie jak największej logiki biznesowej do warstwy usług.
John Wu
och dobrze, btw czy masz kod wzoru repozytorium, który widzę?
Kakashi