【发布时间】:2010-05-11 04:13:09
【问题描述】:
现在 .NET 4.0 已经发布,只是技术更新。
我编写了一个应用程序,它通过基本上是消息总线(而不是方法调用)与服务器通信。这是基于应用程序的内部架构(多线程,传递消息)。
从客户端到服务器的消息数量有限,从服务器到客户端的消息要多得多。其中大部分可以通过单独的专门机制处理,但最后我们谈到每秒可能有 10-100 条小消息从服务器发送到客户端。
客户端应该在“互联网条件”下运行。这意味着可能是标准 NAT 设备(即典型的 DSL 路由器)后面的家庭最终用户 - 不能假设有防火墙安全因此“开放”的网络。
我希望尽可能少的延迟和通信开销。
处理消息总线回调的最佳技术方法是什么?如果需要发送某些内容,我可以定期调用服务器进行消息传递... ...但是我有哪些选择来处理从服务器到客户端的消息?
- WsDualHttp 是如何工作的?尤其是在 NAT 场景下?
请注意:轮询很可能会退出 - 这里的主要问题是我会有很大的开销或很大的延迟,这两者都不是真正想要的。从技术上讲,我会喜欢某种流式方法,服务器可以在他生成消息时将消息写入流,然后在消息到来时将它们发送给客户端。不过,不确定这对 WCF 是否可行(如果不是,我可能会决定在 WCF 之外处理整个消息部分,并通过 WCF 进行控制/登录/设置/销毁)。
【问题讨论】:
-
试试看“COMET”技术。这些通常涉及从客户端发送请求,然后让服务器保持套接字打开,直到它有响应。然而,大多数实现都关注事件的及时通知,而不是持续的更新流。
标签: wcf message-queue