Sto utilizzando un client di servizio Web C# tradizionale generato in VS2008 .Net 3.5, che eredita da SoapHttpClientProtocol. Questo è il collegamento a un servizio Web remoto scritto in Java.Come configurare un client del servizio Web C# per inviare l'intestazione e il corpo della richiesta HTTP in parallelo?
Tutta la configurazione è stato fatto in codice durante l'inizializzazione del client, e può essere visto sotto:
ServicePointManager.Expect100Continue = false;
ServicePointManager.DefaultConnectionLimit = 10;
var client = new APIService
{
EnableDecompression = true,
Url = _url + "?guid=" + Guid.NewGuid(),
Credentials = new NetworkCredential(user, password, null),
PreAuthenticate = true,
Timeout = 5000 // 5 sec
};
Funziona tutto bene, ma il tempo necessario per eseguire la chiamata metodo più semplice è quasi il doppio del tempo della rete ping. Considerando che un client di prova Java prende più o meno lo stesso del tempo di rete ping:
C# client ~ 550ms
Java client ~ 340ms
Network ping ~ 300ms
Dopo aver analizzato il traffico TCP per una sessione scoperto i seguenti:
In sostanza, il client C# inviato pacchetti TCP nel seguente ordine .
Client Send HTTP Headers in one packet.
Client Waits For TCP ACK from server.
Client Sends HTTP Body in one packet.
Client Waits For TCP ACK from server.
Il client Java ha inviato pacchetti TCP nella seguente sequenza.
Client Sends HTTP Headers in one packet.
Client Sends HTTP Body in one packet.
Client Revieves ACK for first packet.
Client Revieves ACK for second packet.
Client Revieves ACK for second packet.
Esiste un modo per configurare il C# servizio Web client per inviare l'intestazione/corpo in parallelo, come appare al client Java?
Qualsiasi aiuto o suggerimento molto apprezzato.
È possibile annusare le intestazioni http per la richiesta .Net e la richiesta java e confrontarle? (E suppongo che il client java usi lo stesso proxy) –
scusa, quando dico proxy intendo come in una classe proxy, piuttosto che un proxy http – Christopher
testo modificato per rimuovere i riferimenti a 'proxy' e sostituire con 'client' – Christopher