Avatar billede nielsbrinch Nybegynder
24. maj 2005 - 10:22 Der er 11 kommentarer og
2 løsninger

Adskillelse af ASP.NET-applikation

Jeg har en stor ASP.NET-applikation som består af en enkelt dll. Jeg laver løbende meget store ændringer til denne dll, men undervejs vil jeg gerne have muligheden for at udgive smårettelser i andre dele af programmet, uden at skulle udgive den store ændring.

Hvordan ordner jeg lige det på den bedste måde?

Jeg frygter en idé om at dele min applikation op i 500 små dll'er. Jeg frygter også en idé om at lægge alting ned i aspx'er.
Avatar billede imago-dei Nybegynder
24. maj 2005 - 10:36 #1
Hvorfor er det du frygter at benytte flere dll'er i dit program? Kompilerer du fra kommandolinie eller bruger du Visual Studio?

Jeg tror - ud fra de bøger/artikler jeg har læst om emnet - at måden microsoft anbefaler er at man skifter en hel dll ud ad gangen. Da en dll er kompileret (i en eller anden grad) bliver det nok svært (umuligt?) at skifte dele af dll'en ud.
Avatar billede nielsbrinch Nybegynder
24. maj 2005 - 10:40 #2
Jeg frygter at benytte flere dll'er i mit program, med mindre der findes en pålidelig, automatiseret måde at håndtere det på.

Jeg bruger Visual Studio til at kompilere med. Findes der en automatiseret måde at håndtere en masse dll'er på. F.eks. én per cs-fil.
Avatar billede arne_v Ekspert
24. maj 2005 - 11:13 #3
som med så meget andet er det vel et spørgsmål om at finde en sund balance

N dll'er hvor 1 < N < antal sider

med en fornuftig gruppering af sider --(M:1)-- dll således at en given
ændring af funktionalitet som berører et antal sider kun vil berøre samme dll

low coupling high cohesion hedder det vist når det skal være meget fint
Avatar billede nielsbrinch Nybegynder
24. maj 2005 - 11:20 #4
I det specifikke tilfælde er der faktisk kun én side. Det er til gengæld en gigantisk side med en stor bagvedliggende objektmodel og en masse logik. Men det kan godt grupperes, regnestykket skal bare se lidt anderledes ud tror jeg:

1 < N < antal klasser

Da 'antal sider' = 1

Men det er faktisk den rent praktiske del af problemet der er det værste, så vidt jeg kan se. Der er så vidt jeg kan se, ingen property på en klassefil der hedder "Compile as independent dll" eller sådan noget.
Avatar billede imago-dei Nybegynder
24. maj 2005 - 11:42 #5
Man kan altid lave et stort projekt som en stor klasse eller som en stor fil med flere klasser. Men du kan også vælge at dele det op i flere filer, som du så "kompilerer" til libraries.
Avatar billede nielsbrinch Nybegynder
24. maj 2005 - 11:50 #6
imago-dei, i mit projekt har jeg omkring 100 filer, blandet i aspx'er, ascx'er og især cs'er.

Hvordan deler jeg helt konkret disse filer op i omtrent 30-40 dll'er, på en automatisk måde som er holdbar til daglig? Er det ikke det du foreslår?
Avatar billede arne_v Ekspert
24. maj 2005 - 11:58 #7
du skal vel have et projekt per dll !?

hvis ikke er det nok nemmere at styre builden hvis du builder med NAnt fremfor VS
Avatar billede imago-dei Nybegynder
24. maj 2005 - 12:11 #8
Jeg kan ikke sige dig konkret hvordan det skal laves fordi det kan laves på mange måder. Men som arne_v siger, du kan have flere projekter i samme solution. Så opret et projekt pr. dll og kompiler så alle projekter til libraries.

Efter at du har fået alt spilettet op arbejder du fuldstændig som normalt. Dvs. du skal til daglig ikki sørge for at importere filer eller lave specielle kompileringer. Det opsætter du én gang for hvert projekt.
Avatar billede nielsbrinch Nybegynder
24. maj 2005 - 13:01 #9
Ja, du har ret. Et projekt per dll og så et gigantisk dependency-helvede som skal vedligeholdes. Det er måske den eneste løsning.

Men det ville måske være endnu bedre hvis man kunne udvikle som normalt i Visual Studio, og så trykke på en bat-fil som kompilerer alting til forskellige dll'er, evt. ved hjælp af NAnt.

arne_v, jeg har prøvet at kigge på NAnt, men det lader ikke til den har den funktionalitet. Har du indsigt i hvad den kan?
Avatar billede arne_v Ekspert
24. maj 2005 - 13:07 #10
Den kan meget !

Jeg har skrevet en intro her: http://www.eksperten.dk/artikler/637

Men jeg har aldrig brugt NAnt til projekter i den størrelsesorden.

Jeg har brugt ant (Java) til store projekter - og det virker.
Avatar billede nielsbrinch Nybegynder
24. maj 2005 - 13:30 #11
Tak. Jeg har lige læst introen - meget hjælpsomt!

Nu har jeg to gode alternativer til at skulle vedligeholder flere versioner af min kode parallelt.
- Opdel min solution i mange projekter
- Opsæt og vedligehold en NAnt-konfigurationsfil.

Tak for hjælpen begge to. Læg svar.
Avatar billede arne_v Ekspert
24. maj 2005 - 13:48 #12
ok
Avatar billede imago-dei Nybegynder
24. maj 2005 - 14:07 #13
her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester