c# - 使用 BasicHttpBinding 检索和更新数据的最快方法

标签 c# wcf

我应该使用 BasicHttpBinding 的哪些设置,以便我的 WCF 服务尽可能快地获取数据并将数据更新到 SQL 服务器..

安全不是问题..

目前我的客户端配置是这样的。它可以工作,但如果可能的话,我想让它更快:-

<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>

最佳答案

这在很大程度上取决于上下文……发送了多少请求?每个的大小是多少?等等

如果您使用的是 http 和二进制文件,那么您应该考虑启用 MTOM。这在 basicHttpBinding 元素上很容易。我不确定如何在自定义绑定(bind)上执行此操作。

您还没有说明您是如何发送数据的; DataTable 不同于 List-of-T 等。

就我个人而言,我在使用 basicHttpBinding + MTOM 提高 WCF 性能方面取得了很多成功,但将序列化器换成了 protobuf-net(通常带宽明显小于 NDCS 或 DCS);这样做的难易程度再次取决于上下文:如果您在客户端和服务器上使用程序集共享,这通常是微不足道的;如果您使用的是“mex”,则需要付出更多的努力。

如果您有一个“喋喋不休”的 API(很多小调用),首先要做的是将调用合并为更大和更少的调用。

关于c# - 使用 BasicHttpBinding 检索和更新数据的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8261021/

相关文章:

c# - Google Drive API 上传/创建文件 (.NET)

c# - Java 与 C# 机器代码做同样的事情

c# - 检查斜杠的字符串

c# - 通过 WCF 发送大型 Xml 字符串的最有效解决方案?

wcf - 在哪里 Hook 到 WCF 管道以从传入的 HTTP 请求 header 中提取 UserNamePasswordValidator 的凭据

c# - 如何从 float 数组中找到最小值和最大值?

C#:BackgroundWorker 线程优先级

wcf - 是否有用于非双工 WCF 分块的库或示例?

c# - 更新服务引用时出现错误 HRESULT E_FAIL 已从对 COM 组件的调用返回

wcf - HTTP 无法注册 URL http ://+:10001/. 您的进程没有访问此命名空间的权限