J'utilise un client de service Web C# traditionnel généré dans VS2008 .Net 3.5, héritant de SoapHttpClientProtocol. Cela se connecte à un service Web distant écrit en Java.Comment configurer un client de service Web C# pour envoyer l'en-tête et le corps de la requête HTTP en parallèle?
Toute la configuration se fait dans le code lors de l'initialisation du client, et peut être vu ci-dessous:
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
};
Tout fonctionne très bien, mais le temps nécessaire pour exécuter l'appel de méthode la plus simple est presque le double du temps de ping réseau. Alors qu'un client de test Java prend à peu près le même que le temps de ping réseau:
C# client ~ 550ms
Java client ~ 340ms
Network ping ~ 300ms
Après avoir analysé le trafic TCP pour une session découvert ce qui suit:
Fondamentalement, le client C# a envoyé des paquets TCP dans la séquence suivante .
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.
Le client Java a envoyé des paquets TCP dans l'ordre suivant.
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.
est-il de toute façon de configurer le client de service Web C# pour envoyer l'en-tête/corps en parallèle en tant que client Java semble?
Toute aide ou pointeurs très appréciés.
Pouvez-vous renifler les en-têtes http pour la requête .Net et la requête java et les comparer? (Et je suppose que le client Java utilise le même proxy) –
désolé, quand je dis proxy je veux dire comme dans une classe proxy, plutôt que d'un proxy http – Christopher
modifié pour supprimer les références à «proxy» et remplacer par «client» – Christopher