Strukturering af program C#/.NET

Tags:    .net

Jeg har tænkt mig at lave en Level editor til et 2D Tilebased spil(et program der kan redigere, vise og gemme en tabel af billeder, der skal danne et level i et spil http://mapeditor.org/screenshots.html).

For mig ser det ud som om at C# er et godt valg vis jeg skal lave en windows desktop application med et GUI.

Jeg har kigget lidt på det, og .NET frameworked ser ud til at have lavet en masse ting for en i forvejen, og det ser ud som om der bliver forventet at man strukturere sit program på en bestemt måde, hvis det skal kunne spille sammen med .NET frameworked optimalt. Hvilket er fint, hvis jeg vidste hvad den måde helt bestemt er.

Tager jeg fjel? Hvis ikke, er der så nogle der kan fortælle mig, eller linke til en artikel der kan fortælle mig, hvordan man bedst strukturer sit program i .NET (C#).

Det jeg helt specifikt tænker på er foreksempel om det skal ligne lidt MVC osv.

På forhånd tak :D



5 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
"Er der en specifik måde at strukturere sit program på i C#?"
Det hurtigste svar er egentlig: Nej, det er der ikke. Det kommer helt an på hvad det er for en type klient/desktop app du vil lave.

Hvis du skal bruge en "tynd" klient hvor den ikke skal holde styr på data, men henter det hele et andet sted fra så kan du nøjes med 1 eller 2 projekter i dit klient-projekt. Det vil være selve GUI-klienten samt en mindre business-komponent der kan agere bindeled mellem dine data der ligger et andet sted og så klienten.

Derimod hvis du har brug for en "tyk" klient skal du jo lave en applikation der kan lave det hele selv (mere eller mindre). Det betyder også at du kan ende op med at skulle bruge en 3-lags arkitektur (med data-lag, business-lag og præsentations/GUI-lag) der så ligger i hver deres "library"/projekt i det overordnede projekt eller en LINQ-tilpasset arkitektur (hvis du vil benytte LINQ i en eller anden form til data-håndtering), hvor du har et kombineret data- og business-lag og oven på dette et GUI/præsentations/klient-lag. Der er reelt ikke rigtigt den store forskel på det og det du har når du udvikler med MVC og den struktur der benyttes der.

Det var den lille forklaring... :)

Hvordan havde du tænkt dig at din applikation skal se ud alt det ovenstående in mente (især ift. dine data)?



Jeg havde tænkt mig at lave en level klasse der indeholder et 2D array over kortet, som også har funktioner til at gemme/loade til/fra en tekst fil. (tekst filen skal så læses af selve spillet, når det skal vise kortet/banen.

Jeg havde så tænkt mig at lave en GUI klasse oven på til at vise/redigere i level klassen.

Jeg skal så nok også bruge lidt flere klasser(har ikke tænkt det helt igennem endnu)

Men vis vi siger, at der kun er de 2 klasser, hvordan fungere det så rent praktisk. Skal GUI klassen have en instans af Data/level klassen, så den kan kalde funktioner som "getTile(int x, int y) og setTile(int x, int y, int tile), eller kan man gøre noget smart med events, så de bliver endnu mindre afhængige af hindanden? Eller skal det gøres på en helt tredje måde?





Jeg ville jo mene at det ikke var særlig pænt at have data-manipulering og GUI i samme lag. Ville lægge dem ind i 2 forskellige projekter/namespaces. Især hvis du vil udbygge din applikation.

I øvrigt så giver events lige så stor afhængighed mellem klasser som alt muligt andet.



Indlæg senest redigeret d. 15.04.2009 10:17 af Bruger #2243
Jeg ville jo mene at det ikke var særlig pænt at have data-manipulering og GUI i samme lag. Ville lægge dem ind i 2 forskellige projekter/namespaces. Især hvis du vil udbygge din applikation.

I øvrigt så giver events lige så stor afhængighed mellem klasser som alt muligt andet.


Du snakker om et project i visual studio ikke? altså 2 projekter i samme solution?

Tror jeg skal sætte mig lidt mere ind i hvordan C# .NET og visual C# virker, og så komme tilbage med nogle mere specifikke spårgsmål :D

Men mange tak for hjælpen so far.






Jeg ville jo mene at det ikke var særlig pænt at have data-manipulering og GUI i samme lag. Ville lægge dem ind i 2 forskellige projekter/namespaces. Især hvis du vil udbygge din applikation.

I øvrigt så giver events lige så stor afhængighed mellem klasser som alt muligt andet.


Du snakker om et project i visual studio ikke? altså 2 projekter i samme solution?

Tror jeg skal sætte mig lidt mere ind i hvordan C# .NET og visual C# virker, og så komme tilbage med nogle mere specifikke spårgsmål :D

Men mange tak for hjælpen so far.


Lige præcis hvad jeg mente :)

Du skal være velkommen til at kigge forbi igen når du har spørgsmål... :)



t