저는 SoapHttpClientProtocol에서 상속받은 VS2008 .Net 3.5에서 생성 된 전통적인 C# 웹 서비스 클라이언트를 사용하고 있습니다. 이것은 Java로 작성된 원격 웹 서비스에 연결하고 있습니다.HTTP 요청 헤더와 본문을 병렬로 전송하도록 C# 웹 서비스 클라이언트를 구성하려면 어떻게해야합니까?
모든 구성은 클라이언트 초기화하는 동안 코드에서 수행되며, 아래에 볼 수 있습니다 :
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
};
그것은 모두 잘 작동하지만 간단한 메서드 호출을 실행하는 데 걸리는 시간은 거의 두 배 네트워크 핑 시간입니다. 자바 테스트 클라이언트가 네트워크 핑 시간과 거의 동일합니다 반면 : 세션의 TCP 트래픽을 분석 한 후
C# client ~ 550ms
Java client ~ 340ms
Network ping ~ 300ms
다음 발견 : 기본적으로
를,는 C# 클라이언트는 다음과 같은 순서로 TCP 패킷을 전송 .
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.
자바 클라이언트가 다음 순서로 TCP 패킷을 보냈습니다.
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.
Java 클라이언트가 나타날 때 헤더/본문을 병렬로 보내도록 C# 웹 서비스 클라이언트를 구성해야합니까?
도움이나 조언을 많이 주시면 감사하겠습니다.
.Net 요청 및 java 요청에 대한 http 헤더를 스니핑하고 비교할 수 있습니까? (그리고 자바 클라이언트가 같은 프록시를 사용하는 것 같아요.) –
프록시라고하면 프록시라고하는 대신 http 프록시가 아닌 – Christopher
편집 된 텍스트가 '프록시'에 대한 참조를 제거하고 '클라이언트'로 바뀝니다. – Christopher