使用mono将.NET Windows服务迁移到Linux的最佳方法是什么?我一直在努力避免将应用程序作为计划命令执行 .
是否有可能像行为一样获得服务/系统守护进程(在linux中)?
在Linux下,deamons是简单的后台进程 . 在Windows中没有使用特殊的控制方法(例如 start() , stop() ) . 将您的服务构建为一个简单的(控制台)应用程序,并在后台运行它 . 使用像daemonize这样的工具将程序作为Unix守护程序运行,并记住将 mono 指定为要激活的程序 .
start()
stop()
mono
如其他人所述,mono-service是运行使用 ServiceProcess 程序集构建的服务的主机 . 为Windows构建的服务可以使用此方法在Linux下运行未修改 . 您可以通过向进程发送信号来控制服务(参见手册页) .
ServiceProcess
你可以用单声道服务来包装吗?
见this question .
我过去的方法是将.Net应用程序编译为控制台应用程序,然后在Linux服务器上创建initscripts目录中的启动脚本 .
Linux显然没有Windows服务,启动时从rc.d目录启动的守护进程是等效的 . 所有大多数rc.d脚本都是在后台线程上启动不同的应用程序,所以没有什么真正复杂的 . 唯一的额外工作是你需要编写一个Linux shell脚本来启动,如果你想停止服务 .
3 回答
在Linux下,deamons是简单的后台进程 . 在Windows中没有使用特殊的控制方法(例如
start()
,stop()
) . 将您的服务构建为一个简单的(控制台)应用程序,并在后台运行它 . 使用像daemonize这样的工具将程序作为Unix守护程序运行,并记住将mono
指定为要激活的程序 .如其他人所述,mono-service是运行使用
ServiceProcess
程序集构建的服务的主机 . 为Windows构建的服务可以使用此方法在Linux下运行未修改 . 您可以通过向进程发送信号来控制服务(参见手册页) .你可以用单声道服务来包装吗?
见this question .
我过去的方法是将.Net应用程序编译为控制台应用程序,然后在Linux服务器上创建initscripts目录中的启动脚本 .
Linux显然没有Windows服务,启动时从rc.d目录启动的守护进程是等效的 . 所有大多数rc.d脚本都是在后台线程上启动不同的应用程序,所以没有什么真正复杂的 . 唯一的额外工作是你需要编写一个Linux shell脚本来启动,如果你想停止服务 .