Avatar billede dannv Nybegynder
18. november 2008 - 09:29 Der er 9 kommentarer og
2 løsninger

Service multithreading returnere billede

Hej,

Jeg har oprettet en handler der på baggrund af en række parametre finder billeder frem og returnerer dem så de bliver vist på en webside.. en simpel billede service...

I essens gør den følgende...

System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(img_path);
System.Drawing.Image img = bmp;

img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);

For at optimere denne vil jeg gerne have den til at oprette en ny tråd, og via denne tråd returnere billedet, hertil benytter jeg følgende..:

ThreadStart starter = delegate { new TheWork().HandleRequest(context); };
new Thread(starter).Start();

Den kommer også ind i min metode, men der kommer bliver aldrig vist et billede på websiden.

Hvad skal der til for at oprette en multithreaded image service...??
Avatar billede aaberg Nybegynder
18. november 2008 - 13:21 #1
Jeg forstår ikke helt dit problem. Du får vel ikke bedre performance ved at sende billedet til klienten fra en anden tråd!?

Kan du forklare lidt bedre, hvorfor du mener det vil give bedre performance (Det kan jo være jeg misforstår din problemstilling), og eventuelt vise lidt mere af din kode?
Avatar billede dannv Nybegynder
18. november 2008 - 14:27 #2
... formulering er måske ikke helt korrekt fra min side.. men med mange brugere, ville det vel være en fordel at jeg kan håndterer flere requests paralellt!

Performance på den enkelte tråd vil ikke blive anderledes, men jeg vil kunne håndterer flere requests samtidigt... (Det er i hvertfald tanken.. jeg kan have misforstået et og andet...??)
Avatar billede aaberg Nybegynder
18. november 2008 - 15:17 #3
Når der bliver oprettet flere forbindelser til asp.net side på en gang, vil asp.net automatisk behandle disse forbindelser i flere tråde. Der kan altså sagtens være mange instanser af din handler som kører på samme tid.
Avatar billede aaberg Nybegynder
18. november 2008 - 15:19 #4
Hvis det er en handler som henter et billede op fra en database, kan du jo prøve at oprette en testside, hvor du viser mange billeder, som alle kalder handleren med forskellige query strings. Hvis billederne kommer til syne på samme tid, vil det betyde at der er flere instanser af din handler som kører på samme tid.
Avatar billede arne_v Ekspert
18. november 2008 - 16:45 #5
Som aaberg siger er ASP.NET sider allere multithreaded.

Det er bad practice at starte egne traade i ASP.NET sider.
Avatar billede dannv Nybegynder
18. november 2008 - 17:10 #6
OK, Billederne ligger ikke i db, men en reference i db, og billederne på filsystem, så de bliver 'bare' streamet derudaf...

Når jeg så engang får 10000+ brugere på min side, hvil der til hver billede-request, blive oprettet separete tråde..? Er dette korrekt forstået..?? Så jeg faktisk ikke selv skal implementerer denne logik..??
Avatar billede arne_v Ekspert
18. november 2008 - 17:34 #7
Ja.

Med 10000 concurrent brugere som streamer billeder saa er der nogle krav til HW og baandbredde, men ...
Avatar billede dannv Nybegynder
18. november 2008 - 18:15 #8
smider i nogle svar så kan i dele potten... :-)
Avatar billede aaberg Nybegynder
18. november 2008 - 21:07 #9
Hvis du får 10000 samtiddige brugere, som streamer billeder fra din side, kan du nok ikke få det hostet på et almindelig webhotel :-D

Jeg læste et sted, at Youtube på en god dag viser 100 millioner videoer. Jeg ved ikke hvor mange servere youtube bruger for at kunne håndtere dette, men mange tusinde er sikkert ikke helt ved siden af.
Avatar billede dannv Nybegynder
19. november 2008 - 12:49 #10
arne_v svar fra dig ligeså...?
Avatar billede arne_v Ekspert
19. november 2008 - 15:13 #11
ok
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