Avatar billede tmouritsen Nybegynder
05. november 2002 - 19:50 Der er 22 kommentarer og
5 løsninger

Ulemper ved (ASP).NET teknologien?

Jeg sidder og skal lave en saglig kritik at .NET, men mangler nogle argumenter. Hvorfor er .NET bedre/dårligere end Java, C++.

Hvorfor skal man ikke skifte fra ASP/PHP til ASP.NET til sine webapplikationer?
Avatar billede rullemarie Praktikant
05. november 2002 - 19:55 #1
Hej, jeg er ved at lave en opgave, hvor .NET er en vigtig faktor. Jeg ahr fået skrevet følgende. Du kan jo se på det, og hvis der er noget der kan bruges, skal du være velkommen.

Hvad er .NET og hvad består det af
Microsofts .NET platform er en betegnelse for en række standarder, teknologier og produkter, der samlet udgør en udviklingsplatform. Denne udviklingsplatform er Microsofts bud på, hvad næste generation af applikationer skal baseres på. Den centrale teknologi i .NET platformen er .NET frameworket, som er en objektorienteret platform for udvikling af Windows og Web-baserede applikationer, men andre platforme vil komme til løbende, blandt andet nævnes smartdevices. .NET frameworket understøtter udvikling med og integration mellem flere sprog (p.t. understøttes ca. 30 sprog  i .NET frameworket). .NET frameworket består dels af en række run-time services, samt et stort klassebibliotek (de såkaldte ”base classes”), der samlet stiller en komplet udviklings- og eksekverings-platform til rådighed for udviklere og brugere.
Microsoft har udviklet en ny version af deres udviklingsværktøj Visual Studio, som blandt andet indeholder .NET frameworket og velkendte programmeringssprog i opdaterede versioner (VB.NET, C++.NET, C#.NET, J#.NET).
XML er blevet en vigtig faktor i .NET platformen, da den danner grundlag for mange af .NETs teknologier, dels som brugergrænseflade til .NET teknologier og produkter.
Internetbaseret udvikling er blevet en væsentlig del af mange virksomheders kontakt og promovering til omverdenen, men det har hidtil været svært og ressourcekrævende at lave browser-baserede Internet applikationer, der funktionalitetsmæssigt har kunnet leve op til, hvad man kender fra traditionelle klient / server applikationer.
Microsoft har med ASP.NET lavet en udviklingsmodel, der gør det muligt at udvikle mere avancerede Internet-applikationer end hidtil. Det er dog stadig nødvendigt, at have en vis viden om Internet teknologier på forhånd, for at kunne lave en applikation af høj kvalitet.
Essensen i .NET platformen er, at man som udvikler har fået mange nye og avancerede faciliteter, der kan benyttes til både almindelig applikationsudvikling samt Internetbaserede applikationer. Men for at få det optimale udbytte af .NET frameworket, kræver det, at man som udvikler opnår en bred viden inden for et eller flere af .NET programmeringssprogene, samt at man til en vis grad behersker objekt-orienteret udvikling.


Hvordan fungerer ASP.NET så?
For at benytte .NET, skal der som nævnt ovenfor installeres .NET frameworket. Når dette er gjort, er der mulighed for at udvikle i de understøttede .NET programmeringssprog.
Nedenfor er en figur, der viser sammenhængen i afviklingen af en applikation.
Applikationen kan være programmeret i eksempelvis et eller flere af de understøttede programmeringssprog. Koden skal opfylde CLS, som er et regelsæt for, at de forskellige programmeringssprog kan benyttes i fællesskab, herunder multipel nedarvning, exceptions og andre egenskaber, for at det eksempelvis kan afvikles i en ASP.NET- eller Windows Forms-applikation. BCL er en samling af egenskaber i .NET frameworket, som alle sprog der understøtter .NET frameworket kan benytte i fællesskab, det er altså en samling af komponenter og klasser, herunder grafik, databasetilgang og lignende. Når koden er skrevet, skal den kompileres, så programmet kan afvikles. Dette sker i 2 trin. Det første er, at koden kompileres til Microsoft intermediate language (MSIL) med metadata. Denne kode kompileres derefter af CLR til maskinkode, så det kan afvikles under det aktuelle operativsystem, som i gruppens tilfælde er Windows.
En dybdegående beskrivelse af de i figuren angivne programmeringssprog, og de der ligger til grund for disse, vil være at finde senere i teknologiafsnittet.

13.2.5 Hvorfor så bruge ASP.NET?
ASP.NET, og .NET i det hele taget er Microsofts helt store satsning, og virker meget gennemarbejdet. Dette afspejles, i alle de mange fordele der er ved at bruge denne nye teknologi, fremfor de måder, det tidligere har været muligt at udarbejde applikationer til både Internettet og Windows på.
Programmering i .NET er gjort meget nemt, også for den uerfarne udvikler, idet der i frameworket er indlejret mange komponenter, som frit kan benyttes. Disse komponenter, kan være alt fra knapper, tekstbokse, valideringsfunktioner og kalendere, som ved et simpelt muse-klik kan tilføjes til en applikation, via drag-and-drop. Ud over at dette betyder, at man hurtigt kan få udarbejdet en simpel applikation, med en smule funktionalitet, og en flot brugergrænseflade, betyder det også, at man kan vælge at lade en designer udarbejde brugergrænsefladen, vil kunne gøres uden nogen form for programmeringsmæssige evner, og så lade en programmør tage sig af den bagvedliggende kode. Dette har i samme omfang ikke været muligt tidligere.
En af de mange andre fordele der kan nævnes ved at .NET teknologien, når der kigges på web-applikationer (ASP.NET), er at der i systemet er bygget en masse event-handlere. Som nævnt tidligere i dette afsnit, sendes der fra serveren kun html og java-script til klienten. Disse sider er grundlæggende statiske, men ved hjælp af scripts, er det for serveren muligt at overvåge klienten. Dette sker ved, at hver gang der udføres en event på klienten, sender klienten en besked om dette til serveren, som så varetager denne event. Serveren vurderer så, om der ud fra eventen skal ske noget. Er dette tilfældet, så sender serveren, den samme side til klienten igen, men med de nye værdier. Et eksempel på dette kunne være en valideringskontrol. Efter at en bruger har indtastet noget i et teksfelt, sender klienten via et java-script en besked med det indtastede til serveren. Serveren validerer så det indtastede. Er det indtastede korrekt, sker der ikke noget, men er det ikke, sender serveren den pågældende side med indtastningsfeltet til klienten igen, men denne gang med en fejlmeddelelse ud for det felt, hvor der er indtastet noget forkert. Alt dette sker dog uden at brugeren lægger mærke til det. For brugeren vil det se ud som om, at fejlmeddelelsen kom frem med det samme brugeren havde indtastet i tekstfeltet. Desuden sker det hele uden den store indsats fra programmørens side, for denne funktionalitet ligger i en af standard-komponenterne i .NET, og kan derfor indsættes i en applikation meget nemt, og med et minimum af kodelinier, i modsætning til tidligere, hvor funktionalitet til validering af brugerinputs har været noget af det mest tidskrævende en programmør kunne beskæftige sig med.


/Rullemarie
Avatar billede tmouritsen Nybegynder
05. november 2002 - 20:03 #2
rullemarie>> Din tekst forholder sig ikke kritisk til platformen og kan derfor ikke bruges i mit sammenhæng.

Sagen er den at jeg har masser af argumenter FOR at bruge .NET, men jeg mangler KRITIK. Det kan ikke passe at det hele er rosenrødt.
Avatar billede rullemarie Praktikant
05. november 2002 - 20:07 #3
Okay, du kan sige at .NET er for øjeblikket platformsafhængigt. Der er dog nogle mennesker, der arbejder på projektet go-mono, hvor der arbejdes på at oversætte frameworket til en Linux-platform. Se endvidere www.go-mono.com
Avatar billede neteffect Nybegynder
05. november 2002 - 20:13 #4
Ulemper:

Ikke standard - Microsoft proprietary. Ingen W3C-aktiviteter omkring .net eller lignende produkter (IBM Websphere).

Ikke bagud kompatibel til asp 3. Spørg økonomichefen, hvorfor han foretrækker IBM frem for Microsoft.

Ikke nemt at lære - se bare hvordan folk her på exp. har besvær med at få selv de enkleste HTML-ting til at virke på .net-facon.

Nævn tre åbenbare fordele man som internet-BRUGER kan have af at en hjemmeside er lavet til .net-miljø. - Jeg kan ikke, og Microsoft kan mig bekendt heller ikke.
Avatar billede tmouritsen Nybegynder
05. november 2002 - 20:14 #5
Ja - det er lidt svært at komme med noget rigtigt konkret.

Jeg er klar over - som du skriver - det er platformsafhængigt, men da store dele af .NET er standardiseret, så er det bare et spørgsmål om tid før projekter som go-mono og andre lignere initiativer, tilbyder den funktionalitet. Derfor er det ikke et stort problem.
Avatar billede simon.ulsnes Nybegynder
05. november 2002 - 20:20 #6
.NET kan, som rullemarie nævner, fordi det hele oversættes til MSIL, hurtigt porteres til andre platforme, som Mono-projektet arbejder på.
Rent programmeringsmæssigt, er det bedre, fordi man i .NET i princippet kan programmere i alle sprog. Alting bliver oversat til den samme kode. Derfor kan man forestille sig et projekt, som er programmeret i C#, VB og COBOL.NET på én gang - uden problemer.
Desuden gør .NET Frameworket det til en leg at programmere - man skal ikke til at lære et helt nyt API bare fordi man gerne vil have noget netværksfunktionalitet ind i sit program, det hele fungere via ensartede klasser.

Bagsiden af .NET, må nok først og fremmest være performancen. Den er ikke ulidelig langsom, og da slet ikke når det gælder Web-applikationer hvor alting caches, men ud over det skal alting compiles til maskinkode før eksekvering, hvilket jo tager sin tid.
Nogle mener også, at det at koden oversættes til MSIL er dårligt, fordi det derfra kan disassembles og derved kan kildekode stjæles. Dette argument holder dog ikke helt, da der allerede findes scramblers som kan gøre dette umuligt.

// Simon
// This sentence no verb.
Avatar billede tmouritsen Nybegynder
05. november 2002 - 20:20 #7
neteffect>>

1. ikke standard - ikke helt sandt, se min tidligere kommentar

2. ikke <-- kompatibel - IIS kan da stadig fortolke ASP, og så koster det ikke mere at køre .NET end ASP

3. svært at lære - er alle nye teknologier ikke det? specielt når ms har flyttet webprogrammering til en helt ny æra, er det da svært. det var også svært for dos programmørerne at begynde at lave windows applikationer

4. det skal være brugeren fuldstændig ligegyldig hvilken platform hans applikation er udviklet på, det skal bare fungere
Avatar billede simon.ulsnes Nybegynder
05. november 2002 - 20:21 #8
neteffect >> ASP.NET er bagudkompatibelt med ASP 3 langt hen ad vejen... bare man fortæller det, at det skal være det.
Avatar billede simon.ulsnes Nybegynder
05. november 2002 - 20:23 #9
SOAP, en af hovedingredienserne i .NET, er da så vidt jeg ved en W3C standard. Desuden er C# og CLR anderkendt af ECMA.
Avatar billede tmouritsen Nybegynder
05. november 2002 - 20:23 #10
simon.ulsnes>> du har ret i at .net skal compiles til naskinkode før det kan eksekveret - men det er jo kun den første gang det skal køres, eller endda som en del af installationen. princippet er da meget hurtigere end f.eks. java for det skal fortolkes ved eksekvering
Avatar billede simon.ulsnes Nybegynder
05. november 2002 - 20:26 #11
tmouritsen >> præcis, det caches... det kan godt være jeg ikke fik udtrykt det klart nok. Hvis vi snakker om normale programmer, skal de compileres én gang siden computeren blev tændt.
Avatar billede tmouritsen Nybegynder
05. november 2002 - 20:30 #12
simon.ulsnes>> Er det en påstand du er sikker på? Det går mod den idé jeg har om .NET - jeg er klar over at det er det princip der bruges på ASPX/ASCX filerne i ASP.NET, men der bliver compilet én gang for alle i almindelige applikationer, det sørger JIT compileren for...
Avatar billede jakobandersen Nybegynder
05. november 2002 - 20:34 #13
Det største problem jeg ser er at man ikke (endnu) kan compile sin framework kode direkte til maskinkode, der er flere ulemper ved dette:

1. Performancetab ved brug af JIT compileren
2. Distribuering af applikationer
3. IL koden kan hvis den ikke scrambles(hvilket giver yderligere performancetab) disassembles
Avatar billede simon.ulsnes Nybegynder
05. november 2002 - 20:38 #14
tmouritsen >> Nej, jeg er ikke helt sikker, det er en konklusion jeg er nået frem til, men jeg er kommet i tanker om, at det jo egentlig lige så godt kan være fordi JIT-compileren skal startes op først.
Avatar billede simon.ulsnes Nybegynder
05. november 2002 - 20:39 #15
...altså for at checke om det allerede er compilet...
Avatar billede odegaard Nybegynder
05. november 2002 - 20:39 #16
Mht. at det er svært at lære:
Jeg har ALDRIG stiftet bekendskab med et nyt programmeringssprog/tankegang som har været så nemt at gå i gang med som VB.NET og C#.
Dette gælder BÅDE for Windows-applikationer og ASP.NET.
Har man blot mindre kendskab til OOP-programmering, så vil jeg mene at måden at lave .NET på er yderst tiltalende.
Selvfølgelig har folk der kommer fra ASP-miljøet et stort problem til at vænne sig til at tænke meget mere objekt-orienteret end tidligere, og med egne erfaringer og eksempler jeg har set her på exp, så er det tydeligt at man i begyndelsen har en tendens til at lave ASP.NET på ASP-måden (fx. blande kode og design i en uredelighed). Så et kritik-punkt kunne være at den største gruppe der ville skifte til ASP.NET (dvs. ASP-programmører), ofte vil have svært ved at tilpasse sig de nye tankegange fra start af. Dette ville jeg nu kalde et lidt tyndt argument for ikke at skifte til ASP.NET, men det er ihvertfald noget man bør være opmærksom på. Jeg mener ikke man bør starte med at lave nye sites eller opgradere ASP-sites til ASP.NET, før man har forsøgt med en masse eksempler, og forstået idéerne bag ASP.NET-programmering.

NetEffekt-> Selvom du siger det er bagudkompatibelt, så kan du ikke dele Session og Application-værdier, eller dele events i global.asa og global.asax.
Derfor ender man ofte ud med at skulle lave to separate sites, med hver deres sprog, da de ikke kan integreres fuldt ud.
Det ville jo ellers være lækkert hvis man kunne opgradere én side af gangen...
Avatar billede simon.ulsnes Nybegynder
05. november 2002 - 20:48 #17
hrhrm.... det var vist mig der sagde det var bagudkompatibelt... og jeg sagde også "langt hen ad vejen"...
Avatar billede rwaehrens Nybegynder
05. november 2002 - 21:19 #18
moonduck >> man kan godt kompilere direkte til maskinkode - ngen værktøjet kan fikse den sag.

tmouritsen >> mail mig lige imorgen (rw@logi...) - jeg mener, at en af Java gutterne for et stykke tid siden har lavet en lille redegørelse for argumenter imod .NET. F.eks. har man ikke noget svarende til en applet i ASP.NET verdenen. Det betyder, at en af de ting, som har har udviklet vil blive endog meget svært at lave i ASP.NET...
Avatar billede tmouritsen Nybegynder
05. november 2002 - 21:23 #19
rwaehrens>> Det gør jeg. Takker.
Avatar billede tmouritsen Nybegynder
05. november 2002 - 21:29 #20
Jeg lader spørgsmålet stå åbent lidt endnu - så skal jeg nok dele point ud
Avatar billede tuxic Nybegynder
05. november 2002 - 22:25 #21
en korrektion til moonducks indlæg: IL kan altid disassembles og ofte kan man få endog rigtig C#-source genereret (check www.saurik.com). Men det er vil forøvrigt irrelevant når talen er på ASP.NET apps. Desuden er det lidt pudsigt at MANGLEN af at koden kompileres direkte til maskinekode skulle mindske portabiliteten.
Avatar billede simon.ulsnes Nybegynder
05. november 2002 - 22:29 #22
ngen kompilerer ikke til maskinkode, den optimerer bare koden så den afvikles hurtigere på den pågældende maskine...
Avatar billede tuxic Nybegynder
05. november 2002 - 22:37 #23
Det er altså ikke rigtigt simon:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpgrfnativeimagegeneratorngenexe.asp
desuden giver ngen INGEN performance forbedring iforbindelse med ASP.NET applications.
Avatar billede odegaard Nybegynder
05. november 2002 - 22:45 #24
Man kan faktisk godt lave C#-applets ! Det kræver "blot" at brugeren har frameworket installeret, i stil med at Java kræver en Virtual Machine.
Ref: http://www.csharphelp.com/archives/archive109.html
Avatar billede simon.ulsnes Nybegynder
05. november 2002 - 22:50 #25
Jo det er:
The Native Image Generator creates a native image from a managed assembly and installs it into the native image cache on the local computer. Running Ngen.exe on an assembly allows the assembly to load and execute faster, because it restores code and data structures from the native image cache rather than generating them dynamically.

ngen kompilerer IKKE det hele til native kode som kan køres på alle, eksempelvis, Windows-platforme!

Desuden kan ngen forbedre performancen i ASP.NET-applikationer som bruger kompileret code-behind, hvis f.eks. alle siderne lagres i en DLL-fil.

// Simon
Avatar billede simon.ulsnes Nybegynder
05. november 2002 - 22:52 #26
OK, jeg sagde optimerer, hvad jeg mente var, at den lægges i cachen...
Avatar billede jakobandersen Nybegynder
08. november 2002 - 01:25 #27
rwaehrens >> Som Simon også har sagt kan ngen IKKE compilere direkte til maskinkode( man kan dog svjv få compileret sin .NET kode til maskinkode hvis man selv styrer memory) men microsoft forsker for tiden i at udvikle en .NET compiler der kan generere maskinkode. Udviklingen går under navnet Bartok, du kan læse lidt om det her http://research.microsoft.com/act/

tuxic>> Nu har jeg ikke lige beskæftiget sig så meget med scramblerne men jeg skulle da mene at have hørt rygter om at de efterhånden var ved at være rimlig gode til at snyde disassemplerne, men det er selvfølgeligt et evigt kapløb :-)
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
Kurser inden for grundlæggende programmering

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