Gdzie powinno odbywać się mapowanie z modelów widoku na obiekty modelu domeny?

0

Witam,
Tworzę właśnie projekt w ASP.NET core i chciałbym aby był zrobiony najlepiej jak to możliwe.
Mam w związku z tym do was pytanie.
Kontrolery operują na modelach widoku w których znajdują się tylko dane, jakie mają być przekazane na widok. te modele widoku muszą być następnie przesłane do innych warstw aplikacji w celu przetworzeniu, lecz inne warstwy działają już na obiektach modelu domeny. W takim razie gdzie powinno być mapowanie obiektów modelu widowków na modele domeny? W kontrolerze? Czy gdzieś indziej?

Na ten moment mam taki podział(załącznik):
-DataAccess - dostęp do bazy danych (encje, kontekst)
-DataAccessManagerService - znajdują się serwisy (do wstrzyknięcia). Warstwa pomiędzy dostępem do bazy a modelem domeny
-identityLaye - warstwa obsługi użytkownikami
-webPortal - widoki, kontrolery, modele widoku

0

W aplikacji. Kontroler nie powinien wiedzieć o domenie.

0

Czyli obiekt modelu widoku modelu mam przekazywać dalej do aplikacji, i w aplikacji interesie jest to aby w odpowiednim momencie zmapować to?

0

Na Twoim miejscu trzymałbym dto w projekcie z obiektami domenowymi, a w warstwie prezentacyjnej view modele. Mapowanie z obiektów domenowych na dto w serwisie, a mapowanie z dto na view model w warstwie prezentacji np. w kontrolerze. Na pierwszy rzut oka może wydawać się, że ta warstwa pośrednia jest zbędna, ale dojdą Ci jakieś elementy z warstwy prezentacji np. obsługa plików/obrazów, elementy potrzebne tylko do przekazania wartości w dropdownie itp. Wtedy taki viewmodel nie nadaję się do przekazania do warstwy domenowej.

0
ZielonySzczypior napisał(a):

Czyli obiekt modelu widoku modelu mam przekazywać dalej do aplikacji, i w aplikacji interesie jest to aby w odpowiednim momencie zmapować to?

Tak, serwisy aplikacyjne czy command handlery mogą te viewmodele przyjąć, a potem zmapować na obiekty domenowe. Tylko to jest wersja minimum, która wielu się nie spodoba.

Kokoniłaj napisał(a):

Na Twoim miejscu trzymałbym dto w projekcie z obiektami domenowymi

Ale czemu chcesz mieszać domenę z jakimiś wymaganiami zewnętrznymi? To powinna robić warstwa aplikacji.

0
somekind napisał(a):

Ale czemu chcesz mieszać domenę z jakimiś wymaganiami zewnętrznymi? To powinna robić warstwa aplikacji.

Przyznaję, nie zauważyłem, że autor traktuje warstwę dostępu do danych jako warstwę domenową. Pisząc swoją odpowiedź założyłem, że skoro warstwa domenowa posiada serwisy to powinna także posiadać dto, które są zwracane przez serwisy.
e: Chyba, że warstwa DataAccessManagerService posiada dodatkowy model domenowy. To wtedy nie zmieniam zdania.

0

Ale warstwa domenowa nigdy nie powinna żadnych DTO posiadać. Domena to domena, nie transfer danych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1