21. oktober 2009 - 09:47Der er
6 kommentarer og 1 løsning
BackgroundWorker i ASP.NET
Hej
Jeg skal have lavet en ASP.NET rapport som henter data i et meget langsomt system.
For at optimere performence på dette, kunne jeg godt tænke mig at starte en tråd/backgroundworker op som cyklisk står og opdatere en statisk object som jeg kan hente data fra på Page_Load eventet..
Du kan godt starte en tråd og lade den gøre noget og lade client polle for resultat.
Men: - ASP.NET's tråd håndtering bliver suboptimal, da du starter tråde bag om ryggen på den - hvis web app genstartes så ender tingene i et rod
Hvis det er en inhouse løsning vil jeg mene at "start" request skal smide noget i en message queue, du skal have en Windows service som processer requests i message queue og gør svar tilgængelige et sted (fil/database/message queue) som "poll" requests kan checke.
Hvis det er et web hotel har du nok ikke andre muligheder end en tråd løsning.
Jeg havde faktisk overvejet muligheden at lave en Windows Service som kunne kommunikere med asp.net via noget WCF, men jeg droppede idéen fordi jeg ville holde koden så simpel som muligt (kan godt lyde som lidt "overkill" for kunden at jeg skal bruge en Windows service for at lave en simpel rapport).
Men måske der er det den eneste vej frem hvis det skal være noget nogenlunde stabil kode.
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.