Trudno mi jest zdecydować, czy coś powinno być częścią domeny czy aplikacji.DDD: Co wchodzi w domenę i co znajduje się w aplikacji?
Czytanie tego answer bardzo pomaga przy pojęciach takich, jak autoryzacja, ale wciąż mam problemy z innymi rzeczami.
Aby zilustrować moje zamieszanie, rozważ zgłoszenie komentarza. Oto rzeczy, które muszą się wydarzyć, zanim komentarz zostanie opublikowany. W nawiasie wskazuję, gdzie według mnie powinna funkcjonować ta funkcja.
- Upewnij się rola użytkownika/status może wypowiedzieć się na temat tego postu (autoryzacja, idzie do aplikacji)
- Upewnij słupek, do którego jesteśmy komentując istnieje i jest publikowana (domena)
- Upewnij użytkownikowi nie opublikował więcej niż 5 komentarzy w ostatniej chwili (dławienie, intuicja mówi, że chodzi o Aplikację)
- Upewnij się, że komentarz nie jest pustym ciągiem (Domena)
- Upewnij się, że komentarz nie zawiera brudnych słów (Domena?)
- Upewnij komentarz nie ma duplikatów z samego użytkownika w tym poście (domena?)
- Format komentarz (aplikacji)
- usunięcia niektórych tagów HTML z komentarzem, które nie są dozwolone dla bieżącego użytkownika (aplikacji)
- Sprawdź komentarz do spamu (Aplikacja?)
Nie mogę zdecydować, czy sprawdzanie komentarza dla spamu dotyczy domeny czy aplikacji, to samo dotyczy dławienia. Z mojego punktu widzenia obie te kwestie są dla mnie ważne i muszą być obecne. Ale to samo dotyczy autoryzacji i wiemy, że nie powinno być w domenie.
Jeśli podzielę te obawy między usługą domenową i usługą aplikacji, mam wrażenie, że moja domena nie jest w pełni egzekwowana i w rzeczywistości polega na aplikacji do wstępnych kontroli. W takim razie, o co w tym wszystkim chodzi, dlaczego po prostu nie zrobię tego wszystkiego w aplikacji, aby zmniejszyć zamieszanie?
Moja obecna konfiguracja to robi:
Controller -> App.CommentingService.Comment() -> Domain.CommentingService.Comment()
Byłoby pomocne, jeśli ktoś może przejść przez wszystkie wymagane kroki, aby utworzyć komentarz i przypisać go do właściwej warstwy daje pewne uzasadnienie.
Dławienie zapewnia obecność spamerów. Czy sprawdzanie, czy komentarz zawiera spam, wiąże się z domeną? Chciałbym, aby tak się stało, niezależnie od tego, czy była to aplikacja internetowa, usługa sieciowa SOAP, czy aplikacja komputerowa. To samo dotyczy dławienia. –
Myślę, że twoja odpowiedź jest naprawdę dobra. Pomyślałem o każdym wymaganiu, w którym pytałbym siebie: "czy domena zostanie złamana, jeśli ta zasada nie zostanie wymuszona?". Tak więc dla większości z nich odpowiedź brzmi "nie". Domena jest nadal nienaruszona, jeśli dławienie, powielanie komentarzy, brudne słowa, formatowanie, tagi html lub nawet autoryzacja nie są wymuszane. Nasze bezpieczeństwo aplikacji, wydajność, przyjazność, prezentacja mogą się nie udać, ale domena nadal będzie poprawna. Komentarze nadal będą się ładować i działają dobrze, ale z nieuprzejmymi słowami i brzydkim formatowaniem. –
Jednakże, jeśli nie będziemy wymuszać, że komentarze muszą należeć do prawdziwego postu lub że komentarz nie może być pusty, najprawdopodobniej złamie domenę. Nie jest jednak jasne, czy domena zostanie zerwana, jeśli zezwolimy na publikowanie postów niepublikowanych lub postów, w których komentarze zostały zamknięte. Technicznie rzecz biorąc, wszystko będzie działało dobrze, domena będzie w takt, ale reguła biznesowa zostanie zerwana. Jakie jest twoje zdanie na ten temat? –