WCF - 如何从外部源向所有客户端发布内容?

时间:2012-06-21 12:09:50

标签: wcf triggers

我有一个连接到多个服务的客户端应用程序(WPF)。 其中一项服务是提醒服务,它有一个回调给客户端的回调, 它可以向客户端发送“提醒”消息,客户端可以在屏幕上显示该消息。

但是您可能会问 - 这个回调操作何时会从服务中触发到客户端?

好吧,当新的提醒行添加到数据库时(通过'命令服务')会发生这种情况。

我有两种方法可以实现这个:

方法A:

当“提醒服务”被实例化时,它还将启动一个“工作线程”,它将检查MS SQL数据库中添加到数据库的新提醒(通过使用“Sql依赖关系”或每次轮询数据库)几分钟\小时)。 一旦找到新的提醒 - “工作线程”应该遍历连接到它的所有WPF客户端 - 并向他们发送“提醒回叫”消息。

方法B:

让“命令服务”(将新提醒添加到数据库的实际服务)以某种方式触发“提醒服务”并告诉它 - “我刚刚向数据库添加了新的提醒”。继续将提醒发送给所有已连接的客户。

方法C:

这实际上是方法B的详细说明 - 将“命令服务”连接到“提醒服务”并向其发送“发布提醒”消息,这将使“提醒服务”覆盖其所有客户端并通过回调方法向他们发送提醒。

最好的方法是什么?有没有更好的主意呢?

1 个答案:

答案 0 :(得分:1)

根据您的描述,我将使用方法C的一些变体。对于示例实现,您可以查看this link,或者通常查看发布者/订阅者解决方案,因为这是一个相对常见的问题。