Tôi đang sử dụng máy khách dịch vụ web C# truyền thống được tạo trong VS2008 .Net 3.5, kế thừa từ SoapHttpClientProtocol. Điều này đang kết nối với một dịch vụ web từ xa được viết bằng Java.Làm cách nào để định cấu hình ứng dụng khách dịch vụ web C# để gửi tiêu đề và nội dung yêu cầu HTTP song song?
Tất cả các cấu hình được thực hiện trong mã trong quá trình khởi khách hàng, và có thể được nhìn thấy dưới đây:
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
};
Tất cả đều hoạt động tốt, nhưng thời gian thực hiện để thực hiện gọi phương thức đơn giản nhất là gần như gấp đôi so với thời gian mạng ping. Trong khi đó, một bài kiểm tra khách hàng Java mất gần giống như thời gian mạng ping:
C# client ~ 550ms
Java client ~ 340ms
Network ping ~ 300ms
Sau khi phân tích lưu lượng TCP cho một phiên phát hiện ra như sau:
Về cơ bản, C# khách hàng gửi các gói tin TCP theo trình tự sau .
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.
Máy khách Java đã gửi gói TCP theo trình tự sau.
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.
Có cách nào để định cấu hình ứng dụng khách C# web để gửi tiêu đề/nội dung song song với trình khách Java xuất hiện không?
Bất kỳ trợ giúp hoặc con trỏ nào được đánh giá cao.
Bạn có thể ngửi tiêu đề http cho yêu cầu .Net và yêu cầu java và so sánh chúng không? (Và tôi đoán khách hàng java sử dụng cùng một proxy) –
xin lỗi, khi tôi nói proxy tôi có nghĩa là trong lớp proxy, thay vì http proxy – Christopher
văn bản đã chỉnh sửa để xóa tham chiếu đến 'proxy' và thay thế bằng 'khách hàng' – Christopher