C#中Windows桌面监视器应用程序的体系结构

时间:2012-08-28 10:44:59

标签: c# winforms design-patterns architecture

此前,此问题与设计解决方案有关,无需分享代码

我正在.net 4.0(一种系统监视器)中设计一个C#桌面应用程序,其行为如下

  • 当用户登录到Windows桌面(且仅在用户登录时)时,应用程序启动。
  • 通过用户会话定期运行。
    • 在用户桌面上显示系统托盘图标。
    • 点击托盘图标会打开一个窗口,显示一些信息(丰富用户体验)
  • 应用程序存在于用户注销
  • 此应用程序可以在启动时保存其状态并存在(可能是系统注册表)
  • 需要访问网络和文件系统等系统资源

我的偏好将:

  • 在后台运行的Windows服务,执行定期后端操作和网络访问。此服务还应将信息轮询到前端(UI),该信息在系统托盘图标(气球提示)中显示为警报
  • 用于向用户显示信息的Windows应用程序 - 通过单击托盘图标
  • 打开

以上考虑因素基于我使用.net 1.1版进行Windows应用程序开发的经验。
然而,现在我正在开发.net 4.0并且面向Windows Vista和Windows 7平台。

我对最新趋势不熟悉,我的问题是: -

1。我已经读过不建议使用与桌面交互的Windows服务吗?
2。是否建议使用WPF为此应用程序开发UI?
3。是否还有其他简单的解决方案或模式?

2 个答案:

答案 0 :(得分:3)

  

我已经读过不建议使用与桌面交互的Windows服务吗?

服务本身不应该 - 但通过客户端应用程序(监听器)它没关系。

  

是否建议使用WPF为此应用程序开发UI?

如果您需要一定级别的UI自定义。如果视觉吸引力无关紧要,旧的简单WinForms就可以了。

WPF的数据绑定功能也很出色,但对于大多数简单的场景来说,它并没有太大的区别。

  

还有其他简单的解决方案或模式吗?

正在运行的Windows服务加上一个客户端应用程序正在监听该服务(这些选项并不相互排斥,恰恰相反)。

答案 1 :(得分:1)

  

我已经读过不建议使用与桌面交互的Windows服务吗?

服务不应直接与桌面交互。但是服务公开桌面应用程序会消耗一些API之王(我会说,WCF)是完全可以的。

  

是否建议使用WPF为此应用程序开发UI?

完全取决于您对此技术的体验。