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