2011-11-24 41 views
1

更新數據,我應該使用哪些設置的BasicHttpBinding讓我的WCF服務獲取和更新數據的SQL服務器儘可能快的可能..最快的方式獲取和使用basicHttpBinding的

安全不是問題..

目前我的客戶端配置是這樣的。它的工作原理,但我想讓它更快,如果可能的: -

<system.serviceModel> 
    <bindings> 
     <customBinding> 
     <binding name="BinaryHttpBinding"> 
      <binaryMessageEncoding /> 
      <httpTransport /> 
     </binding> 
     </customBinding> 
    </bindings> 
    <client> 
     <endpoint name="httpEndpoint" 
      address="my address" 
      binding="customBinding" 
      bindingConfiguration="BinaryHttpBinding" 
      contract="FLOW5ServiceDLL.IFLOW5WCFService"/> 
     <endpoint 
      address="mex" 
      binding="mexHttpBinding" 
      contract="IMetadataExchange" /> 
    </client> 
</system.serviceModel> 
+0

你似乎不是*使用* BasicHttpBinding ...? –

+0

:-) ya kind off..customBinding基於httpbinding .. – srivatsayb

回答

2

我會用NetTcpBinding的快速二進制傳輸,如果你是在同一個網絡

檢查這一項,以及內部:

netTcpBinding or wsHttpBinding

+0

在很多時機中,我見過netTcp做的比簡單的綁定更糟糕。據推測,所有這些類型都是由NDCS引起的。這*可以幫助,但它不是一種魔術,「這總是更好」。這是更具體情況 –

+0

我試過NetTcp,但我遇到了防火牆問題,我無法修復它... BasicHttp會爲我做,如果它變得像快15% – srivatsayb

3

這取決於上下文的可怕程度......正在發送多少個請求?每個的大小是多少?等

如果您使用http和二進制文件,那麼你應該看看啓用MTOM。這在basicHttpBinding元素上很容易。我不知道如何在自定義綁定上做到這一點。

您還沒有指定如何發送數據;一個DataTable不同於List-of-T等。

就我個人而言,我在使用basicHttpBinding + MTOM改進WCF性能方面取得了很多成功,但交換了protobuf-net的序列化程序(通常比較小帶寬比NDCS或DCS);這又是多麼容易取決於上下文:如果您在客戶端和服務器上使用程序集共享,通常是微不足道的;如果您使用「mex」,則需要花費更多的精力。

如果你有一個「健談」的API(大量小呼叫),首先要做的事情就是把呼叫整合到更多,更少的呼叫中。

+0

+1 protobuf hehe。絕對是快速的。 WCF確實會導致很多開銷,我們使用在nancy中編寫的序列化爲protobuf的REST服務。 – albertjan

+0

@the_ajp我真的需要看看nancy –

+0

我正在使用DataTables ...有趣的是,看到protobuf被改編成.NET ...任何關於如何在WCF中使用它的鏈接? – srivatsayb