我有一个连接到多个服务的客户端应用程序(WPF)。 其中一项服务是提醒服务,它有一个回调给客户端的回调, 它可以向客户端发送“提醒”消息,客户端可以在屏幕上显示该消息。
但是您可能会问 - 这个回调操作何时会从服务中触发到客户端?
好吧,当新的提醒行添加到数据库时(通过'命令服务')会发生这种情况。
我有两种方法可以实现这个:
方法A:
当“提醒服务”被实例化时,它还将启动一个“工作线程”,它将检查MS SQL数据库中添加到数据库的新提醒(通过使用“Sql依赖关系”或每次轮询数据库)几分钟\小时)。 一旦找到新的提醒 - “工作线程”应该遍历连接到它的所有WPF客户端 - 并向他们发送“提醒回叫”消息。
方法B:
让“命令服务”(将新提醒添加到数据库的实际服务)以某种方式触发“提醒服务”并告诉它 - “我刚刚向数据库添加了新的提醒”。继续将提醒发送给所有已连接的客户。
方法C:
这实际上是方法B的详细说明 - 将“命令服务”连接到“提醒服务”并向其发送“发布提醒”消息,这将使“提醒服务”覆盖其所有客户端并通过回调方法向他们发送提醒。
最好的方法是什么?有没有更好的主意呢?