c# - 就传输的总字节数而言,最紧凑的 wcf 绑定(bind)是多少?

标签 c# wcf bandwidth

我们需要为低带宽网络创建 WCF 服务。因此,我们的目标是创建每次调用产生最少字节数的绑定(bind)配置。这是 app.config 的摘录

<customBinding>
   <binding name="binaryBinding">
     <binaryMessageEncoding/>
     <tcpTransport />
   </binding>
</customBinding>

我认为建立连接也会带来开销,因此我们会将其保持在最低限度。一个典型的场景是

Client.Connect();
while (!userTerminates())
{
  var Response = Client.DoSomething(parameters);
  <user input>
  var anotherResponse = Client.DoSomethingElse(otherParameters);
}
Client.Close();

发送/接收的数据从大约 20 个字节到几百个字节不等。

到目前为止,我设法将 WCF 设置为使用 netTcpBinding 和二进制编码,但仍然有 400% 的开销。我发送了一个 600 个字符的字符串,收到了 2200 个字符。我通过使用 MessageInspector 测量传入和传出消息的长度来测量这一点。我假设开销来自 SOAP 消息。 编辑:也许我的测量是错误的。

我还了解到我可以压缩通信,如 WCF 示例库中所示。 GoogleProtocol 似乎也是一个选择。

但我想从头开始:如何修改配置(或最终创建我自己的协议(protocol))以最小化发送的总字节数。此时安全性不是问题,性能也不是问题,我感兴趣的只是发送/接收的字节数。

感谢您的任何提示。

最佳答案

你说得对netTcp uses SOAP ,这确实可能导致您的 20 字节有效负载膨胀到更多。

CodeProject: CompactMessageEncoder 中解释了如何应用自定义绑定(bind)。 。如果有效负载是类似对象的并且您不调用许多不同的方法,Google's Protocol Buffers和一个custom framing protocol over sockets .

关于c# - 就传输的总字节数而言,最紧凑的 wcf 绑定(bind)是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29429302/

相关文章:

c# - (413请求实体太大

google-cloud-platform - Google Cloud Kubernetes 节点带宽

c# - 使用 System.Windows.Forms 损坏的 Mono C# 代码

c# - Elasticsearch MoreLikeThis 查询从不返回结果

c# - 通过配置进行 WCF 模拟

c# - WCF 找不到端点配置问题

c# - 如何使用c#计算带宽

c# - 如何在Web应用程序中显示互联网连接速度?

c# - 如何在 web api 中强制使用无效的 Bearer token ?

c# - 为什么抛出异常时应用程序不会崩溃