在我的应用程序中,我需要将实时事件的通知从服务器推送到客户端。要传递的数据量非常小,主要是Id。同时监听的客户端数量大约为100,我可能每2到3秒发布一次通知。服务器和客户端都使用.Net和WCF构建。
鉴于这些要求,我构建了一组WCF服务,这些服务将在负载平衡的服务器集群上运行。实例上下文模式是Per Call,不需要会话等。
我目前正在使用BasicHttpBinding。 TCP绑定会更好吗?它是在IIS 5还是6上运行?如果不是为什么?
序列化的哪些配置最有效?
为了确保获得最佳性能,我需要做些什么?
修改 - 根据部分回复添加更多信息 -
我使用手动托管在客户端进程中托管一个小型WCF服务。服务器只是在每个客户端上调用此服务以将数据推送到所有客户端。
答案 0 :(得分:2)
首先,您是否考虑过使用消息传递来实现您想要实现的目标?
在回答TCP绑定工作比BasicHttpBinding更好 - 几乎肯定是的。如果您想使用TCP,则不能将IIS- look into WAS与Windows Server 2008一起使用。如果您遇到Windows Server 2003,那么您将不得不在Windows服务中托管。
您通过选择每个呼叫做出了一个不错的选择 - 这是创建可扩展WCF服务的首选实例管理模式。
编辑:
现在您已经更新了问题,如果您想坚持使用WCF,我建议您查看IDesign的Pub/Sub framework。我还会查看Pub/Sub with MSMQ in WCF以及Tibco RV等“Vanilla”产品。
答案 1 :(得分:0)
如果您需要将数据从服务推送到客户端,则需要会话,并且需要双工绑定 - NetTcpBinding或WSDualHttpBinding。它不能与BasicHttpBinding一起使用,因为它只允许拉取数据(客户端池服务进行更改)。推送数据意味着服务在需要时将数据发送给客户端。
NetTcpBinding始终是克里特会话。它无法在IIS 6或更早版本中托管。仅在Windows激活服务(WAS)中允许NetTcpBinding,它是IIS 7.x的扩展。对于较旧的系统,您需要自托管= Windows服务。
编辑:
根据您的描述,您需要发布 - 订阅消息交换模式。