将Window桌面应用程序转换为Window服务

时间:2011-12-13 08:57:44

标签: c#

我有一个使用C#.NET(.NET framework 4.0)开发的窗口桌面应用程序,但现在我想将其转换为窗口服务。桌面应用程序中有一个窗体表单。这怎么可能?欢迎任何代码或帮助链接。

由于

3 个答案:

答案 0 :(得分:3)

完全取决于应用程序的功能。您必须记住的主要事情是,当应用程序作为服务运行时,它无法进行任何用户交互,因为它无人值守。

请查看此内容以获取更多背景信息:

Introduction to Windows Service Applications

或者使用SrvStart(免费软件实用程序)将现有应用程序作为服务运行:

Using SrvStart to Run Any Application as a Windows Service

还有一些商业工具可以将Windows应用程序转换为以下服务运行:

FireDaemon

AlwaysUp

答案 1 :(得分:1)

Ricibob的回答是正确的。我按照他的建议开始了。我需要WCF数据服务,因为我必须编辑数据库中的一些数据。当我发现WCF数据服务不支持Enums时,我陷入困境。我的业务反对广泛使用的枚举,现在我不知道该怎么做。

答案 2 :(得分:0)

一旦应用程序作为服务运行,单独的UI演示应用程序之间的所有通信都是跨进程的 - 因此您需要对其进行管理。根据您的技能组合,今天最简单的方法是WCF。您的第一步是定义GUI客户端应用程序和服务之间的接口(GUI需要对服务进行哪些调用,它们是单向还是双工(返回数据),服务是否需要触发客户端事件(这需要)回调接口)?等) 确定后,您可以继续开始构建WCF服务。这是一个需要托管的DLL - 在你的情况下由服务主机 - 这是非常直接的,有很多关于它的信息(基本上只是几行锅炉板代码,然后运行一个实用程序来注册服务)。使用命令行主机代替服务主机测试服务器很有用(更容易调试等) - 因此在设置2个主机项目(一个服务,一个cmd行)时非常有价值。
我个人从未尝试过使用WCF服务的表单客户端 - 如果您的表单很简单,您可能会发现在WPF中开发客户端更容易。客户端使用您定义的接口在服务器上进行调用,并使用WCF生成的代理代码,用于管理跨进程(或机器)的传输。 WCF通过有关要使用的传输的配置文件(namedpipes,tcp,http等)非常灵活。好勇气!