如何在WCF服务中使用Protobuf?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

我的asp.net网页位于IIS Web服务器上,它使用基本的HTTP绑定与WCF服务(坐在Windows 2008应用服务器上)进行通信。我的wcf服务的性能看起来不是那么好,我想改善它。另外,我需要在可扩展性方面达到平衡,因为我的网站的流量会非常高。

HTTP压缩,节流是一些我知道的方式,但还没有尝试过他们..我可以使用protobuf API ..

提问于
用户回答回答于

简短的回答是“是”...

协议缓冲区规范本身不提供RPC栈,但有些已添加到规范之外。

首先,protobuf-net具有WCF的挂钩,允许将服务合同上的操作标记为ProtoBehavior。然后这个交换DataContractSerializer使用protobuf-net序列化。但是,有一些注意事项:

  • 数据成员必须具有明确的Order(例如[ProtoMember(Order = 1)]),因为它使用这些数字作为字段标识符(协议缓冲区使用数字字段)
  • 它对汇编/类共享(服务契约等)的效果最好,因为这种自定义行为没有暴露在“mex”

当与基本http传输一起使用时,这也与MTOM(如果启用)兼容以获得最大吞吐量。非平凡信息的表现大体上与其规模成正比; 你可以在这里了解protobuf-net的尺寸。

另外,我也在制定一个定制的RPC堆栈。在当前的构建具有通过HTTP工作组,但我也打算启用它原始的TCP / IP,当我得到机会。我还没有机会写出来,但我可以根据要求提供示例。请注意,要最方便地使用它,还需要3.5“扩展名”dll。

任何问题,添加评论或通过电子邮件发送给我(请参阅我的个人资料)。

用户回答回答于

如果WCF服务不需要暴露在内部网络之外,你也可以看看使用基于TCP的绑定。

扫码关注云+社区