問題タブ [ioc-container]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - よく構造化された ASP.NET MVC マルチサイト コードベースを作成するにはどうすればよいですか?
私が取り組んでいるプロジェクトには、あいまいに定義された究極の要件があります。「サイトは、他のクライアントに対して「スキン可能」であるべきです。
ご存知のように、ほとんどの場合、UI、ロジック、およびモデルの変更を行う必要があります。
別のクライアントをサイトに追加するには作業が必要であり、新しいスキンを作成するほど簡単ではないことを説明しました. また、未知で未定義のものを設計することは不可能であることも説明しました。
とはいえ、複雑になりすぎずに再利用できるようなデザインを考えたいと思います。
できるだけ多くのコントローラーとビューを共有できるようにしたいと考えています。
ユーザーがサイトにアクセスするために使用している URL に基づいて、別の一連のルート (別のコントローラーを指す) をロードしようと考えていました (これは可能ですか?)。私の考えでは、一連の基本コントローラーを定義し、サブサイトごとに継承できると考えていました。
私がやろうとしていることを行うためのより良い方法はありますか?
これは IoC コンテナーで実行できますか? そのようなアプローチに利点はありますか?
単一の MVC コードベースを共有し、異なるサイト間で大部分を再利用する必要がある状況を他の人はどのように処理していますか?
アドバイスやご意見をお寄せいただきありがとうございます。
ioc-container - IoC: コンテナーで初期化されたコンポーネントの前提条件ではなく、既存のランタイム オブジェクト
私の場合、Castle Windsor を IoC コンテナーとして使用しています。
IoC コンテナーがコンポーネントを作成するときにオブジェクトを作成するのではなく、実行時にコンストラクター引数の 1 つが既存のオブジェクトに設定されるコンポーネントを宣言したいと思います。たとえば、アプリケーションのメイン フォームのインスタンスです。
私は2つのアプローチがあると思います:
- 最初にコンテナーを介してオブジェクトを作成し、必要なランタイム値で構成して、後でコンポーネントが Windsor に要求したときにすぐに使用できるようにします。
- コンポーネントが値を注入する必要がある場合
IFormProvider
と 具体的なを作成し、その後フォーム インスタンス (つまり) を要求します。FormProvider
IFormProvider
formProvider.Form
これについて何か前進はありますか?
xml - なぜxmlはIOCコンテナーでそれほど目立つように機能するのですか?
IOCコンテナーに入ろうとしていますが、多くのコンテナーがxml構成を使用していることに気付きました。多くの新しいテクノロジーがxml構成/プログラミングモデル(WCF、WPF、Spring.NET、Unity、Windsor)に移行している理由について誰かに教えてもらえますか?xmlは複雑な設定を指定するのに不適切な選択であるように思われ、タイプセーフでインテリセンスがあるコードで行う方がよいでしょう。一部の人がこれを議論の余地があると思うかもしれないことを私は知っていますが、他の点では非常にクールで高度なテクノロジーがxmlに依存している理由について本当に興味があります。
.net - IOCの選択に圧倒される
IOC の選択肢が多すぎて、どこから始めればよいかわかりません。これまで、Spring.NET、Unity、Ninject、Windsor、および StructureMap を見てきましたが、どれが他のものより優れているのかわかりません。では、あなたのお気に入りの IOC は何ですか? また、他のどの IOC よりもそれを使用する理由は何ですか?
c# - DI:IDisposableオブジェクトの寿命の処理
そのため、DI / IoCコンテナOpenNETCF.IoCに取り組んでおり、コンテナコレクション内のIDisposableアイテムのライフサイクル管理の形式を追加するための(合理的な)機能リクエストがあります。
私の現在の考えでは、オブジェクトをクエリして破棄されたかどうかを確認することはできず、オブジェクトが破棄されたときのイベントを取得できないため、開発者が必要とするオブジェクトのラッパーを作成する必要があります。管理するフレームワーク。
現在、オブジェクトはAddNewで追加できます(簡単にするために、オーバーロードは1つだけで、Addはないと仮定します)。
私が検討しているのは、新しいメソッドを追加することです(それらのグループですが、全体像を把握できます)。
DisposableWrappedObjectは次のようになります。
これで、アイテムがAddNewDIsposableを介してコンテナーに追加されると、イベントハンドラーも追加されるため、(ラッパーを介して)Disposedを取得すると、フレームワークはそのアイテムを基になるコレクションから削除します。
私は実際にこれを実装し、単体テストに合格していますが、これがどこで壊れているのか、または消費する開発者にとってより「友好的」になる方法についての意見を探しています。
編集1
Disposedイベントがどのように使用されるかについて質問があったので、ここにいくつかのコードがあります(重要なものにトリミングされています):
java - クラスター対応のIoCフレームワーク-何をすべきだと思いますか?
私は現在、できればJavaを使用して、論文のトピックを選択しようとしています。:)
本格的なJavaEEスタックがブロートウェアである場合があります。多くのものを使用することはなく、そのようなタイトなレプリケーションなどは必要ありません。
軽量ルートを選択する場合は、Spring、Guice、またはその他のIoCフレームワークを使用できます。また、DI(Springを使用すると、すべてを好みに合わせてラップしているため)などの優れた機能を使用できます。ただし、レプリケーションと、アプリケーションレベルでの負荷分散が必要になるように設定しましょう。あなたの選択肢は何ですか?それで、私が思うことは次のとおりです。クラスター対応のIoCフレームワークについてはどうでしょうか。ここでは、次のようなことができます。
これらのメソッド呼び出しはクラスター全体に分散されるため、フィールドレベルでデータレプリケーションを効果的に実現できます。
または次のようなものについてはどうですか?
アドホッククラスタリングをミックスに追加し(マルチキャストアドレス/ブロードキャストを使用)、これらの機能を実装すると、単一のアプリケーションを効果的に拡張できます。
あなたの考えは何ですか?これは良いトピックになりますか?
inversion-of-control - autofacコンテナのセットアップを管理する
私のチームメンバーの1人が、私たちのサービスの1つでautofacを使用することに決めました。それを試してみたかったので、私たちはそれに固執しました。
しばらく経ち、コンテナのセットアップ方法が大きくなりました!とても大きいので問題があります。
それを分割しても、私たちが探していた結果は得られませんでした。たぶん私たちはそれを間違って使用しているだけです。
だから私の質問は:コンテナのセットアップをどのように管理できますか?XMLにダンプできますか、それとも他のベストプラクティスはありますか?
dependency-injection - Ninjectv1でのIKernelのリセット
Ninjectのv1で問題が発生し、StandardKernelをリセットしています。カーネルへのアクセスを提供するために使用する静的オブジェクトがあります。
問題は、さまざまな単体テスト(MSTestを使用)またはフィットネスフィクスチャでObjectFactoryを使用しようとすると発生します。新しいテストやフィクスチャの前に常にObjectFactory.Reset()メソッドを呼び出しますが、Resetが実際には機能せず、元のバインディングがそのまま残っているように見える場合があります。Ninjectのv2でIKernelオブジェクトをリセットする方法があることは知っていますが、まだその動きをする準備ができていません(そしてそれは私たちにとってかなり重要な動きです)。
なぜこれが発生するのかについて誰かがアドバイスを提供できますか?異なるランナーの別々のスレッドでテストが実行される方法に関連していると思いますが、どうすれば回避できますか?
前もって感謝します
.net - 依存性注入と .NET 属性
ロギングを行うメソッド属性がいくつかあります。私たちのロギング コードはインターフェイス (ILog) の背後にあり、実装ではなく、属性がそのインターフェイスのみに依存するようにしたいと考えています。これは、テスト容易性や依存関係の逆転に関するものではなく、コンポーネントの結合をクリーンに保つためのものです。
例として、次のような Web (Mvc) 固有の属性がある場合があります。
LogFactory は具体的な実装 Log.cs に依存しています。これは、私の Web DLL を具体的な実装を含む DLL に結合するという不幸な効果をもたらします。つまり、システム全体がより硬直的で壊れやすくなります。
このような依存関係が明らかになる他の場所では、IOC コンテナを使用して注入します。これはまさに私が属性でやりたいことですが、どうすればよいかわかりません!
それで、私の質問は次のとおりです。インターフェイスの背後にある .NET Framework 属性に具体的な依存関係をどのように注入できますか (できれば StructureMap のような IOC コンテナーを介して - しかし、機能するものは何でも問題ありません)。
c# - Castle Windsor が「Content」および「Scripts」フォルダーをコントローラーとして解決しようとするのはなぜですか?
ASP.NET MVC アプリケーションを作成し、Castle Windsor を IOC として使用しようとしています。
ただし、コントローラーが解決しようとしているときに、メソッドの「コントローラー名」パラメーターに「コンテンツ」と「スクリプト」を取得していますCreateController(RequestContext requestContext, string controllerName)
。言うまでもなく、これらはコントローラーではありません。それらは Web サイトのフォルダーのようです
これらをコントローラーとして登録しようとするのはなぜですか?
これらのフォルダーを無視するにはどうすればよいですか??
ありがとう
WindsorControllerFactory からの例外
画像を投稿できないため、説明する必要があります-基本的には
「コンテンツコントローラーが見つかりませんでした」
Global.asax.cs
windsorControllerFactory.cs