我已經實現了一個使用netTcpBinding和WsHttpBinding和Transport Security(https)作爲WCF通信綁定類型的場景。然後我比較了性能結果。有趣的是,netTcpBinding比wsHttpBinding慢。我已經閱讀了大量關於綁定性能的文檔,並且我知道netTcpBinding提供了最快速的通信,因爲它採用了二進制編碼。netTcpBinding如何比wsHttpBinding慢?
你能解釋一下在我的測試中可能會導致這種情況嗎?謝謝。
測試環境:IIS 7
public static WSHttpBinding GetWSHttpForSSLBinding()
{
WSHttpBinding binding = new WSHttpBinding();
binding.TransactionFlow = true;
binding.MaxReceivedMessageSize = 2147483647;
binding.MessageEncoding = WSMessageEncoding.Text;
binding.Security.Mode = SecurityMode.Transport;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
binding.ReaderQuotas.MaxStringContentLength = 2147483647;
binding.OpenTimeout = TimeSpan.MaxValue;
binding.CloseTimeout = TimeSpan.MaxValue;
binding.SendTimeout = TimeSpan.MaxValue;
binding.ReceiveTimeout = TimeSpan.MaxValue;
return binding;
}
public static NetTcpBinding GetTcpBinding()
{
NetTcpBinding binding = new NetTcpBinding();
binding.TransactionFlow = true;
binding.MaxReceivedMessageSize = 2147483647;
binding.PortSharingEnabled = true;
binding.Security.Mode = SecurityMode.Transport;
binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows;
binding.Security.Transport.ProtectionLevel = ProtectionLevel.EncryptAndSign;
binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
binding.Security.Message.AlgorithmSuite = SecurityAlgorithmSuite.TripleDesSha256;
binding.ReaderQuotas.MaxStringContentLength = 2147483647;
binding.ReaderQuotas.MaxArrayLength = 2147483647;
binding.OpenTimeout = TimeSpan.MaxValue;
binding.CloseTimeout = TimeSpan.MaxValue;
binding.SendTimeout = TimeSpan.MaxValue;
binding.ReceiveTimeout = TimeSpan.MaxValue;
return binding;
}
它在IIS上嗎?您需要提供一些關於您的基準和設置的信息。 – Aliostad 2010-09-23 09:19:23
@ Aliostad:是的,它都在IIS 7上。 – mkus 2010-09-23 09:23:24
你能把這兩個綁定放在這裏嗎? – Aliostad 2010-09-23 09:28:55