C# 如何使用mono将.NET Windows服务应用程序迁移到Linux?

C# 如何使用mono将.NET Windows服务应用程序迁移到Linux?,c#,.net,linux,.net-2.0,mono,C#,.net,Linux,.net 2.0,Mono,使用mono将.NET Windows服务迁移到Linux的最佳方法是什么?我一直试图避免将应用程序作为计划命令执行 是否有可能获得类似于服务/系统守护进程(linux)的行为?您可以使用mono服务包装它吗 请参阅。我过去的做法是将.Net应用程序编译为控制台应用程序,然后在Linux服务器上的initscripts目录中创建一个启动脚本 Linux显然没有Windows服务,启动时从rc.d目录启动的守护进程与之相当。大多数rc.d脚本所做的只是在后台线程上启动不同的应用程序,所以没有什么真

使用mono将.NET Windows服务迁移到Linux的最佳方法是什么?我一直试图避免将应用程序作为计划命令执行


是否有可能获得类似于服务/系统守护进程(linux)的行为?

您可以使用mono服务包装它吗


请参阅。

我过去的做法是将.Net应用程序编译为控制台应用程序,然后在Linux服务器上的initscripts目录中创建一个启动脚本

Linux显然没有Windows服务,启动时从rc.d目录启动的守护进程与之相当。大多数rc.d脚本所做的只是在后台线程上启动不同的应用程序,所以没有什么真正复杂的事情。唯一需要做的额外工作是,您需要编写一个Linux shell脚本来启动和停止服务。

在Linux下,是简单的后台进程。Windows中没有使用特殊的控制方法(例如
start()
stop()
)。将您的服务构建为一个简单的(控制台)应用程序,并在后台运行它。使用类似于将程序作为Unix守护进程运行的工具,并记住指定
mono
作为要激活的程序


正如其他人所指出的,是运行使用
ServiceProcess
程序集构建的服务的主机。为Windows构建的服务可以使用此方法在Linux下不经修改地运行。您可以通过向流程发送信号来控制服务(参见手册页)。

没有特殊的控制方法吗?它是否与服务的定义和意义相矛盾?启动和停止不是特殊的方法,它们是最基本的方法。守护进程和服务是同义词,它们以完全相同的方式执行完全相同的操作。实际上,所有的启动和停止方法都是由操作系统按照启动和关闭顺序启动和停止的。Linux并不缺乏Windows所具有的这种功能。这些系统比大多数人想象的更相似。同样,使用.NET5.0,您不必再依赖ServiceProcess。