2015-10-07 130 views
1

我必须设计一个客户端应用程序,该应用程序将安装在我们公司的所有计算机上,这些计算机将收集和报告用于库存目的的硬件和软件信息到SQL数据库。应用程序可能需要远程更新,并且可能还会远程更新某些参数(如轮询时间段)。我不完全确定构建这种类型的应用程序的最佳方式。在试图研究和思考这个通过我想出了以下选项:后台客户端应用程序的设计

  • 写一个Windows服务,总是自动运行,随时随地在计算机启动时和在计时器已对其执行必要的库存功能。
  • 编写一个Windows服务,该服务充当未来扩展的基础平台,但在Forms/WPF应用程序中包含实际库存客户端,该应用程序最小化为系统托盘,可以打开以更改设置。 Windows服务将验证Forms/WPF应用程序是否始终运行并处理任何管理任务,例如可能对Forms/WPF应用程序执行升级。
  • 只写一个配置为在启动时运行的Forms/WPF应用程序。系统托盘和定时器执行清点功能并将其报告给数据库将会最小化。

这是我提出的三个主要选项。我希望过去解决过这个问题的人能够提供一些关于他们如何设计他们的项目的见解。任何意见非常感谢。

+0

这可能是您需要的信息可以远程获取。参见Sysinternals PSinfo。 – enkryptor

+0

过去我们已经做到了这一点,但不管计算机位置如何,都希望更可靠。示例:我们无法在通过VPN连接的计算机上远程检索信息。但是,这些远程计算机可以可靠地访问我们网络上的内部资源。这就是为什么我们希望每台计算机上都有客户端。 –

+0

只是想确保你没有重新发明轮子,因为现代操作系统可以完成所有描述(提供系统信息,自动更新软件,远程执行进程等) – enkryptor

回答

0

如果其他人有类似的问题,我最终采取的路径是创建一个Windows服务,其所有主逻辑在一个单独的DLL中,并有一个单独的程序进行更新。更新程序停止服务,移动/覆盖该服务的dll,然后重新启动该服务。该服务运行的主dll处理轮询/定时器功能,并定期检查并下载更新,然后可以安排更新程序运行。我发现了一个很好的例子here

尽管我已经选择了如何实施这个项目,但我仍然乐于听到其他人如何处理类似的情况。