我正在使用WCF
,我在我的C#
计划中添加了一个聊天室设施。所以,我需要能够从服务器向客户端发送信息的两个事件 -聊天室功能与WCF,双工回调与轮询?
- 当用户连接/断开我更新连接的用户列表,并发送回所有客户端显示在一个TextBlock
- 当用户发布消息,我需要的服务器来发送邮件给所有客户
所以我要寻找的建议在实施这一点的最好办法。我打算使用netTcpBinding
作为客户端的双工回调,但后来我遇到了一些问题,关于在连接关闭时无法回拨客户端。我需要使用percall实例来提高可扩展性。我被告知在这个线程,我不应该离开连接打开,因为它会'大大限制scalibity' - WCF duplex callbacks, how do I send a message to all clients?
但是,我看了一本书编程WCF服务和作者似乎说,这不是一个问题,因为'在两次调用之间,客户端持有一个代理服务器上的引用,该代理服务器没有实际的对象。这意味着,你可以配置昂贵的资源的服务实例占用客户端关闭代理”
- 因此,这是正确的,是细保持代理客户端上的长开过吗?
- 但即使这很好,它会导致另一个问题。如果服务实例在通话之间被破坏,他们如何执行双工回调来更新客户端?关于percall实例,编程WCF服务的作者说'因为一旦方法返回,对象将被丢弃,你不应该分离后台线程或分派异步调用回实例'
- 我会更好的客户端投票更新服务?我会想象这比双工回调的效率低得多,客户最终可能会使用双工回调的次数高达50次以上。但也许没有其他办法?这是可扩展的吗?我设想几百个并发用户。