lucgo446Medlem sedan aug. 2002221 inlägg Hur skulle ni bygga för att få det mest flexibelt och snabbaste respons?
Skulle ni använda StringBuilder i page_load på .aspx och .ascx ELLER bygga upp sajten med asp.net kontroller (Label, Panel, TextBox mfl)?
OBS! Detta är en större nyhetsportal som inte kräver några postbacks därmed ingen viewstate (Formulärinmatningar sker via ajax), vill gärna få svar från storlirare som kodat stora sajter med hellst mkt trafik och med prestanda in mind! vad är er erfarenhet?
emissionMedlem sedan dec. 19996 721 inlägg Om du ska hålla på och bygga ihop med strängar så kan du lika gärna hålla på med vanlig ASP. Kontroller är det som gäller. Flexibiliteten är god och du kringgår inte .NET:s egna prestandahöjande mekanismer. Cachning och välfungerande datalager ger märkbart högre prestanda. Renderingsmetoden är underordnad.
GladhMedlem sedan maj 20012 812 inlägg
lugo446 skrev:
OBS! Detta är en större nyhetsportal som inte kräver några postbacks därmed ingen viewstate (Formulärinmatningar sker via ajax), vill gärna få svar från storlirare som kodat stora sajter med hellst mkt trafik och med prestanda in mind! vad är er erfarenhet?
Om det är ren rå-prestand som är intressant för dig så glömmer du allt vad ASP.NET heter och genererar HTML-sidor vid varje uppdatering.
Så varje ny artikel resulterar i en ny HTML-sida där all information redan är färdigt parsad, och så genererar du en ny första-sida, men artiklen inlagd.
Bättre prestanda än så får du inte.
När det gäller ASP:NET så finns det en sak som alltför många glömmer bort det är att prestanda är INTE samma sak som skalbarhet. Det betyder att du kan bygga en sida med prestand i åtanke och det är ruggigt snabb, men när du lanserar den och får en massa hits så blir den långsam. Det beror helt enkelt på att när man optimerar prestandan så brukar man försämra skalbarheten, och när man förbättrar skalbarheten så försämras prestandan. Så om du är ute efter en riktigt stor-site med många besökare så lägg ditt krut på att kunna skalerar din site, bland annat så gäller det möjlighet att lägga din site över en web-farm vilket då gör att sessioner inte är en bra lösning (vilket kanske hade gjort att prestandan ökat på en singel-server).
Lika så är det kanske inte en bra lösning att använd sig av en SqlDataReader och binda den mot en repeater (som är det ultimata i prestandväg) eftersom du då håller en koppling öppen mot databasen ända tills du bundit färdigt all data till din kontroll. Här kanske det istället är bättre att hämta upp en DataTable med ett SqlDataAdapter och sedan stänga sin databaskoppling innan du bundit datan till ditt objekt.
Det finns massor att tänka på när det gäller skalbarhet, kan jag vinna något på att använda COM+ och använda redan instansierade klasser och där med ta tillbaka den förlust i prestanda som man gör när man kallar på andra processor. Det kanske du kan om du har en klass som tar långtid att instansiera när man har många besökare (kanske skall komma åt samma fil, där informationen finns...) då kan det vara vettigt att instansiera en 10-15 instanser som man sedan låter websiten anropa och använda.
Så bra prestand är inte samma sak som bra skalbarhet, medans bra skalbarhet oftas blir bra prestanda när man får många hits, men sämre prestanda vid få besökare.
- M
lucgo446Medlem sedan aug. 2002221 inlägg Tack för input!
Emission: jo, men det känns inte som det är bra prestanda att skapa så himla många Controller, trace:ar man så blir man rädd för hur mkt som igentligen skapas a la asp.net. Vi har valt att bygga upp våra UserControll med StringBuilder och rendera med HtmlTextWriter på OnRender. Vi Cachar också ouputten från controllerna där det passar (olika tider).
Gladh: Jo Html är Html, men vi räknar med att Cachen och framför allt outputcachen ska ge oss mkt stöd. Håller med dig om dom andra punkterna oxå, Vi har följt allt det där. Vi jobbar med collectioner i BL och har en webfarmlösning.
GladhMedlem sedan maj 20012 812 inlägg
lucgo446 skrev:
Vi har valt att bygga upp våra UserControll med StringBuilder och rendera med HtmlTextWriter på OnRender.
Tyvärr tappar man ju lite iden med ASP:NET's möjlighet att separera logik från design när du gör så, du måste ju in och ändra i din codebehind för att ändra något i din HTML så fall.
Självklart skall du inte använda dig av ASP:Controller om du inte har behov av dem, egentligen är det inte ofta som man behöver använda sig av <asp:Hyperlink> eller <asp:Image> efter som motsvarande HTML-kontroller fungerar utmärkt. Då dessa asp-controller faktiskt tar lite prestanda att generera så skall man inte använda dem om de inte behövs, däremot så finns det ju vissa fördelar med att använda dem, men ur ren prestandasynpunkt så är det inte så bra.
- M