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.