WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   bästa approch med stora mängder webservice anrop? (https://www.wn.se/forum/showthread.php?t=1065014)

naak2803 2015-06-17 17:27

bästa approch med stora mängder webservice anrop?
 
Hej,

Sitter och programmerar mot PTS webservice i asp .net 3,5.
Problemet är att jag skickar upp ca 50k nummer genom en for-loop och väntar in svar en efter en från PTS med en operatör.

alltså
1. Ett DataSet med 50k telefonnummer
2. loopar igenom dem
3. för varje loop, gör jag en slagning mot PTS för att få ut operatören.

Svarstiden från anropen är ca 0,5 sek, så hela förloppet ta ca 7 timmar!!

Hur skulle ni ha hanterat detta? även om det kanske inte går att få ner tiden, så skulle jag vilja kunna presentera för användaren genom en progressbar eller nåt liknande. eller att det tex står och räknar ner antal nummer som är kvar för uppslagningen... Hur gör jag det på bästa sätt? och är det någon som har ett exempel på detta?

digiArt 2015-06-17 20:35

Ska vi backa några steg? 50k nummer?

Vad är det du bygger?

Och personligen är jag allergisk mot dataset, ineffektivt och låst mot databasens struktur.

naak2803 2015-06-17 21:16

bygger ett system för telefonförsäljare där de får Excellistor med ca 50k telefonnummer per lista.

Sedan loopar jag över dessa nummer och för varje nummer skickar jag det i PTS's webserver och väntar på svar, som är i form av en sträng som innehåller vilken operatör telefonnumret tillhör.

x264 2015-06-17 23:22

Du borde kunna få ner allt till några sekunder.

Kör förfrågningarna parallellt bara så!

naak2803 2015-06-18 01:20

Citat:

Ursprungligen postat av x264 (Inlägg 20510564)
Du borde kunna få ner allt till några sekunder.

Kör förfrågningarna parallellt bara så!

Kan du förklara lite mer, eller länka till någon ex på nätet eller så?

x264 2015-06-18 01:23

Du kör din loop, men i stället för att vänta synkront på dina svar innan du loopar vidare till nästa så kör du bara igenom alla dina loopar utan att vänta på svar innan du går vidare.

Sedan när du väl får svar matar du in de i t.ex. mysql.

Därefter kan du exportera till excel eller liknande.

Väldigt smidigt.

EDIT:

Googla på async

SvanteH 2015-06-18 08:07

Det är inte så enkelt att webservice API't klarar anrop med flera nummer samtidigt i stället för 1 per anrop? Det låter väldigt ineffektivt.

nosnaj 2015-06-18 08:24

Citat:

Ursprungligen postat av SvanteH (Inlägg 20510571)
Det är inte så enkelt att webservice API't klarar anrop med flera nummer samtidigt i stället för 1 per anrop? Det låter väldigt ineffektivt.

Det är rätt gissat, PTS har även en metod som kan ta emot flera nummer kommaseparerat.
Kolla deras dokumentation så finner du.

AmnisJonas 2015-06-18 08:24

Jag håller med SvanteH om att du skall undersöka om det går att anropa med flera nummer samtidigt.
Annars är det asynkrona anrop som gäller, om du kan så gå upp till 4.5.2 i ramverk, om jag minns rätt så finns inte async keywordet i 3.5.
Vad gäller en uppräknande "progess" så kan du titta på SignalR (NuGet) för att pusha uppdateringar från servern.

naak2803 2015-06-18 18:28

Citat:

Ursprungligen postat av SvanteH (Inlägg 20510571)
Det är inte så enkelt att webservice API't klarar anrop med flera nummer samtidigt i stället för 1 per anrop? Det låter väldigt ineffektivt.

jo enligt deras dokumentation så har det så att man kan skicka in listan, dock har det faktiskt längre tid att få svar via den metoden än att skicka in en och en.


Alla tider är GMT +2. Klockan är nu 21:38.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson