如何在Windows应用程序中实现通知机制?

时间:2013-01-04 09:28:27

标签: c# api windows-services windows-applications

我有一个用c#编写的windows / WPF应用程序。这个应用程序连接到我们公共服务器上托管的远程数据库。应用程序将安装到所有系统。用户可以通过此应用程序将值添加到数据库。 当有人向数据库添加任何值时,我需要一个通知机制来向所有已安装的Windows应用程序发送通知。

请告诉我实施此方案的最佳方法。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以使用SQL Server的“查询通知”功能,该功能允许在数据发生更改时通知应用程序。

请参阅以下链接。

http://support.microsoft.com/kb/555893?wa=wsignin1.0

答案 1 :(得分:0)

使架构成为通用和接口驱动的,因此您可以交换底层传输。

public interface INotificationService
{
    event EventHandler NewNotification;
    void SendEvent(string eventDetails);
}

作为一个非常简单的例子。

实施,你有几个(百)选项。您提到事件正在放入数据库中。如果您确保存在唯一的递增整数键,则可以从每个客户端轮询数据库以查找任何事件>最后一个事件ID。每10秒做一次,或者很快你就可以逃脱。这是一个非常小的性能影响,并没有那么高效,但非常简单和可靠,你已经可以访问数据库,因为你把事件放在那里。

或者,您可以创建Web服务或WCF服务。通常需要轮询Web服务,可以使用双工通信配置WCF服务,这样您就不需要轮询。

其他选项包括MSMQ,或其他消息解决方案之一,RabbitMQ,Tibco,无论如何。这完全取决于细节。

这里重要的是要确保你有初始接口和代码,这样,如果你的数据库轮询变得太慢而你需要升级到Tibco,那么这是一个非常本地化的简单改变。