web-dev-qa-db-ja.com

monoを使用して.NETWindowsサービスアプリケーションをLinuxに移行するにはどうすればよいですか?

Monoを使用して.NETWindowsサービスをLinuxに移行するための最良のアプローチは何でしょうか?スケジュールされたコマンドとしてアプリケーションを実行することを避けようとしています。

サービス/システムデーモン(Linuxの場合)のような動作を取得することは可能ですか?

28
Raúl Roa

Linuxでは、 deamons は単純なバックグラウンドプロセスです。 Windowsのように、特別な制御メソッド(start()stop()など)は使用されません。単純な(コンソール)アプリケーションとしてサービスを構築し、バックグラウンドで実行します。 daemonize のようなツールを使用してプログラムをUnixデーモンとして実行し、アクティブ化するプログラムとしてmonoを指定することを忘れないでください。

他の人が指摘しているように、 mono-service は、ServiceProcessアセンブリで構築されたサービスを実行するためのホストです。 Windows用に構築されたサービスは、このメソッドを使用して、Linuxで変更せずに実行できます。プロセスにシグナルを送信することでサービスを制御できます(マニュアルページを参照)。

33
gimel

モノサービスを使用してラップできますか?

この質問 を参照してください。

3
Marc Gravell

私が過去に行った方法は、.Netアプリケーションをコンソールアプリケーションとしてコンパイルしてから、Linuxサーバーでinitscriptsディレクトリに起動スクリプトを作成することです。

Linuxには明らかにWindowsサービスがなく、起動時にrc.dディレクトリから開始されるデーモンは同等です。ほとんどのrc.dスクリプトは、バックグラウンドスレッドでさまざまなアプリケーションを起動するだけなので、それほど複雑なことはありません。追加の作業のほんの少しは、開始するために、そしてサービスを停止したい場合は、Linuxシェルスクリプトを書く必要があるということです。

2
sipwiz