我的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/