我有一个用c#编写的windows / WPF应用程序。这个应用程序连接到我们公共服务器上托管的远程数据库。应用程序将安装到所有系统。用户可以通过此应用程序将值添加到数据库。 当有人向数据库添加任何值时,我需要一个通知机制来向所有已安装的Windows应用程序发送通知。
请告诉我实施此方案的最佳方法。
提前致谢。
答案 0 :(得分:1)
您可以使用SQL Server的“查询通知”功能,该功能允许在数据发生更改时通知应用程序。
请参阅以下链接。
答案 1 :(得分:0)
使架构成为通用和接口驱动的,因此您可以交换底层传输。
public interface INotificationService
{
event EventHandler NewNotification;
void SendEvent(string eventDetails);
}
作为一个非常简单的例子。
实施,你有几个(百)选项。您提到事件正在放入数据库中。如果您确保存在唯一的递增整数键,则可以从每个客户端轮询数据库以查找任何事件>最后一个事件ID。每10秒做一次,或者很快你就可以逃脱。这是一个非常小的性能影响,并没有那么高效,但非常简单和可靠,你已经可以访问数据库,因为你把事件放在那里。
或者,您可以创建Web服务或WCF服务。通常需要轮询Web服务,可以使用双工通信配置WCF服务,这样您就不需要轮询。
其他选项包括MSMQ,或其他消息解决方案之一,RabbitMQ,Tibco,无论如何。这完全取决于细节。
这里重要的是要确保你有初始接口和代码,这样,如果你的数据库轮询变得太慢而你需要升级到Tibco,那么这是一个非常本地化的简单改变。