2012-02-09 9 views
4

topshelfで実行可能ファイルを複数実行する方法はありますか?トップシェルフ複数ホスト

// Create hosts 
var h1 = HostFactory.New (...); var h2 = HostFactory.New (...) 

// Start hosts 
in one application Runner.Run (h1, h2); 

編集

スレッドで解決

。しかし、それが安全であるかどうかわからない...

new Thread (()=>Runner.Run (h1));  
new Thread (()=>Runner.Run (h2)); 
+0

これは、多くの問題を引き起こす可能性があります。私はServiceCoordinatorがこのように安全にアドレス指定できるかどうか分からないので、それらの間でクロストークが発生する可能性があります。また、コンソールアプリケーションでなくサービスとして実行しようとすると、これは奇妙な動作になります。私はこのアプローチをまったく提案しません。いくつかのアイデアが必要な場合は、メーリングリストhttps://groups.google.com/forum/#!forum/topshelf-discuss – Travis

答えて

1

:これはTopshelfの前の3.0バージョンに対してのみ有効です。 3.0ではこれが削除され、複数のサービスをホストする他の方法に置き換えられています。

複数のホストを実行する方法はありません。ホストを起動すると実行がブロックされ、たくさんのものが実行されます。 1つのホストに複数の論理サービスを登録することもできます。

https://github.com/Topshelf/Topshelf/wiki/Creating-a-service

return (int)HostFactory.Run(x => { 
    x.Service<Service1>({ ... }); 
    x.Service<Service2>({ ... ]); 
}); 

単一のAppDomainの下で実行されるすべての論理的なサービスを提供しています。これは問題かもしれません。別々のAppDomainsでそれらをホストする必要がある場合は、シェルビングに取り掛かりました。 http://topshelf-project.com/documentation/shelving/警告として、同じタイプの複数の論理サービスを開始する場合は、構成時に一意の名前が付いていることを確認してください。 Topshelf docsから

+3

に参加してください.3.0では、このように複数のサービスがサポートされていません。 –

+2

あなたは「このように」と言います。今のところ他の方法はありますか?私はTopshelfをLognet 1.2.11でアップグレードしましたが、この機能(と完全なDSLは問題ありません)がなくなったか変更されていることがわかりました: – Noctris

+7

TopShelf 3.0でどうすればいいですか? – Zingui

7

は1つのだけのサービスを持つことができます!現時点では、基本製品の3.xトップシェルフとしては、複数のサービスをホストしているより長いサポートはありません( )。これは、実装するコード が非常に壊れやすく、デバッグが難しいために行われました。より簡潔できれいなベース製品のために を選択しました。この機能はおそらく がadd on nugetの形で戻ってきます。

関連する問題