Avatar billede bmdk Nybegynder
16. februar 2009 - 16:30 Der er 7 kommentarer og
1 løsning

Overvejelser vedr. asp.net site med ajax

Hej eksperter,

Jeg står for at skulle udvikle et site i ASP.NET, hvor der er planer om også at implementere noget AJAX. Jeg har dog et par spørgsmål til jer, som jeg gerne vil have nogenlunde på plads, inden jeg starter på projektet. Mest af alt drejer det sig om arkitektur/sikkerhed:

- Når et site med stor sandsynlighed ikke skal benyttes andre steder (f.eks. applikation til mobil eller en windows applikation), vil der så være nogen idé i, at lave en lagdelt arkitektur bag det? Her tænker jeg på datalayer, business layer m.v.

- Hvis det ikke er en nødvendighed, at lave sitet med en lagdelt arkitektur, vil det så betyde noget for sikkerheden? Her tænker jeg i forhold til SQL, som jo kommer til at ligge direkte på siden. Er det sikkert nok?

- Kan det ikke være en ulempe, at lave sitet uden den bagvedliggende arkitektur (derved objekt orienteret)? Jeg tænker primært på trafik til databasen her. I mine øjne vil det være nemmere at have f.eks. et Medlem's objekt som man gemmer i en session istedet for at tilgå databasen konstant for at hive oplysninger ud om et medlem. Eller tager jeg fejl her?

- Sidst men ikke mindst: codebehind eller ej? Er det virkelig blot en smagssag mht. codebehind, eller er der en dybere mening med det? :-)

Håber at I har tid til at skrive jeres tanker om ovenstående, det vil være en stor hjælp for mig! Hvis nogle af mine spørgsmål er dårligt formuleret, så må I endelig sige til.

På forhånd mange tak for hjælpen.
Avatar billede keysersoze Guru
16. februar 2009 - 16:56 #1
Der kan sagtens være en idé i en lag-opdeling selv ved et lille projekt - fx kan det give et klart bedre bedre overblik, opdateringer og fejlsøgning kan lettes og når/hvis engang siden skal have nyt design beholder du al logik. Men det er selvfølgelig aldrig et krav at gøre det på denne måde for det kan også komme til at tage længere tid med flere lag så er tiden et aspekt kan der sagtens være en idé i ikke at have for mange lag.

Sikkerheden hænger ikke sammen med arkitekturen - og slet ikke SQL injection. SQL Injection kan foregå i lige stor stil uanset antallet af lag eller arkitektur iøvrigt, det handler ene og alene om at vide hvad man laver (her vil det nok have noget med brugen af parametre at gøre).

Lidt som forrige svar - arkitekturen hænger ikke nødvendigvis sammen med trafikken til databasen. Arkitektur handler mere om trafik mellem lag - du kan vælge at gemme informationer, objekter eller ej, i fx sessions uanset arkitekturen. En oplagt mulighed kunne jo være at lade et lag styre netop den session, er medlemmet loadet i en session returneres indholdet derfra og ellers kaldes databasen. Antallet af lag har heller ikke noget med om du arbejder objektorienteret eller ej - du kan jo sagtens lave objekter i fx din codebehind-fil.

Uden tvivl codebehind, alt andet vil være dumt når man på denne måde har fået en logisk opdeling (lag-deling) mellem HTML og kode foræret. I klassisk asp var det svært at gøre meget anderledes da man jo var nødt til at loope data igennem for fx at udskrive en tabel - i .NET vil man meget sjældent gøre det på den måde, men derimod jo databinde, så der er ingen grund til at blande de to ting (HTML og kode) sammen.

Hvis du kigger på fx Entity Framework (i 3.5) vil du få en masse foræret omkring objekt-delen.
Avatar billede bmdk Nybegynder
16. februar 2009 - 20:01 #2
keysersoze,

Du skal  have mange tak for dit svar! :) Det giver meget mening egentlig. Skal lige have læst lidt op på det med injections m.v.

Jeg laver sitet med en lagdelt arkitektur, kan godt se hvad du mener mht fejlløsning, opdateringer, redesign m.v.

Der var en anden ting jeg lige kom til at tænke på nu her. Hvad er den smarteste måde at lave tekst på? Ved at plastre siden til med <asp:Label>'s og bruge visible = true eller false alt efter om man er logget ind eller ej? Eller bruger man normalt et html tag og gør brug af mittag.InnerHTML?

Min pointe er, at en Label jo alligevel bliver rendered som et <span></span> tag, så det er vel ét-fedt? eller?
Avatar billede bmdk Nybegynder
16. februar 2009 - 20:04 #3
Med "tekst" mener jeg de "statiske" ting såsom login boksen f.eks.:


Brugernavn:(Label eller andet html tag?)

|__________| (tekstbox)


Password: (Label eller andet html tag?)

|__________| (tekstbox)
Avatar billede keysersoze Guru
16. februar 2009 - 20:25 #4
innerHTML er i hvert fald en meget dårlig løsning så glem den tanke. Det er meget svært at generalisere hvad man skal og ikke skal - men det eksempel du stiller op med login ville jeg nok sætte op med alm html inde i et panel dog med selve tekstboksende som kontroller.
Avatar billede bmdk Nybegynder
16. februar 2009 - 20:33 #5
Okay, mange tak :)

I en panel siger du, og så bare 'hide' den panel når der er blevet logget ind?

Vil bare gerne være sikker på at få lavet noget nogenlunde fornuftigt inden jeg går igang.

Projektet skal i øvrigt bruges i sammenhæng med mit specialiseringsmodul på min uddannelse. Så intet 'professionelt' endnu ;)
Avatar billede keysersoze Guru
16. februar 2009 - 22:42 #6
det vil i hvert fald være lettere at skjule ét panel fremfor en masse kontroller - men om det er den rigtige metode i dit tilfælde er svært at vurdere uden en sammenhæng.
Avatar billede bmdk Nybegynder
16. februar 2009 - 22:54 #7
Oki, det er ihvertfald taget med i overvejelserne! Igen mange tak for hjælpen :) fedt at du gider!
Avatar billede arne_v Ekspert
17. februar 2009 - 03:21 #8
Et par supplerende betragtninger:

Det vil næsten altid være en fordel at bruge lagopdelt arkitektur. ihvertfald hvis det er over console helloworld niveauet. Og ASP.NET er designet til at gøre det nemt at lave lag opdelt.

Du kan finde side op og side ned om PL, BLL, DAL på Microsofts web sider.

Personligt vil jeg forslå PL, CL, DAL for simpel CRUD app og PL, CL, BLL, DAL for alt andet.

Lagopdeling giver ikke i sig selv højere sikkerhed, men det gør det meget nemmere at implementere sikkerhed.

Brug af lagopdeling forhindrer dig ikke i at cache data som persisteres i database i enten DAL eller BLL - eller i at have data som ikke persisteres.

Hvis du vil have nytte af ASP.NET's muligheder skal du dele tags og kode ud i separate filer.
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