it-swarm-eu.dev

Osvědčené postupy pro architekturu MVC

Moje otázka je více o tom, jak navrhnout aplikaci MVC. Například se doporučuje používat DI se vzorem úložiště pro oddělení přístupu k datům od kontroléru, nicméně o tom, jak to konkrétně udělat pro MVC, se říká velmi málo. Kam bychom například umístili třídy úložišť? Nezdá se, že by se týkaly konkrétně modelu, protože model by měl být rovněž relativně oddělen od skutečných technologií přístupu k datům.

Druhá otázka zahrnuje, jak strukturovat vrstvy nebo vrstvy. Zdá se, že většina příkladů aplikací (nerdská večeře, hudební obchod atd.) Používá jednovrstvý přístup ve dvou vrstvách (nepočítají se testy), který obvykle má řadiče přímo volající L2S nebo EF kód.

Pokud chci vytvořit aplikaci s více vrstvami/vrstvami, jaké jsou nejlepší postupy v oblasti MVC?

28
Erik Funkenbusch

DI je provedeno v ASP MVC pomocí továrny Controller. Tato továrna se používá k vyřešení závislostí ovladače).

MvcContrib obsahuje některé implementace Controller Facotry, které můžete použít po vybalení z krabice. Používám jejich implementaci Castle Windsor a funguje to dobře. Také by bylo doporučeno vyzkoušet jejich TestHelper Class. Má velmi cool funkci pro zesměšňování HTTPContext, relací atd. Controlleru. MVCContrib

Osobně rád dávám svým modelům instanci úložiště, s nimiž mohu pracovat. Model vystavuje api úložišti (CRUD). Závislost řadiče na konkrétním modelu se vstřikuje při tvorbě (konstruktoru), toto se vstřikuje prostřednictvím továrny Controller. Toto je můj vstupní bod do grafu objektů, který můj kontejner IoC spravuje.

5
Nick

Kam bychom například umístili třídy úložišť?

Patří do modelu; jsou to aplikační model.

Jak mohu strukturovat vrstvy? Pokud chci vytvořit aplikaci s více vrstvami/vrstvami, jaké jsou nejlepší postupy v oblasti MVC?

Úrovně představují fyzické oddělení kódu. Vrstvy představují logické separace. Vrstvy (jak jsou v současnosti) fungují dobře pro MVC. V závislosti na množství obchodní logiky může být umístěna buď do vašeho řadiče, nebo může být umístěna do samostatné sestavy a může být použita řadičem během cyklu žádosti.

2
George Stocker