Hej, Visst är det mindre cpu-krävande att skriva direkt till Outputstream än att använda Databinding. Men jag har aldrig sett att ett systems flaskhals skulle vara pga Databinding. Har kollat i gamla versioner av filerna och tidigare var det så här: JA, det är snabbare att skriva ut strängar än att jobba med många olika objekt som ska loopas osv.Prestanda HTML vs. Codebehind
jag utvecklar en web-applikation i C#. Hade tidigare en konsult till hjälp, han la i stort sett all HTML-formatering i CodeBehind, dvs byggde upp textsträngar med både HTML och data som sedan skickades till browsern.
Nu har istället en av mina kollegor tagit över konsultens uppgifter och det första han gjorde var att flytta all formatering från CodeBehind till HTML. Samtidigt implementerade vi ny funktionalitet och nu har vi plötsligt fått prestandaproblem. Har lite svårt att stämga av den nya funktionaliteten men jag får känslan att det blivit långsammare då formateringen ligger i HTML istället för i CodeBehind.
Exempel på vad som är ändrat är att tidigare var det en loop i CodeBehind som skapade en lista med länkar i form av
<CODE>
<A Href="..."><BR><A Href="..."><BR><A Href="..."><BR>
</CODE>
nu används istället en repeater.
Är det ngn som har ngn erfarenhet kring detta, kan detta påverka prestandan?
/MagnusSv: Prestanda HTML vs. Codebehind
Är det ett extremt tungt belastat system med tusentals användare på samma server och många poster på sidorna, så kanske jag kan förstå det. Annars låter det lite skumt. Du kan väl visa lite mer kod så kanske någon kan lista ut var problemet ligger.
Läs gärna den här artikeln
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt06.asp
Specielt avsnittet om Datbinding
http://msdn.microsoft.com/library/en-us/dnpag/html/scalenetchapt06.asp?frame=true#scalenetchapt06_topic13Sv:Prestanda HTML vs. Codebehind
En datagrid med två kolumner. I Codebehinden behandlades datan och utifrån denna skapades två textsträngar med HTML och data, dessa trycktes sedan ut i Datagriden m h a av en databind.
Nu är det så här:
En datagrid med ett gäng olika kolumner som innehåller olika ASP-objekt, såsom labels, hyperlinks, repeaters mm. Varje repeater innehåller sedan också ett antal objekt. Dvs för varje post är det ett antal obkelt som skall skapas och knytas data till.
Nog borde väl det gamla sättet vara snabbare än det nya, dvs det är snabbare med strängar än med objekt.
/MagnusSv: Prestanda HTML vs. Codebehind
Men jag upplever inte att prestandan är katastrofalt dålig med Databinding om man gör på rätt sätt. Se de länkar jag tipsade om.
Fördelen med server controls är att du separerar logik och presentation.
Att skriva ut HTML som strängar likt gamla ASP, gör att du blandar logik och presentation och du får på sikt svårare att ändra i och underhålla systemet, eftersom koden blir onödigt komplicerad och svårare att ändra på. Det är alltså önskvärt att använda server controls pga detta, men man får ibland se upp med prestandan. Det kanske finns mer el mindre uppenbara prestandaproblem i databinding koden som kan optimeras. Ex vis: använd ej Page.Databind()