.net - WCF 客户端-服务器同步 : Polling vs. 绑定(bind)

标签 .net wcf asynchronous synchronization

我正在开发 WCF 客户端-服务器应用程序。其中客户端必须不断与服务器同步(至少每 10 秒)。目前我正在轮询服务器以查看是否有任何更改。如果是这样,更改(有时是数十条数据库记录)将被拉到客户端。

我的设计感觉有点笨拙,所以我研究了 gtalk(和其他 XMPP)客户端如何保持同步。据此Wikipedia article ,XMPP 放弃了轮询方法,现在仅使用 HTTP 绑定(bind)

我认为可以为 WCF 做同样的事情。我认为现在 99% 的 WCF 应用程序只是 1) 打开连接,2) 执行事务,3) 关闭连接。

所以我的问题是:

  1. 有谁知道一个例子 如何实现这样的 异步绑定(bind)方法 WCF?
  2. 这有什么影响 取决于服务器的客户端数量 可以容纳,因为多个 连接必须是 保持。
  3. 还有其他缺点吗?

最佳答案

  1. 这种异步方法可以通过双工绑定(bind)来实现。 WCF 提供了 WSDualHttpBinding,它由两个相关的 http 传输组成。第一个是从客户端到服务器,第二个是从服务器到客户端。方法是在通信开始时从客户端调用服务器。服务器存储客户端回调 channel 并在需要时使用它来推送更新。这可以进一步扩展到完整的发布订阅消息交换模式。

  2. 默认情况下,服务器必须为每个连接的客户端代理(每个 session )维护服务实例。您必须正确设置服务限制以允许许多客户端的连接。对服务器和客户端数量的影响取决于服务实现。

  3. WSDualHttpBinding 有局限性。例如 - 不允许传输安全 - 只能使用消息安全,不允许流式传输,需要可靠的 session 等。实现中存在一些陷阱,例如长时间不活动的超时或导致 channel 故障的未处理异常。

关于.net - WCF 客户端-服务器同步 : Polling vs. 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3393352/

相关文章:

asp.net - 如何 ping 诸如 svc、asmx 之类的 Web 服务

javascript - AsyncAwait 不等待获取响应

c# - 使用 .NET 在 iothub 上上传配置/部署

c# - 检查 AD 中是否存在用户/电子邮件

wcf - 使用 Azure ACS 和 OAuth 2.0 的 Facebook 式 API 访问场景 : how to implement app authorization?

android - 如何从 Android 中的 WCF 服务反序列化复杂的 JSON 对象?

javascript - 在javascript中测试异步加载脚本的工具

python - 如何使用 requests_html 异步 get() URL 列表?

c# - 运行 SqlQuery EF 时 FieldNameLookup.GetOrdinal 中的索引超出范围异常

DataGridView 中的 C# FormatException