webForumDet fria alternativet

Vad använder ni er av för design mönster till ASP.NET

.NET

9 svar · 1 649 visningar · startad av Nickemannen

Medlem sedan aug. 20003 575 inlägg
Frågan#1

Tänkte att det kanske var dags att diskutera olika designmönster i ASP.NET.

Det ända jag kan komma och tänka på är MVC (Model View Control).

Men hur skall man tänka där?

Skall man låta CodeBehind filen vara Control eller är det en del av View?

Tips på flera designmönster som passar ASP.NET eftersöks.

Medlem sedan juli 20011 304 inlägg
#2

GOF är välanvända, speciellt factories och proxies av olika slag.
Singletons gillar jag också :)

Mycket bra sida med kodexempel i c# finns här:
http://www.dofactory.com/Patterns/Patterns.aspx

Medlem sedan aug. 20003 575 inlägg
#3

Jon skrev:

GOF är välanvända, speciellt factories och proxies av olika slag.
Singletons gillar jag också :)

Mycket bra sida med kodexempel i c# finns här:
http://www.dofactory.com/Patterns/Patterns.aspx

Jag kikade igenom sidan lite snabbt och ställde mig frågan är detta till enbart .NET applikationer eller också ASP.NET applikationer?

För det borde väl vara en viss skillnad eftersom forms och webbsidor arbetar lite olika.

Medlem sedan juli 20011 304 inlägg
#4

Det är generella patterns.

De som kan skilja sig lite i implementationen är som du säger till exempel MVC, dvs sådana som rör gränssnitt.

Vad det gäller MVC finns det flera alternativ till hur man ska implementera det. MVC är ju inte bara ett enda mönster. Man kan till exempel välja att implementera front controller, intercepting filter, page controller osv. Jag tror att Microsoft propagerar att man använder page controller och sådeles ärver ner funktionalitet via Page objektet och sedan vidare till alla sina sidor.

Microsoft har en bra artikel om saken här:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/ASPNet-ASPNet-J2EE-Struts.asp

Medlem sedan maj 20012 812 inlägg
#5

För det borde väl vara en viss skillnad eftersom forms och webbsidor arbetar lite olika.

Inte om man tänker till lite. I den aritektur som vi har på jobbet just nu, så har vi byggt upp det så att både winforms och webforms iprincip endast presenterar data och inget mer.

Det betyder att vi enkelt kan bygga en winform applikation och helt plötsligt så kommer det ett krav på att visa delar av applikationen skall vara tillgängliga på nätet. Med vår aktitektur så behöver vi endast bygga väldigt tunna webforms som kallar ner till ett processlager och får alla data därifrån, det är även processlagret som bestämer hur flödet genom applikationen kommer att vara.

Det gör det också väldigt enkelt att skapa olika flöden för olika användare om man nu önskar det. Så det behöver inte vara så stor skillnad mellan winforms och webforms...

- M

Medlem sedan jan. 20012 204 inlägg
#6

Jon skrev:

Det är generella patterns.

Microsoft har en bra artikel om saken här:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/ASPNet-ASPNet-J2EE-Struts.asp

Helt utanför topic men finns det något program som gör snygga diagram som på msdn.

http://msdn.microsoft.com/library/en-us/dnaspp/html/aspnet-aspnet-j2ee-struts-02.gif

Medlem sedan juni 20015 009 inlägg
#7

P skrev:

Jon skrev:

Det är generella patterns.

Microsoft har en bra artikel om saken här:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/ASPNet-ASPNet-J2EE-Struts.asp

Helt utanför topic men finns det något program som gör snygga diagram som på msdn.

http://msdn.microsoft.com/library/en-us/dnaspp/html/aspnet-aspnet-j2ee-struts-02.gif

Visual studio.

Medlem sedan jan. 2004501 inlägg
#8

Visio 2003 är MS lösning på att göra flödesdiagram av olika slag.

Medlem sedan feb. 200563 inlägg
#9

Re: Vad använder ni er av för design mönster till ASP.NET

Nickemannen skrev:

Skall man låta CodeBehind filen vara Control eller är det en del av View?

Den vanligaste (troligtvis) programmeringsmodellen i ASP.NET är att man låter CodeBehind-filen agera som
controller när en viss sida anropas.

Designmönstret för detta heter Page Controller och beskrivs i Martin Fowler's bok
Patterns of Enterprise Application Architecture
samt Microsoft's bok
Enterprise Solution Patterns Using Microsoft .NET
som även finns att läsa på internet:
http://msdn.microsoft.com/architecture/patterns/default.aspx?pull=/library/en-us/dnpatterns/html/esp.asp

Jag skriver ovan att Page Controller "troligtvis" är vanligast, och det tror jag därför att majoriteten
av de kodexempel (t.ex. på MSDN) som jag har stött på använder sig av Page Controller, d.v.s. en controller per sida.
Alternativet till Page Controller är att använda ett annat mönster, som Jon också nämner ovan, nämligen Front Controller
(som t.ex. det välkända Java-ramverket Struts använder sig av) där man helt enkelt
låter controllern ta emot alla requests som sedan delegerar vidare till önskad sida.
Intercepting filter är däremot inte ett alternativ till Front/Page Controller utan den används i kombination med någon av de andra två.
(det kanske inte Jon menade heller, men så skulle man kunna tolka hans inlägg)

Nickemannen skrev:

Tips på flera designmönster som passar ASP.NET eftersöks.

Microsoft-boken ovan innehåller ytterligare ett mönster (förutom ovan nämnda Front, Page och Intercepting) som man kan använda för ASP.NET, närmare bestämt "Page Cache" (samt några Web Services-mönster).
Många av bokens mönster är f.ö. sedan tidigare publicerade i andra böcker om designmönster, vilket inte är så konstigt
eftersom ett Design Pattern per definition inte ska vara specifikt för ett visst programmeringsspråk för i så
fall rör det sig snarare ett Idiom Pattern (även kallad coding pattern) enligt POSA's definition av IP vs. DP vs. Architectural Patterns.
Fowler's bok innehåller även ett mönster som han kallar "Template View" och i boken använder tillsammans med sin "Page Controller".

Nickemannen skrev:

Jon skrev:

Mycket bra sida med kodexempel i c# finns här:
http://www.dofactory.com/Patterns/Patterns.aspx

Jag kikade igenom sidan lite snabbt och ställde mig frågan är detta till enbart .NET applikationer eller också ASP.NET applikationer?
För det borde väl vara en viss skillnad eftersom forms och webbsidor arbetar lite olika.

Den sidan innehåller endast de generella GoF-designmönstren som är applicerbara för såväl C++ som Java och C#
och de är således inte specifika för vare sig .NET , ASP.NET eller webbapplikationer i allmänhet.
(när det gäller generalitet kan man dock ifrågasätta varför nisch-mönstret Interpreter fick vara med i GoF-boken...)

När man programmerar ASP.NET tycker jag att man ska utgå ifrån de arkitekturella mönstren (POSA definition) MVC och Layers, där din kod i Page/Front Controller (MVC) innehåller så lite kod som möjligt och istället använder sig av ett annat Layer som du kan återanvända ifrån en annan appliaktion, t.ex. från en Windows Forms applikation eller från en Web Service.
För MVC-Modellen och de olika lagren i resten av applikationen kan du sedan applicera de generella GoF-mönstren samt övriga mönster t.ex. patterns för data access.

Med andra ord, om man implementerar sin applikation i flera lager, så tror jag inte det finns särskilt många ytterligare designmönster (värda namnet) förutom de ovan nämnda, som är specifikt relevanta för ett webb-GUI-lager... i alla fall har jag inte hittat några fler publicerade sådana.
Men man kanske kan vänta sig att Microsoft i nästa upplaga av sin patterns bok kompletterar den med en ASP.NET variant på hur man använder user controls med mönstret Composite View från boken core J2EE patterns.

/ Tomas

Medlem sedan jan. 20023 327 inlägg
#10

Lite sent inlägg kanske men här finns en mycket bra artikel om hur man tillämpar olika patterns med asp.net (även design patterns).
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/Esp.asp

Går även att ladda hem som pdf :)

283 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
154 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)