私たちはC#アプリケーションからWCF(BasicHttpBinding)を使用して約300msかかるWebサービスを呼び出します。私たちは、同じSOAP呼び出しがSOAP UIから送信するときに約30msしかかからないことに気付きました。Java対ネットHTTPクライアントのパフォーマンス
また、WCfのDeSer-partがこの追加遅延の理由でないことを確認するために、基本WebClient経由でWebサービスにアクセスするテストも実装しました。 WebClientクラスを使用する場合、呼び出しには約300msもかかります。
JavaがC#と比べてなぜこの点に関して約10倍速いのかについてのアイデアはありますか?物事の.NET側で可能な調整がありますか?
private void Button_Click(object sender, RoutedEventArgs e)
{
executeTest(() =>
{
var resultObj = client.getNextSeqNr(new WcfClient()
{
domain = "?",
hostname = "?",
ipaddress = "?",
loginVersion = "?",
processId = "?",
program = "?",
userId = "?",
userIdPw = "?",
userName = "?"
}, "?", "?");
});
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
WebClient webClient = new WebClient();
executeTest(()=>
{
webClient.Proxy = null;
webClient.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore);
webClient.Headers.Add("Content-Type", "application/xml");
webClient.Encoding = Encoding.UTF8;
var data = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ser=\"SomeNamespace\">" +
" <soapenv:Header/>" +
" <soapenv:Body>" +
" <ser:getNextSeqNr>" +
" <!--Optional:-->" +
" <clientInfo>" +
" <!--Optional:-->" +
" <domain>?</domain>" +
" <!--Optional:-->" +
" <hostname>?</hostname>" +
" <!--Optional:-->" +
" <ipaddress>?</ipaddress>" +
" <!--Optional:-->" +
" <loginVersion>?</loginVersion>" +
" <!--Optional:-->" +
" <processId>?</processId>" +
" <!--Optional:-->" +
" <program>?</program>" +
" <!--Optional:-->" +
" <userId>*</userId>" +
" <!--Optional:-->" +
" <userIdPw>?</userIdPw>" +
" <!--Optional:-->" +
" <userName>?</userName>" +
" </clientInfo>" +
" <!--Optional:-->" +
" <name>?</name>" +
" <!--Optional:-->" +
" <schema>?</schema>" +
" </ser:getNextSeqNr>" +
" </soapenv:Body>" +
"</soapenv:Envelope>";
string result = webClient.UploadString("http://server:8080/service", "POST", data);
});
}
私はここに何か不足していますか?すべてのアイデアは参考になる... ;-)
敬具、 セバスチャン
WCFの同じプログラム内の同じサービスへのその後の呼び出しにはどのくらいの時間がかかりますか? 1つのことを1回行う時間の長さを確認することは、パフォーマンスの信頼できるテストではありません。 –
最初のWCF呼び出しはさらに遅くなりますが、その後のWCFおよび通常のWebClient呼び出しでは、対応するJavaクライアント(またはSoapUI)より約10倍遅いです。私は平均的なケースを測定するためにテストをループで実行しました... –