2010-09-14 85 views
1

在我的应用程序中,我需要将实时事件的通知从服务器推送到客户端。要传递的数据量非常小,主要是Id。同时监听的客户端数量可能在100个左右,我可能不得不每隔2到3秒发布一个通知。服务器和客户端都使用.Net和WCF构建。改善使用实时数据的WCF服务的性能

鉴于这些要求,我已经构建了一组WCF服务,这些服务将在负载均衡服务器群集上运行。实例上下文模式是每个呼叫,并且不需要会话等。

我正在使用BasicHttpBinding。 TCP绑定会更好吗?它在IIS 5或6上运行吗?如果不是为什么?

序列化的哪种配置最适合工作?

我需要做些什么来确保我获得最佳性能?

编辑 - 添加基于一些响应的详细信息 -

我主办使用手动托管客户端进程一个小WCF服务。服务器仅在每个客户端上调用该服务以将数据推送到所有客户端。

回答

2

首先,您是否考虑过使用消息传递来实现您想实现的目标?

在回答TCP绑定比BasicHttpBinding更好 - 几乎肯定是的。如果您想使用TCP,则无法在Windows Server 2008中使用IIS- look into WAS。如果您遇到Windows Server 2003,则必须改为使用Windows服务托管。

您已经通过选择每个呼叫做出了很好的选择 - 这是用于创建可伸缩WCF服务的首选实例管理模式。

编辑:

现在你已经更新了你的问题,我建议,如果你想坚持使用WCF你看看■设计的Pub/Sub framework。我也看看Pub/Sub with MSMQ in WCF和“Vanilla”产品,例如Tibco RV

+0

请参阅编辑 - 我不需要双面绑定。用消息传递你的意思是MSMQ?你能详细说一下这个部分吗? – 2010-09-14 20:24:40

+0

我已经使用WCF服务构建了一个小型pub-sub框架。我只是想优化它的性能。 – 2010-09-18 14:35:58

0

如果您需要将数据从服务推送到客户端,则需要会话,并且需要双工绑定 - NetTcpBinding或WSDualHttpBinding。它不适用于BasicHttpBinding,因为它只允许提取数据(客户端池用于更改服务)。推送数据意味着服务在需要时将数据发送给客户端。

NetTcpBinding始终克里特会话。它不能在IIS 6或更旧版本中托管。 NetTcpBinding仅在作为IIS 7.x的扩展的Windows激活服务(WAS)中被允许。对于较老的系统,您需要自主托管= windows服务。

编辑:

根据您的描述,您需要发布 - 订阅消息交换模式。