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ą?


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).


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.