wcf - 在WCF服务中使用protobuf

标签 wcf web-services wcf-binding

我的asp.net网页位于IIS Web服务器上,它使用基本的HTTP绑定(bind)与WCF服务(位于Windows 2008应用程序服务器上)进行通信。 我的 wcf 服务的性能似乎不太好,我想改进它。此外,我需要平衡可扩展性,因为我的网站将具有非常高的流量。

HTTP 压缩、限制是我知道但尚未尝试的一些方法。 我可以使用protobuf API...请建议...

最佳答案

简短的回答是"is"...

Protocol Buffer 规范本身不提供 RPC 堆栈,但在规范之外添加了一些。

首先,protobuf-net具有 WCF Hook ,允许您将服务契约(Contract)上的操作标记为 ProtoBehavior 。然后将常规的 DataContractSerializer 替换为使用 protobuf-net 序列化。但是,有一些注意事项:

  • 您的数据成员必须具有明确的 Order(例如 [ProtoMember(Order = 1)]),因为它使用这些数字作为字段标识符( Protocol Buffer 使用数字字段)
  • 它最适合(服务契约(Contract)等)程序集/类共享,因为此自定义行为不会在“mex”上公开

与基本 http 传输一起使用时,这也与 MTOM(如果启用)兼容,以实现最大吞吐量。重要消息的性能很大程度上与其大小成正比;你可以了解 protobuf-net 的大小 here .

或者,我也在开发定制的 RPC 堆栈。 current build有一个基于 http 的工作堆栈,但我也计划在有机会时在原始 TCP/IP 上启用它。我还没有机会写出来,但我可以根据要求提供示例。请注意,为了最方便地使用它,您还需要 3.5“扩展”dll。

如有任何疑问,请添加评论或给我发送电子邮件(查看我的个人资料)。

关于wcf - 在WCF服务中使用protobuf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/789813/

相关文章:

wcf - 为构建 WCF 添加哪些 VS 构建工具工作负载?

c# - Restful WCF 服务身份验证

c# - 测试 WCF 服务 - 从 XML 文件加载响应

wcf - netTcpBinding 或 wsHttpBinding

WCF 网络 TCP 绑定(bind)

.net - 如何使用远程服务器的 net.tcp 端点 ping 或检查 WCF 服务的状态?

java - 什么是实现 REstful API 的最佳轻量级/高性能嵌入式 Web 服务器

java - 从 JavaScript (AJAX) 调用和使用 JBoss Web 服务

c# - 在 Visual Studio 中为 Webservice 创建部署包

Azure 上的 WCF REST 失败并显示 "413 Request Entity Too Large"