WindowsサービスでNinjectを使用する良い例はありますか?私が必要とする拡張機能がどういうものかは分かりません。また、Composition Rootはどのようなものでなければなりませんか?そこにWindowsサービスとNinjectを使用する任意の良い例ですか?WindowsサービスでNinjectを使用する
18
A
答えて
19
Windowsサービスは、依存関係注入に関して通常のコマンドラインアプリケーションとあまり変わりません。単純なコンポジションルートは、Main
メソッドです。
私が通常やったやり方は、自分の依存関係が解決されたモジュールでStandardKernel
を作成することです。そして、トップレベルの依存関係を解決するためにkernel.Get
を使用 - 他のすべてはそこから続く:
static void Main(string[] args)
{
var kernel = new StandardKernel(new FooModule());
var barDependency = kernel.Get<Bar>();
System.ServiceProcess.ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] { new FooService(barDependency) };
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}
1
TopShelfと...実行VSインストール(起動) 私は> MyService.exe run
はコードで正常に動作奇妙な問題に直面しましたKernel.Bind(handlers => { var bindings = handlers.From("abc.dll") ... }
しかし、私はそれはNinjectアセンブリスキャンで述べたバインディングを解決できませんでした> MyService.exe install
を使用してインストールした後にサービスを開始します。私の頭を壊すの数時間後
...
が.FromAssembliesMatching(...)
に.From(...)
を変更私は正常にサービスを開始することができます。
誰かを助けることを願っています。
関連する問題
- 1. WCFサービスを使用するNinject Diバインディング
- 2. Windowsサービスでocxファイルを使用する
- 3. WindowsサービスでThread.Sleep()を使用する
- 4. Windowsサービス内のタイマーを使用する
- 5. Windowsサーバー2008 SMTPサービスでウェブサイトを使用
- 6. Ninjectを使ってサービスを設定する
- 7. Windowsサービスを使用してWindows資格情報をバイパスする
- 8. WebアプリケーションのAppdomain内のWCFサービスでNinjectを使用していますか?
- 9. Windowsサービスでのデバッグビューの使用
- 10. Ninjectを使用したコンストラクタインジェクション
- 11. C#を使用してWindowsサービス(C#で記述)を使用
- 12. WindowsサービスでFilewatcherを使用してコマンドラインプロセスを制御する
- 13. WIXを使用してWindowsサービスをパラメータで登録する
- 14. c#windowsサービスでCACLSを使用する方法
- 15. Windowsユニバーサルアプリケーションでデュプレックスwcfサービスを使用する方法
- 16. Windows Phone 7でXML-RPCサービスを使用するアプリケーション
- 17. Windowsサービスとwin32アプリケーションの間でIPCを使用するC++
- 18. デフォルトのパラメータ値をNinject 3.0で使用
- 19. C#のFileSystemWatcherを使用したWindowsサービス
- 20. WMIを使用したWindowsサービス
- 21. installshieldを使用したWindowsサービスのインストール
- 22. VS2010を使用したアンマネージドWindowsサービス
- 23. Ninject + Windows Formsアプリケーション(C#、VS 2010)
- 24. InterceptAttributeを使用してNinjectインターセプトを使用する方法
- 25. Windowsサービス内でWCFサービスをホストする
- 26. Silverlight WebサイトでWindowsサービスを使用できますか?
- 27. Windows VistaでWindowsサービスをインストールする
- 28. MVC3アプリケーションでカスタムロールプロバイダでNinjectを使用する
- 29. 外部アセンブリにあるMVC3コントローラでNinjectを使用する
- 30. Ninject:ビジネスレイヤーでサービスを受けることができません
マイクロソフトでは、Ninjectモジュール(またはカーネル)を上位に注入してサービスを探す必要はありませんか? (ちょうど2つの依存のための大したことではない - ちょうど興味がある) –
いいえ。コンソールアプリケーションのように起動しているわけではありません。必要な場合は、サービスを作成するための抽象ファクトリ(またはファクトリメソッド)パターンのアプローチをとることができます。 –
Dan、Mainメソッドが出発点です。 Webアプリケーションなどのソリューションは実際には回避策です。なぜなら、Webアプリケーションには良い出発点がないからです。 –