0

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

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

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

我有两种方法来实现这个:

方法一:

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

方法B:

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

方法三:

这实际上是对方法 B 的详细说明 - 让“命令服务”连接到“提醒服务”并向其发送“发布提醒”消息,这反过来会使“提醒服务”遍历其所有客户端并发送它们通过回调方法提醒。

.

最好的方法是什么?有没有更好的主意来做到这一点?

4

1 回答 1

1

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

于 2012-06-21T15:04:49.580 回答