1

我需要一个后台应用程序来支持我的客户端应用程序,无论主客户端应用程序是否正在运行,它都应该始终在客户端计算机上运行。

Windows 服务是我的第一选择,但我在使用 Windows 服务时遇到的问题是:通过主客户端应用程序轻松控制 Windows 服务、发布和安装 Windows 服务补丁以及在 Windows 服务无法运行时进行故障排除。

因此,我开始考虑 Windows 服务的替代方案,并发现没有可见表单的 Windows 窗体应用程序可以为我做这件事。这个不可见的应用程序应该从系统启动开始并一直运行,完成 Windows 服务会完成的所有工作。但在深入研究开发之前,我想探讨一下这种方法的优缺点。

对这种方法有什么建议/意见吗?

4

2 回答 2

1

您的要求更适合 Windows 服务。Windows 服务的主要优点是它会在系统启动后立即启动,无论是否有人登录系统。

为了解决部署问题,您将业务逻辑构建到单独的程序集中并使用 Windows 服务调用必要的函数。这样您就可以只部署修改后的程序集。

具有不可见形式的 Winform 应用程序将无法达到目的。高温高压

于 2011-01-27T05:52:22.193 回答
1

那是不可能的。用户模式应用程序必须由用户启动,并且在该用户注销时不会继续运行。这就是该SessionEnding事件的目的:允许您在用户注销或计算机关闭时优雅地关闭您的应用程序。您不能只在系统启动时启动某些东西并使其一直运行。

为此,您需要一个 Windows 服务。但是您应该知道,在 Windows Vista 和更高版本下,服务不能直接与用户交互。它们在单独的进程中运行,并且被限制显示自己的 UI。从问题中不清楚您的需求究竟是什么,但这是值得考虑的 Windows 服务的一个重要限制。一个适当的设计确实不应该要求这样做,但显然有很多人对这种新的、更安全的行为来说是一个真正的惊喜。我在这个问题这个其他问题的相关答案中更详细地解释了这一点。

于 2011-01-27T05:52:28.413 回答