将.NET服务转化为Linux守护进程

11

我正在使用.NET 3.5编写便携式服务/守护程序,我的Windows服务正在运行,但我想知道有关mono端口的情况...

如果我理解正确的话,我正在寻找的是Mono-service。但是这个东西到底是怎么工作的呢?我是否需要始终使用与mono兼容的代码来构建我的服务呢?例如,我正在使用SQLite。为了在mono中使用它,我是否应该重构我的代码以使用mono命名空间等,例如Mono.Data.SQLite?我还能使用Settings.settings吗?

此外,我读过守护进程不实现onStart/Stop方法,那么我需要改变我的代码以在mono/linux下运行吗?也就是说,在我的代码中使用这些方法,并运行ServiceBase.Run()可以吗?Mono-service是否支持这些方法?

1个回答

11

你应该从一开始就设计程序同时支持Windows和Linux操作系统。

如果要创建一个Mono应用程序,你需要使用Visual Studio与Mono Tools或免费的MonoDevelop-IDE。MonoDevelop可以导入你的Visual Studio项目,并帮助你正确引用命名空间。

使用Mono-Service将您的程序作为守护进程运行。Linux守护进程使用信号与系统通信,请参阅文档

我们之前已经有了类似的问题,因此请阅读这篇文章,了解如何处理Unix信号。


谢谢,非常有启发性。您能告诉我通过WCF与GUI通信是否可以在mono-service中工作吗?那个问题中的一个答案表明,在mono-service下IPC不可能,这仍然是事实吗?此外,如果您知道任何学习编写init脚本的资源,那就太好了,我不知道从哪里开始,谷歌的示例并不是很详细。 - marked

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接