2015-01-08 5 views
12

私は適度なサイズのASP.NET MVC/WebApi Webアプリケーション(〜100KLOCS)を持っています。たとえば、ページの読み込みには通常2〜3秒かかりますが、これは最適なものではありません。私は可能性のボトルネックを探しまわって始めてきたように、私は助けることがNinject、私のIOCコンテナは、非常に健康的なマージンで最も遅いを評価していることに気づくことができません。パフォーマンス上の理由からNinjectを置き換える価値はありますか?

http://www.palmmedia.de/Blog/2011/8/30/ioc-container-benchmark-performance-comparison https://github.com/ninject/ninject/issues/84

誰がされていますこの位置で、Ninjectを何か他のもの、例えばLightInjectSimpleInject、またはそのilkの何かに置き換えようとしましたか?努力する価値はありましたか? Ninjectはコミュニティやフレームワークのサポートが多く、最も人気があるようです。私は自分自身をサポートしていないプロジェクトに夢中にさせたくありません。それを超えると、実際のアプリケーションでIOCコンテナのパフォーマンスが気付かれるかどうかをどのようにテストするかはわかりません。

共有する価値のある実世界の話や傷跡はありますか?または、Ninjectがボトルネックであるかどうかを判断する方法についての提案ですか?

+0

この質問は特定のコード関連の問題ではないため、話題にはならないようです。 – theMayer

+1

私は同意しませんでしたが、私はすでに質問トピックがより積極的なクローサーよりも広いと思っています。しかし、これは非常に具体的なコーディングの問題に関連しています。私は自分のコードで1つのフレームワークを使用していますが、いくつかの問題があることに気づき、それらの問題が別のフレームワークで解決できるかどうかを知りたい。コード固有のものです.--)。 –

+1

私はその点についてあなたに同意します。近い投票のために申し訳ありません。 unvoted。 – theMayer

答えて

1

「価値がある」はあなただけが決定できます。最悪のボトルネックがどこにあるかを確認するために、サイトでプロファイラを実行しましたか?あなたの最悪の犯罪者ではないかもしれません。

確かに、どこかで時間を削ることができれば、多くの人にとって価値があります。しかし、その多くはあなたの使い方によって異なります。たとえば、一般的に、依存グラフが浅い少数のオブジェクトだけを注入している場合は、大きなメリットはありません。しかし、何百ものオブジェクトを持つディペンデンシーグラフが深い場合は、多くのメリットがあります。

SimpleInjectorは、主要な開発者は、よく知られた男であるとして、すぐに放棄される可能性が高いではありません。

のStructureMapは、それがパフォーマンスにパックの途中だが、それはよくサポートし、良いコミュニティを持っています、もう一つの良い選択です。

3

私はこの質問に少し遅れてゲームへの思いを知っている、と私はあなたがすでにいくつかの結論に来ていると確信しているが、これは私が自分自身は最近非常に多くを求めて見つけるものです。 Ninjectは確かに最速ではありませんが、私がこれまで使ってきたフレームワークの中で最も柔軟で拡張性のあるフレームワークです(私の意見ではそうです)。私はNinjectで解決できないIoC問題に遭遇したことはありません。

本当にトレードオフです。柔軟性と拡張性が重要なクライアント、通常は社内向けのビジネスアプリケーションで作業しているとき、私はNinjectを使用します。パフォーマンスが重要で、大量の外向きのWebサービスなどの小さなコンポーネントに取り組んでいるとき、私はSimpleInjectorのようなより速いものを使用します。しかし、私は時間があり、何かより高度なことをする必要があるときにそれが欠けていることを再び見いだし、最終的にそれを置き換えることになります。しかし、私の方法論をマイクロ・サービス・スタイルの手法に適用すると、より小さなフレームワークでより多くの価値を見出し始めました。

表示されている音量のタイプのように音が上がるのが見えます。しかし、そのパフォーマンス向上の認識される価値は、柔軟性とNinjectが提供するその他の機能にどのくらいの価値を置くかに全面的に依存しています。

関連する問題