我的 asp.net 网页位于 IIS Web 服务器上,它使用基本的 HTTP 绑定与 WCF 服务(位于 Windows 2008 应用服务器上)进行通信。我的 wcf 服务的性能似乎不是那么好,我想改进它。此外,我需要平衡可伸缩性,因为我的网站将有非常高的流量。
HTTP 压缩,节流是我知道的一些方法,但还没有尝试过。我可以使用protobuf API ...请建议...
我的 asp.net 网页位于 IIS Web 服务器上,它使用基本的 HTTP 绑定与 WCF 服务(位于 Windows 2008 应用服务器上)进行通信。我的 wcf 服务的性能似乎不是那么好,我想改进它。此外,我需要平衡可伸缩性,因为我的网站将有非常高的流量。
HTTP 压缩,节流是我知道的一些方法,但还没有尝试过。我可以使用protobuf API ...请建议...
简短的回答是“是的”......
协议缓冲区规范本身不提供 RPC 堆栈,但在规范之外添加了一些。
首先,protobuf-net具有 WCF 挂钩,允许您将服务合同上的操作标记为ProtoBehavior
. 然后交换常规DataContractSerializer
以使用 protobuf-net 序列化。但是,有一些警告:
[ProtoMember(Order = 1)]
),因为它使用这些数字作为字段标识符(协议缓冲区使用数字字段)当与基本的 http 传输一起使用时,这也与 MTOM(如果启用)兼容以实现最大吞吐量。重要消息的性能在很大程度上与它们的大小成正比;你可以在这里了解 protobuf-net 的大小。
或者,我也在开发一个定制的 RPC 堆栈。当前的构建有一个基于 http 的工作堆栈,但我也计划在有机会时在原始 TCP/IP 上启用它。我还没有机会写出来,但我可以根据要求提供示例。请注意,要最方便地使用它,您还需要 3.5“扩展”dll。
有任何问题,请添加评论或给我发电子邮件(请参阅我的个人资料)。
如果 WCF 服务不需要在内部网络之外公开,您还可以查看使用基于 TCP 的绑定。
请参阅protobuf-net。
protobuf-net 是一个 .NET 实现,它允许您高效、轻松地序列化您的 .NET 对象。它兼容大部分 .NET 系列,包括 .NET 2.0/3.0/3.5、.NET CF 2.0/3.5、Mono 2.x、Silverlight 2 等。