7

私は、サービスとインターフェイスのバインディングのために、異なるプロジェクトのIWindsorContainerIUnityContainerの間の2種類のコンテナで作業しました。しかし、私はかなり違いは何かを確認していないですか?彼らは同じ機能を持っていますか?そうであれば、既存のものについては別のものを開発する必要があります。あるいは、彼らにはいくつかの違いがありますか?はいの場合、それは何ですか?私はどちらを使いたいのですか?私はこの混乱に対して小さなdocumentationを持っていますが、私は静かにそれをキャッチしませんでした。あなたが私にそれを知らせたら、私は感謝します。ここではNHibernetマッピングを使用しています。IWindsorContainerとIUnityContainerの違いは何ですか?

+0

[Dependency injection container?それは何ですか?](http://stackoverflow.com/questions/8015101/dependency-injection-container-what-does-it-do) – NightOwl888

+0

親愛なる@ NightOwl888、私は違いを知りたいと思います。その状況で私はあなたが私が尋ねたことを理解していないと思う。あなたがそこで提供した重複した回答で、私はこれについても見ている 'IUnityContainer'について' Windsor documentation'だけを議論しました。 –

+4

DIコンテナを使用して(またはDIコンテナを全く使用せずに)、依存性注入パターンを実装することができます。しかし、同じアプリケーションで複数のものを使うのは間違いでしょう。依存性注入について知るには、[Dependency Injection in .NET](https://www.manning.com/books/dependency-injection-in-dot-net)を読むことをお勧めします。これは簡単なQ&A形式で議論するには広すぎるトピックです。 – NightOwl888

答えて

3

私は両方のコンテナを使用していて、それらの間に大きな違いがあり、何年もの間、UnityContainerはチームによって管理されており、まだ拡張されています。 Windsorコンテナは、実際のエラーを返す際にそれほど優れていませんでした。 UnityContainerには素晴らしいドキュメントがあり、Nugetや他のリポジトリマネージャを使用してインストールするのは非常に簡単です。

ここに私の言葉があります...コードの使用方法を見れば、例えばhttps://github.com/castleproject/Windsor/blob/master/docs/README.md、windsorは非常に難読化されています。

public void Install(IWindsorContainer container, IConfigurationStore store) 
    { 
     container.Register(Classes.FromThisAssembly() 
          .Where(Component.IsInSameNamespaceAs<King>()) 
          .WithService.DefaultInterfaces() 
          .LifestyleTransient()); 
    } 

あなたが団結、https://github.com/unitycontainer/unity/blob/master/quickstarts/CS/EventBroker/Src/Stoplight/Program.csを見たい場合、それは別の方法でそれらを登録することで何が起こっているかがより明確になります。ウサギの穴を塞いでいるときのエラーコードも、Unityでもっときれいです。

IUnityContainer container = new UnityContainer() 

      .AddNewExtension<SimpleEventBrokerExtension>() 

      .RegisterType<ILogger, TraceLogger>() 

      .RegisterType<IStoplightTimer, RealTimeTimer>(); 
関連する問題