Projektuję aplikację ASP.NET MVC przy użyciu modelu Onion Architecture opisanego przez Jeffrey'a Palermo.Zależności między architekturą jądrową w tej samej warstwie: infrastruktura i komunikacja sieciowa
Jest to projekt ASP.NET MVC 2.0, w którym wymagam, aby wszystkie widoki były silnie wpisywane za pomocą dedykowanych modeli widoku - nie będziemy przekazywać modeli domen do naszych widoków. Używamy AutoMappera do tłumaczenia - AutoMapper jest izolowany w infrastrukturze, Web nie wie ani nie obchodzi, że jest używana AutoMapper.
Obecnie definiuję interfejsy IViewModelMapping w projekcie WWW - po prostu dlatego, że ta usługa będzie używana przez Kontrolery i ma bezpośredni dostęp do własnych modeli widoku. W ten sposób interfejs może uzyskać dostęp zarówno do modeli domen (w rdzeniu), jak i modeli widoków (w sieci).
W celu zapewnienia rzeczywistej implementacji interfejsów IViewModelMapping utworzyłem obszar nazw ObjectMapping w projekcie Infrastruktura, który wyizoluje rzeczywistą implementację mapowania do Intrastruktury cebuli. Czyniąc to, będzie wymagać, aby infrastruktura była zależna od OBU Core and Web.
Moje pytanie brzmi: ponieważ oba te projekty są technicznie na obrzeżach cebuli (w tej samej warstwie) - czy jeden projekt może mieć zależność od innego projektu w tej warstwie? Czy ktoś zauważy potencjalne pułapki z tym projektem?
Alternatywnym projektem byłoby przenoszenie interfejsów IViewMapper do Core - ale byłoby to niemożliwe, ponieważ Core nie ma dostępu do klas ViewModel. Mogłabym też przenieść modele widoku do Core, ale czuję, że nie pasują do nich, ponieważ są specyficzne dla warstwy interfejsu użytkownika.
Zaproponowana architektura wygląda następująco - należy zauważyć, że infrastruktura jest zależna od Core AND Web. Sieć pozostaje odizolowana i ma dostęp tylko do podstawowej logiki biznesowej.
http://www.matthidinger.com/images/onion-arch.png
Jaki był ostateczny projekt, który wybrałeś i pracowałeś? Interesujące, aby zobaczyć zaktualizowany diagram z pewną strukturą klas do mapowania :) –
Pytanie: Dlaczego warstwa dzieląca _ zależność _ ma zależność od warstwy _Web? Czy funkcja _Controllers_ nie powinna mieć zależności od _ Resolution warstwy niezależnej? – a11smiles