MVC i MVVM separacja warstw

0

Cześć,

jak w temacie. Ciekaw jestem czy robicie separację warstw aplikacji w taki sposób, że model jest całkowicie osobnym projektem? A może trzymacie wszystko w jednym projekcie? Korci mnie żeby w swoich projektach wyrzucić model do osobnego projektu i dołączać go do reszty jako dll'ka. W sumie nawet przy testach byłoby to wygodniejsze, bo nie trzeba dodawać do nich całości, a jedynie model.

Ciekaw jestem Waszego zdania z krótkim uzasadnieniem.

0

Ja przy najnowszym projekcie postanowiłem model (i w ogóle cały silnik) umieścić w SharedProject, bo "być może kiedyś zrobię wersję na mobilne". Ale nie wiem, czy w moim wypadku powinienem tak robić, bo np. projekt unit test już nie widzi sharedprojectów i trzeba mu dawać referencję do jakiegoś innego projektu :/

0

Proponuję zainteresować się tematem repozytorium generycznego w aplikacjach MVC, które to ma z reguły minimum 4 warstwy (model, data, obsługa serwisów i interfejs użytkownika). Implementacja aplikacji opartej na takim mechanizmie jest pracochłonna, jednak w przypadku większych projektów bardzo opłacalna, gdyż pozwala trzymać wszystko w ryzach.

0

Ale "model" to dość szerokie pojęcie w kontekście MVC/MVVM co masz na myśli konkretnie? Mapping, domene czy może jeszcze coś innego.
W osobnym projekcie w ramach tego samego solution czy w osobny?

Jeśli z tego samego modelu ma korzystać wiele aplikacji to wydaje się rozsądne wydzielenie "modelu" do osobnej aplikacji i ukrycie go za jakimś api i utworzenie dla tego osobnego solution, rzucaniem go jako dll z solucji do solucji wydaje mi się chybionym pomysłem ( o ile o to chodzi ), oczywiście można by się pokusić i wrzucenie tego "modelu" do nugeta jeśli zachodzi tak potrzeba.

Ale tak w ogóle to nie do końca rozumiem o co właściwie chodzi. :P

0

@DibbyDum
Model czyli CRUD, obsługa serwisów, mapowania, encje etc... Chodzi o zrobienie projektu w ramach tej samej solucji co reszta i np. testowanie. Wydaje mi się lepszym wyjściem oddzielenie modelu, bo np. w testach to model będziesz dodawać do projektu z testami, a nie projekt z testami do całej aplikacji. Będzie większy porządek kiedy model będzie osobno - przynajmniej tak mi się wydaje. Wystarczy w sumie zrobić DLL'kę i dołączać gdzie potrzeba.

2

Noto jak w ramach jednej solucji to pewnie że tak! Jak w ogóle można inaczej, ja to mam zawsze kilka projektów w ramach jednej solucji.

2
sl napisał(a):

Proponuję zainteresować się tematem repozytorium generycznego w aplikacjach MVC, które to ma z reguły minimum 4 warstwy (model, data, obsługa serwisów i interfejs użytkownika). Implementacja aplikacji opartej na takim mechanizmie jest pracochłonna, jednak w przypadku większych projektów bardzo opłacalna, gdyż pozwala trzymać wszystko w ryzach.

Tylko co ma antywzorzec repozytorium generycznego do ilości warstw? To tylko klasa, można ją równie dobrze w jednowarstwowej aplikacji zaimplementować. I niczego nie utrzymuje w ryzach, zazwyczaj jedynie dodaje zbędny wrapper na coś, co już jest repozytorium generycznym.

grzesiek51114 napisał(a):

Model czyli CRUD, obsługa serwisów, mapowania, encje etc... Chodzi o zrobienie projektu w ramach tej samej solucji co reszta i np. testowanie. Wydaje mi się lepszym wyjściem oddzielenie modelu, bo np. w testach to model będziesz dodawać do projektu z testami, a nie projekt z testami do całej aplikacji. Będzie większy porządek kiedy model będzie osobno - przynajmniej tak mi się wydaje. Wystarczy w sumie zrobić DLL'kę i dołączać gdzie potrzeba.

No i oczywiście, że tak.

Zresztą, model biznesowy powinien być w innym projekcie niż np. jakieś klasy mapujące ORMa, które są infrastrukturą. Ogólnie model nie powinien mieć w referencjach żadnych konkretnych bilbiotek infrastrukturalnych (ORM, logger, AOP, testowanie wydajności, diagnostyka, itp.).

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