31. august 2002 - 16:47Der er
5 kommentarer og 1 løsning
ASP.NET - 2/3 tiers
Jeg er ikke sikker på, at dette er den rette kategori at stille dette spørgsmål i, men here it goes:
Jeg er netop begyndt med .NET eller rettere ASP.NET.
Under dette, er jeg flere gange stødt på begrebet 2, 3 og n-tiers. Hvad menes præcist med dette? Har det noget at gøre med, hvad der ligger på klient og server(og evt. db-server)? Når man taler om servside-scripting ligger der vel ikke noget som sådan på klienten (får jo f.eks. sendt noget html tilbage fra servers vha. ASP.NET og evt. C#).
Håber der er nogen, der kan give mig lidt hjælp, for rundt om på Nettet bliver disse lag forklaret på mange (vidt forskellige) måder efter min mening!
Når 2 komponenter er "tied" er de "forbundne". Hvis du har et n-tier system (hvor n kan have forskellige værdier selvfølgelig) betyder det at du har et lag af forskellige komponenter. Dette bruges mest i databaseprogrammering.
Hvert lag kan så skiftes ud med en vilkårlig komponent der deriver fra base classen for det lag, fx "Database" På den måde sikrer man at der skal meget lidt kodeændring til at skifte fra mysql til mssql fx.
.. man skal bare skifte ud i det rette lag, mens alle andre lag kan beholdes. Hvert lag har så et interface (abstrakt set altså, ikke nødvendigvis et interface!) som kan ses af de to lag det skal forbinde med (tie). Derfor er det muligt at lave komponenter til et givent lag uden at have koden til de andre lag.
Okay.. Der lettede tågen lidt! Er det i øvrigt korrekt forstået, at klienter er 'tynde', når man benytter ASP.NET... Der ligger vel ikke andet, end på dem end browseren(modsat kan man vel gøre dem tykke vha noget javascript og en java applet)?? Jeg har set eksempler, hvor der er blandet C# sammen med asp-kode i .aspx filen - er det ikke det man vel kode for uheldig sammenblanding eller hård kobling? Burde alt C# ikke ligge på f.eks. tier 2 i klasse-filer?
Godt =) Man kan godt argumentere for at ASP.net afvikles både på server og client. I de fleste tilfælde køres koden på serveren som managed code i dll-filer, der automatisk kompileres af MS' JIT compiler (Just-In-Time). Dine aspx og cs-filer m.v. bliver oversat fra c# eller vb.net eller hvad du nu benytter til MSIL (Microsoft Intermediate Language) som er et mellemniveausprog imellem assembler og højniveau som fx c# Men hvis du nu har valgt at bruge en validator til fx et input felt i en Web Form vil serveren sende javascript kode sammen med html-koden som selvfølgelig vil blive afviklet på klienten. Altså ligesom klassisk ASP.
Dit andet spørgsmål: At blande kode sammen med html skulle helst undgås, jo! Og ja al C# kode burde ligge et niveau længere væk. Men vær også opmærksom på at det kræver utroligt mange ressourcer - hvis du har mange besøgende - at benytte dig af Server Controls (altså når du bruger "runat=server"). Dette får nemlig serveren til at lave et nyt instance af objektet ved hver eneste request hvilket kræver meget hukommelse og er langsomt. Se iøvrigt .NET dokumentationen for yderligere råd om Performance Optimization. Men hvis dit mål er flot kode, så hold dig til klasse-filer. Et andet problem med dette er dog også udviklingshastigheden, der forværres markant ved udvikling af små sites, hvis man skal skrive al kode i codebehind filer.
Jeg har følgende email: martin2000@stofanet.dk Jeg skal udarbejde en datamatikeropgave, og jeg har valgt at kaste mig ud i .NET - har arbejdet i nogle måneder med C#, så lidt kender jeg da til det ;-).
Synes godt om
Ny brugerNybegynder
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.