Diskuze: Štruktúra ASP.NET MVC

C# .NET .NET (C# a Visual Basic) Štruktúra ASP.NET MVC American English version English version

Avatar
Andrej Farkaš:

Ahojte,

chcel by som sa spýtať akú hierarchiu používate pri ASP.NET MVC? Zrejme nedávate všetku logiku do controlleru, takže ako to odporúčate rozčleniť? Chystám sa v MVC robiť nejaký projekt do školy a chcel by som tam zachovať nejaké best practices.

Našiel som tutorial na asp.net, kde je použitý Unit of Work a Repository pattern. Toto sa mi celkom pozdáva, prípadne pred to ešte postaviť nejakú bussines logic layer , prípadne wcf servis (ak treba).

Spomínaný tutoriál:
http://www.asp.net/…-application

Odpovědět  +1 15.10.2014 21:58
Live. Love. Learn.
Avatar
Lako
Člen
Avatar
Odpovídá na Andrej Farkaš
Lako:

Nejvíc mi vyhovovalo asi následující:
Kontroler je jenom hlupáček, co ho vlastně zavolá view, že chce nějaká data.
On veme data z db contextu, v nějaké neupravené podobě je pošle do servisy, která je přechroupá na patřičný viewModel, který kontroler pošle do view.
Controller je tedy jediný, kdo šahá do db.

Pak tady co view, to viewModel(včetně edit, create,atd...) - to může znít jako pruda, ale když ti trochu rozkvete, je to pohodlnější.

Tohle je dobrá otázka, zajímalo by mě, jak to dělají ostatní.

 
Nahoru Odpovědět 15.10.2014 23:22
Avatar
Odpovídá na Lako
Andrej Farkaš:

Naozaj si myslíš, že je vhodné aby "jenom hlupáček" spravoval dáta? A čo v prípade, že potrebuješ volať rovnaké query alebo ešte lepšie x queries za sebou z viacerých miest? Kopa duplicitného kódu.
Kým tvoj servis len obaluje prevod modelu na viewmodel, tak mi príde vhodnejšie aby práve obsahoval nejaký repository a až ten mal dbcontext. Single responsibility :-)

Editováno 16.10.2014 6:42
Nahoru Odpovědět 16.10.2014 6:42
Live. Love. Learn.
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na Andrej Farkaš
Milan Křepelka:

Myslím, že lepší než odpovídat si na otázku "jak" je lepší si odpovědět na otázku proč. Odpovědí na "JAKy" je mnoho a vesměs mezi "jaky" budou jenom drobné nuance.

Pokud bych měl odpovědět na otázku proč, tak protože když už jsem v tom M V C a tak budu chtít to C testovat. No a tomu podřídit ten zbytek.

Z tohoto pohledu mi přijde vhodná kombinace s lehnotonážními kontrollery(bez nějakých závislostí na webových záležitostech) kterým podsunu jakkoli (třeba přes IoC) můj IRepository<Mo­jeDato>. Přičemž IRepository<Mo­jeDato> může být jenom nějaké MemoryStorage nezávislé na databázi a tím pádem zase dobře otestovatelné.

 
Nahoru Odpovědět  +1 16.10.2014 7:36
Avatar
Lako
Člen
Avatar
Odpovídá na Andrej Farkaš
Lako:

No, ono je jedno jestli budu 10x psát v kódu db.Users()... nebo si napíšu nějakou servisu, kde bude metoda, kterou budu 10x volat....

 
Nahoru Odpovědět  -1 19.10.2014 21:10
Avatar
Odpovídá na Lako
Michal Štěpánek:

V jistém smyslu slova máš pravdu, je to jedno. Když to ale budeš chtít upravit, tak v té "servise" jak píšeš, to upravíš jen jednou a ne 10x...

Nahoru Odpovědět 19.10.2014 23:10
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.