Wie konfiguriere ich einen C # -Webdienstclient, um HTTP-Anforderungsheader und -text parallel zu senden?

8

Ich verwende einen herkömmlichen C # -Webdienstclient, der in VS2008 .Net 3.5 generiert wurde und von SoapHttpClientProtocol stammt. Dies ist eine Verbindung zu einem Remote-Web-Service in Java geschrieben.

Die gesamte Konfiguration wird während der Clientinitialisierung in Code vorgenommen und ist unten zu sehen:

%Vor%

Es funktioniert alles gut, aber die Zeit, die für die Ausführung des einfachsten Methodenaufrufs benötigt wird, ist fast doppelt so lang wie die Netzwerk-Ping-Zeit. Während ein Java-Test-Client in etwa die gleiche Zeit wie die Netzwerk-Ping-Zeit benötigt:

%Vor%

Nach der Analyse des TCP-Datenverkehrs für eine Sitzung wurde folgendes entdeckt:

Grundsätzlich hat der C # -Client TCP-Pakete in der folgenden Reihenfolge gesendet.

%Vor%

Der Java-Client hat TCP-Pakete in der folgenden Reihenfolge gesendet.

%Vor%

Gibt es trotzdem eine Konfiguration des C # -Webdienst-Clients, um den Header / Body parallel zu senden, während der Java-Client erscheint?

Jede Hilfe oder Hinweise sehr geschätzt.

    
Christopher 10.03.2010, 15:01
quelle

2 Antworten

1

Danke für die Antwort Rob, schließlich entschied ich mich für die Add Service Reference / WCF Proxy-Generation, die dies standardmäßig tut. Wahrscheinlich, weil es neuere HTTP-Bibliotheken darunter verwendet.

Ich hatte einige Probleme bei der WCF-Proxy-Generierung mit SOAP-Methoden, die unformatierte Arrays komplexer Objekte zurückgeben (z. B .: Rückgabe eines Objekts, das ein Array von Objekten enthält). Um das zu umgehen, müssen Sie entweder Ihre Arrays in Objekte umbrechen oder die Konfiguration des SOAP-Servers von RPC auf DOCUMENT umstellen (was wir getan haben).

    
Christopher 29.04.2010 09:04
quelle
0

Ich denke, Sie können das geerbte EndGetRequestStream verwenden Methode, um das SoapHttpClientProtocol zu hacken. Speichern Sie das in einem Puffer, bis die Anfrage beendet ist. Dann machen Sie Ihren eigenen Stream und schieben Sie alles auf einmal.

    
Robert 28.04.2010 05:02
quelle