桌面通知,又名内部警报系统

时间:2010-03-23 12:38:56

标签: c# .net desktop notifications

很明显,我工作的地方需要一个“通知系统”。问题在于我们在多个建筑物中非常分散,而且大部分工作人员经常将电子邮件关闭几个小时。

我需要创建一种简单的方法来推送消息并让它在每台计算机(或单台计算机)上“弹出”。

我的第一个想法是编写一个调用winform / wpf应用程序的Windows服务,该应用程序驻留在每个只弹出消息的计算机上。不知道一个想法是多么可行,但这只是头脑风暴。

我认为,不同的路径可能是一个应用程序,它驻留在每个计算机上的系统托盘上,轮询db表并使用Query Notifications每次添加新行时都会弹出一条消息。然后简单地创建一个疯狂的基本应用程序,用于在该表中写入一行。

所以,我要问的是,是否有其他人走过了这条道路。如果是这样,怎么样?

  • 你接受了什么? 考虑

  • 我的想法是否有效 点或是“蛋和我的脸在 完美对齐“?

  • 是否有不同的方式 简单

由于


一些简单的要求 - >必须是“单向”,因为我无法为我们的用户群提供“聊天”系统。必须有点隐藏,以阻止用户关闭它。系统托盘或服务。

7 个答案:

答案 0 :(得分:2)

net send不会让你重新发明轮子吗?

答案 1 :(得分:1)

我从来没有这样做过,但我曾经在一个使用类似功能的呼叫中心工作,而且他们非常有用。我记得有一次,当每个人都收到一条消息说“有人知道普通话吗?帮帮我!!”辉煌。 (幸运的是有人这样做了。)

无论如何,你的想法非常好。我个人认为这是一个客户端/服务器应用程序。位于系统托盘中的Windows窗体或WPF应用程序可以使用WCF使用TCP / IP双工连接链接到服务器。也许让客户注册到某些组,具体取决于它所在的PC部门。

然后当有人想要发送消息时,他们选择需要去哪个组(或所有组),该消息会命中服务器发送给所有连接的客户端,并且计算机上的WPF应用程序会收到消息,弹出它。除了存储用户/组之外,您甚至不需要数据库,如果需要,甚至不需要消息历史记录。

答案 2 :(得分:1)

这可能是一个荒谬的答案,但您是否考虑过实施聊天系统?它很容易实现并经过充分测试。

以下是一些可能性:

http://messenger.softros.com/

http://en.wikipedia.org/wiki/Instant_messaging#User_base

关于建立自己的文章: http://www.computerworld.com/s/article/9002059/How_to_build_your_own_corporate_IM_system_

答案 3 :(得分:1)

最简单的方法是在每台计算机上安装一个简单的客户端来轮询警报的中央服务。每个警报都应该有一个唯一的ID,这样每个客户端都可以处理幂等性(您不希望中央服务保持标签“弹出”哪些客户端)。

我还建议每个警报的使用寿命相当短,因此客户只需要知道它显示的警报的非常短的列表,因此如果重新启动计算机,则只会显示很少的警报历史记录

有300名订阅者,你也希望轮询也有一个很长的差距 - 你真的不希望每10秒进行300次检查 - 所以你必须平衡技术上对于检查之间长距离差距的需求。业务要求在特定时间范围内获取警报。

您可以通过添加为启动程序的WINFORM / WPF应用程序或随后生成UI以显示通知的Windows服务轮询NET / TCP WCF服务来轻松实现此目的。

答案 4 :(得分:0)

我很久以前做过这样的事情来协调烟雾中断。我只是在特定端口的LAN上发送了broadcast packet。工作得相对较好,虽然任何人都可以播放,每个人都会得到一个弹出窗口,但它被滥用了很多。

答案 5 :(得分:0)

我建议您 SPARK 。我们公司遇到同样的问题,最后决定节省时间,不再重新使用现有的(免费软件)解决方案。 SPARK为我们工作。

“Spark是一个针对企业和组织优化的开源,跨平台IM客户端。它内置支持群聊,电话集成和强大的安全性。它还提供了出色的最终用户体验具有在线拼写检查,群聊聊天室书签和标签式对话等功能。“

答案 6 :(得分:0)

如果你不能使用/安装现有的即时消息,你可能会在你的应用程序中实现简单的“聊天”协议。

基于套接字以及许多可用的文章都很容易 例如:
http://www.codeproject.com/KB/IP/TCPIPChat.aspx
http://www.codeproject.com/KB/miscctrl/SimpleMessenger.aspx?display=Print

如果您需要高级(例如,接收历史通知,用户状态管理等),您可以考虑使用openSource Jabber API:
例如http://www.codeproject.com/KB/gadgets/googletalk.aspx