Gå til innhold

Inline-kode, kompilering mm


Anbefalte innlegg

Hei.

 

Jeg jobber som rådgiver innen nettbasert kommunikasjon, men liker å kjenne teknologien som ligger til grunn. Samtidig setter jeg opp en og annen site selv også. Jeg sier dette for at dere skal se i nåde på mitt kunnskapsnivå – jeg er ingen hardcore .NET-utvikler.

 

Tidligere brukte jeg stort sett PHP, men etter hvert fikk jeg mer og mer sansen for .NET. Hovedgrunnen var ytelsen på nettstedene, som jeg synes var imponerende. Da jeg begynte gå mer ned i koden, fikk jeg enda mer sans for teknologien. Det var mens jeg jobbet innenfor .NET 1.1. Utfordringene har begynt nå, etter konvertering til .NET 2.0.

 

Jeg trodde en av hovedpoengene med .NET var å skille presentasjon og programmeringslogikk. Jeg bygde opp mine aspx-filer med C# som kode. Kompilerte denne og la over .dll-filen på server. Alt var såre vel.

 

Men så til .NET 2.0… Jeg installerer Visual Web Developer Express (av økonomiske årsaker). Der har jeg ingen mulighet til å kompilere til .dll. Nei, MS gir vel ikke bort alt i et gratisprodukt…

 

Men så leser jeg et sted at en av de største forbedringene til VS 2005 og Web Developer er at man enkelt har mulighet til å legge koden i aspx-filen. Jeg synes ikke det høres så klokt ut. Mine første spørsmål:

 

1) Vil ikke det gå på bekostning av ytelsen (i og med at koden ikke er kopilert)?

2) Blir ikke koden på mye mer uoversiktlig?

3) Er det ikke litt risikabelt å legge over kildekode (C#) med foretningslogikk (les foretningshemmeligheter) rett på en server?

 

Men det stopper ikke der.

 

Jeg leser videre at .NET 2.0 kompilerer kodefilene på en helt ny måte. Rådet jeg får er å kopiere filene (når jeg bruker codefile) rett over til server, så skjer kompileringen av seg selv. Jeg prøvde dette, med det resultatet at applikasjonen ikke lenger ville kjøre. Til tross for at netthotellet støtter .NET 2.0.

 

Så mitt siste spørsmål:

 

4) Har noen av dere noen kilder jeg kan bruke til å lese meg opp rundt emnet? Eller har noen av dere lyst til å gi meg en kort innføring/kommentar selv?

 

På forhånd tusen takk for hjelpen

 

Eirik

Lenke til kommentar
Videoannonse
Annonse

Kan svare på 1 og 3:

 

1. Koden kompileres når aspx filen leses første gang. Endres denne så vil den bli kompilert på nytt ved neste lesing. Dermed kun et tap av ytelse første gang siden leses.

 

3. Tja her også. Dersom applikasjonen blir deployet riktig på server vil ingen kunne laste ned kildekoden fra en url mot servern (tror f.eks IIS nekter å vise aspx kode til klienter uten at man eksplisitt setter opp IIS servern til å gjøre dette).

Utro tjenere vil vel kunne kopiere filene med koden dersom de har tilgang til servermaskinen, men en .Net DLL kan man uten problemer hente ut all koden med et prgoram som Reflektor dersom du ikke har obfuskert dll'en (.Net obfuscator?).

Så aller sikrest er det nok med en obfuskert DLL deployet til server.

Lenke til kommentar

1) Som wolf5 sier så vil koden alltid kjøres etter at den er kompilert. Kompilering skjer kun første gangen etter at filen(e) er endret. Forskjellen mellom .Net 1.x og 2.0 er at i 2.0 blir ikke alt kompilert til én DLL, men en hel haug av dem. Slik at kun sider du endrer blir kompilert.

 

2) "inline" code er også mulig med .Net 1.x. Det eneste nye her er at Visual Studio 2005 støtter intellisense i .aspx filen.

 

3) Jo, hvis du er paranoid ;) Du må huske på at hvis noen faktisk klarer å få tilgang til serveren er det ganske enkelt å dekompilere DLL filene også. ( Reflector - http://www.aisto.com/roeder/DotNet/ ).

 

Jeg har ikke testet Express versjonen av VS.Net noe særlig, så det kan godt stemme at du ikke får kompilert web-applikasjoner til DLL filer derfra. Uansett så heter det vel "Publish" fra Visual Studio. Du kan også kompilere via command prompt. %windir%\Microsoft.net\framework\v2...noe..\msbuild.exe.

 

Når du kompilerer website'n din kan du også velge å kompilere innholdet i .aspx filene ("html-koden"). Hvis du bruke IIS6 kan hele site'n legges i én DLL fil om du ønsker.

 

At du ikke får kjørt .Net 2.0 koden på serveren hvor du hoster kan være fordi man må velge mellom 1.1 eller 2.0. Så at den støtter det er ikke det samme som at man har valgt å kjøre på 2.0. Kanskje du har noen instillinger i kontrollpanelet for web'n din? Ellers må du nok ta kontakt med dem for å forandre site'n til .Net 2.0.

Endret av jorn79
Lenke til kommentar

Takk for gode svar :thumbup:

 

Jeg har ikke testet Express versjonen av VS.Net noe særlig, så det kan godt stemme at du ikke får kompilert web-applikasjoner til DLL filer derfra. Uansett så heter det vel "Publish" fra Visual Studio. Du kan også kompilere via command prompt. %windir%\Microsoft.net\framework\v2...noe..\msbuild.exe.

 

7222918[/snapback]

 

Betyr det at man ikke kan bruke "code file" (tidligere "code behind") fra Express? Med mindre man kompilerer hver enkelt fil via command prompt?

Lenke til kommentar
Betyr det at man ikke kan bruke "code file" (tidligere "code behind") fra Express? Med mindre man kompilerer hver enkelt fil via command prompt?

7224535[/snapback]

 

Bruk ALLTID codebehind/"code file". Akuratt som tidligere. Det er ikke noe forskjell med tanke på kompilering...

Lenke til kommentar
Betyr det at man ikke kan bruke "code file" (tidligere "code behind") fra Express? Med mindre man kompilerer hver enkelt fil via command prompt?

7224535[/snapback]

 

Bruk ALLTID codebehind/"code file". Akuratt som tidligere. Det er ikke noe forskjell med tanke på kompilering...

7224625[/snapback]

 

Sorry at det blir mye frem og tilbake nå. Men som jeg skrev, når jeg ikke får kompilert fra Express, vet jeg ikke helt hva jeg skal gjøre.

 

Før kompilerte jeg alle cs-filene inn i en .dll og la den i bin-katalogen. Men nå?

 

Jeg leste, også som nevnt, noe om at jeg bare kunne laste over cs-filene direkte til server (slik de ligger i localhost, dvs på samme nivå som aspx-filen). Men det funka altså ikke. Tror du det er noe med netthotellet? Eller må jeg selv gjøre noen innstillinger for å få det til å funke?

 

Og er det i tilfelle slik at serveren selv kompilerer cs'ene for meg (hvis det hadde funka, da)? :hmm:

Lenke til kommentar
Sorry at det blir mye frem og tilbake nå. Men som jeg skrev, når jeg ikke får kompilert fra Express, vet jeg ikke helt hva jeg skal gjøre.

 

Før kompilerte jeg alle cs-filene inn i en .dll og la den i bin-katalogen. Men nå?

 

Jeg leste, også som nevnt, noe om at jeg bare kunne laste over cs-filene direkte til server (slik de ligger i localhost, dvs på samme nivå som aspx-filen). Men det funka altså ikke. Tror du det er noe med netthotellet? Eller må jeg selv gjøre noen innstillinger for å få det til å funke?

 

Og er det i tilfelle slik at serveren selv kompilerer cs'ene for meg (hvis det hadde funka, da)? :hmm:

7224755[/snapback]

 

Kompilering i andre utgaver av VS.Net 2005 lager heller ikke DLL filer når du kompilerer web-prosjekter. Det eneste den gjør er å faktisk sjekke at koden kan kompileres. Kompileringen blir utført på webserveren. Du kopierer bare rubbel og bit over på webserveren (i samme mappestruktur som det ligger i prosjektet/lokalt på maskinen din), og så skjer kompileringen automatisk når noen browser sidene.

 

For å lage DLL filer trykker du Build - Publish. (vet ikke om den finnes i Express?)

 

For meg så virker det som om webserveren din er satt til å kjøre på .Net 1.1. Dette er en instilling som må gjøres i IIS.

 

 

Edit: For .cs filer som ikke tilhører en .aspx fil (egne klasser f.eks.). Så må disse ligge i APP_CODE katalogen for å bli kompilert. VS.Net 2005 spør deg også om du ikke ønsker å legge dem her hvis du prøver å lage en ny klasse.

Endret av jorn79
Lenke til kommentar
Sorry at det blir mye frem og tilbake nå. Men som jeg skrev, når jeg ikke får kompilert fra Express, vet jeg ikke helt hva jeg skal gjøre.

 

Før kompilerte jeg alle cs-filene inn i en .dll og la den i bin-katalogen. Men nå?

 

Jeg leste, også som nevnt, noe om at jeg bare kunne laste over cs-filene direkte til server (slik de ligger i localhost, dvs på samme nivå som aspx-filen). Men det funka altså ikke. Tror du det er noe med netthotellet? Eller må jeg selv gjøre noen innstillinger for å få det til å funke?

 

Og er det i tilfelle slik at serveren selv kompilerer cs'ene for meg (hvis det hadde funka, da)? :hmm:

7224755[/snapback]

 

Kompilering i andre utgaver av VS.Net 2005 lager heller ikke DLL filer når du kompilerer web-prosjekter. Det eneste den gjør er å faktisk sjekke at koden kan kompileres. Kompileringen blir utført på webserveren. Du kopierer bare rubbel og bit over på webserveren (i samme mappestruktur som det ligger i prosjektet/lokalt på maskinen din), og så skjer kompileringen automatisk når noen browser sidene.

 

For å lage DLL filer trykker du Build - Publish. (vet ikke om den finnes i Express?)

 

For meg så virker det som om webserveren din er satt til å kjøre på .Net 1.1. Dette er en instilling som må gjøres i IIS.

 

 

Edit: For .cs filer som ikke tilhører en .aspx fil (egne klasser f.eks.). Så må disse ligge i APP_CODE katalogen for å bli kompilert. VS.Net 2005 spør deg også om du ikke ønsker å legge dem her hvis du prøver å lage en ny klasse.

7224818[/snapback]

Takk!! :thumbup:

 

Tror jeg skjønner det nå. Skal ta en prat med hotellet. Får ikke kontakt med SQL'en heller, så det er mulig de sliter litt....

Lenke til kommentar

7224755[/snapback]

 

 

 

 

For meg så virker det som om webserveren din er satt til å kjøre på .Net 1.1. Dette er en instilling som må gjøres i IIS.

 

 

Edit: For .cs filer som ikke tilhører en .aspx fil (egne klasser f.eks.). Så må disse ligge i APP_CODE katalogen for å bli kompilert. VS.Net 2005 spør deg også om du ikke ønsker å legge dem her hvis du prøver å lage en ny klasse.

7224818[/snapback]

Du hadde helt rett. De kjørte på 1.1. Nå er det forandret og ting funker.

 

Tusen takk for hjelpen!:)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...