如何使用 mono 将 .NET Windows 服务应用程序迁移到 Linux?
使用 mono 将 .NET Windows 服务迁移到 Linux 的最佳方法是什么? 我一直试图避免将应用程序作为计划命令执行。
是否有可能获得类似行为的服务/系统守护进程(在Linux中)?
What would be the best approach to migrate a .NET Windows Service to Linux using mono? I've been trying to avoid executing the application as a scheduled command.
Is it possible to obtain a service/system daemon(in linux) like behavior?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 Linux 下,守护进程是简单的后台进程。 没有像 Windows 中那样使用特殊的控制方法(例如
start()
、stop()
)。 将您的服务构建为简单(控制台)应用程序,并在后台运行它。 使用诸如daemonize
之类的工具来运行程序作为 Unix 守护进程,并记住指定mono
作为要激活的程序。正如其他人所指出的, mono-service 是运行使用以下构建的服务的主机
ServiceProcess
程序集。 为 Windows 构建的服务可以使用此方法无需修改即可在 Linux 下运行。 您可以通过向进程发送信号来控制服务(请参阅手册页)。Under Linux, deamons are simple background processes. No special control methods (e.g
start()
,stop()
) are used as in Windows. Build your service as a simple (console) application, and run it in the background. Use a tool likedaemonize
to run a program as a Unix daemon, and remember to specifymono
as the program to be activated.As noted by others, mono-service is a host to run services built with the
ServiceProcess
assembly. Services built for Windows can use this method to run unmodified under Linux. You can control the service by sending signals to the process (see man page).可以用单一服务来包装它吗?
请参阅此问题。
Can you use mono-service to wrap it?
See this question.
我过去的做法是将 .Net 应用程序编译为控制台应用程序,然后在 Linux 服务器上的 initscripts 目录中创建启动脚本。
Linux 显然没有 Windows 服务,启动时从 rc.d 目录启动的守护进程是其等效项。 大多数 rc.d 脚本所做的就是在后台线程上启动不同的应用程序,因此没有什么真正复杂的。 唯一的额外工作是您需要编写一个 Linux shell 脚本来启动和停止该服务。
The way I have done it in the past is to compile the .Net application as a console application and then on the Linux server create a startup script in the initscripts directory.
Linux obviously does not have Windows services and the daemons that are initiated from the rc.d directories on startup are its equivalent. All most of the rc.d scripts do is start the different applications on a background thread so there's nothing really complicated to it. The only bit of extra work is that you will need to write a Linux shell script to start and if you want stop the service.