問題タブ [service-locator]
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.
reflection - Silverlightモジュールとロードモジュールからインターフェイスを動的に抽出します
一部のwinforms/webformsアプリケーションでは、アプリケーションの起動時に、リフレクションを使用してBINフォルダーからすべてのアセンブリを検査し、実装するすべてのパブリッククラスとインターフェイスを抽出してリポジトリに書き込むモジュールを作成しました。これは、後で実行時に、実装および使用するインターフェイスに基づいてモジュールをロードできるようにするためです。
Silverlightでこれを達成できるかどうか/どうすればよいかを知る必要があります。すべてのXAPを検査し、すべてのモジュールをそれらのメタデータと一緒に抽出する方法はありますか?そして後で、必要なコンポーネントが配置されている場所にモジュールを動的にロードし、そこからコンポーネントをロードできるようにします。
ありがとうございました
c# - IDependencyResolverはアンチパターンですか?
いくつかのアーキテクチャ上の変更をレガシーASP.NETアプリケーションに設計しています。ASP.NETMVCのIDependencyResolverを模倣する依存関係解決用のいくつかのクラスのプロトタイプを作成しました。インターフェースはほとんど同じですが、他の自然言語であるため、投稿しません。
私はそれがサービスロケーションと見なされる可能性があることを理解しました。サービスロケーションは通常(場合によっては完全ではありませんが)依存性注入を支持して非難されます。それでも、ASP.NETMVCの依存関係解決の実装の使用に反対する推奨事項は見つかりませんでした。
ASP.NET MVCのIDependencyResolverはアンチパターンと見なされますか?それは悪いことですか?
unit-testing - テストで IDatabaseInitializer<> をバインドして、データ コンテキスト イニシャライザー (EntityFramework 4.1 aka EF4 Code First) をテストする
単体テストでテストデータ初期化子を使用し、本番環境で実際のデータ初期化子を使用できるように、データベース初期化子を挿入しようとしています。
これが私のninjectモジュールです。
ご覧のとおり、定義されているバインディングは 1 つだけです。ただし、テストを実行すると、次の例外が発生して失敗します。
カーネルをインスタンス化し、それを共通サービスロケーターに渡すベーステストフィクスチャがあります。
私はninjectを初めて使用するので、正しく設定したかどうかわかりません。
この問題を解決する方法についてのヘルプは大歓迎です。
乾杯
design-patterns - Service Locator パターンは Abstract Factory パターンと何か違いはありますか?
一見すると、Service Locator パターンは Abstract Factory パターンと同じように見えます。どちらも同じ用途のようで (抽象サービスのインスタンスを受け取るためにクエリを実行します)、どちらも Dependency Injection について読んだときに言及されました。
ただし、Service Locator パターンが不適切なアイデアとして説明されているのを見たことがありますが、少なくとも 1 つの主要な Dependency Injection フレームワークで Abstract Factory パターンが直接サポートされているのを見てきました。
それらが同じでない場合、違いは何ですか?
.net - Ninject WCF Extenstion を使用したサービス ロケーター フリー アーキテクチャ
最終的に Ninject が DI を処理する方法をある程度理解しましたが、次の問題に直面しました。
2 つの WCF ServiceHost オブジェクトをコンストラクター パラメーターとして受け取るクラスがあるとします。
最初は ServiceHost の依存関係が 1 つしかなかったので、次のようにバインディングを簡単に処理できました。
このシナリオでは、シングルトン オブジェクトで初期化された依存関係をActivitySinkServer
解決できます。ServiceHost
NinjectServiceHost
2 つの ServiceHost 依存関係があるので、Ninject に、どのコンストラクター パラメーターでどれをフィードするかをどのように伝えることができますか? (マニュアルの Ninject 属性やその他のものを使用できたことはわかっています)。
アップデート:
私は先に進み、ちょうど使用しました
ターゲット コンストラクターの変数名を明示的に指定します。それに害はありません。ただし、誰かがよりエレガントでオブジェクト指向のアプローチを持っている場合は、喜んで答えてください。
c# - .NETMVC3サービスロケーター/依存関係リゾルバーの質問とNinject
私は、私が遊んだり学んだりしている標準の.NETMVC3リポジトリパターンプロジェクトと考えるものを持っています。それはかなり標準的な構造です。
- リポジトリプロジェクト(下記のキャッシングインフラストラクチャを使用)
- ドメインモデルプロジェクト
- サービスレイヤープロジェクト
- MVCプレゼンテーションプロジェクト
静的コンストラクターのみを持つクラスのプライベートメンバーを注入する必要があるシナリオに遭遇しました。これにより、コンストラクターの注入ができなくなります。
問題のクラスは、完了したばかりのAppFabricキャッシング実装を使用するためのラッパーです。(そのような傾向がある人のために、私の実装はhttps://github.com/geersch/AppFabricに基づいてい ます)
基本的に私は持っています:
- インターフェイスICacheProvider
- クラスDefaultCacheProvider:ICacheProvider
- 静的クラスキャッシュ(私が注入した実装を利用する)
静的クラスキャッシュは、DefaultCacheProviderに解決されるICacheProviderを挿入したい場所です。
私が読んだものに基づくと、これはServiceLocatorのシナリオのように見えますが、非常に強い意見(アンチパターンなど)がいくつか見られ、それと私の知識が低いため、確信が持てません。動作する実装。
キャッシュクラスを標準クラスとして設計し、SingletonScopeにICacheProviderを挿入するというStackOverflowの推奨事項を見てきました。
しかし、私は個人的に使いやすさのために静的ラッパーを好みます。
ServiceLocatorはここに行く方法を設定していますか、それとも私が気付いていない明らかな何かがありますか?ServiceLocatorが進むべき道である場合、Ninjectとの連携を利用することはできますか?Ninjectにサービスロケーター機能があることは知っていますが、実装方法がわかりませんでした。
情報をありがとう。
php - Service Locator を使用してコンテナー インスタンスを Service に提供するのは間違っていますか?
私はサービスレイヤーを使用しています。次に、次のようなサービスがたくさんあります。
- ユーザーサービス
- 記事サービス
- コメントサービス
- AuthorizationService
別のサービスからサービスを使用する必要がある場合があります。
現在、依存性注入に sfServiceContainer を使用しており、一部のサービスに Doctrine 2 エンティティ マネージャーを注入していますが、任意のサービスと EntityManager を取得できるようにコンテナー インスタンスを切り替えて注入することを考えています。
しかし、私は立ち往生していて、それが良い考えかどうかわかりません。
gwt - ServiceLocator を使用する場合、Locator メソッドはどこに移動しますか?
で別のサービス クラスを使用する場合、メソッドをどこかServiceLocator
に定義する必要がありますか?:Locator
彼らはサービスクラスに参加しますか?
java - Java - アノテーションを使用したサービス ロケーター パターンの自動実装
春は私が欲しいものをほとんど提供してくれます。Spring では、単に @Component でクラスにアノテーションを付けてから、「context:component-scan」を使用して、Spring が自動的にコンポーネントを検索するようにすることができます。その後、アプリケーション コンテキストを作成し、getBean(String, Class) を呼び出して、任意のインターフェイスまたはクラスの実装を取得できます。
たとえば、「Mp3Service」というインターフェースがあり、「InternetMp3Service」という新しい実装を登録したい場合、@Component アノテーションをクラス定義に追加するだけです。
私にとってこれに関する唯一の問題は、これらすべてをアプレットで使用したいため、アクセス許可「accessDeclaredMembers」に対して java.lang.RuntimePermission 例外が発生することです。アプレットに署名したくないし、Bean の明示的な構成を作成する必要もありません。
私が探しているのは、コンパイル/ビルド時に注釈を通過し、実行時に読み取ることができる構成を作成するフレームワーク/ライブラリです。
たとえば、ここに何も表示されず、問題を解決する価値があると判断した場合、すべてのクラスをスローして特定の注釈を探し、Spring xml 構成ファイルを作成する独自のプログラムを作成できます。しかし、誰かがすでに利用可能なものを今持っているのではないかと思いました。
ありがとう。
java - ServiceLocatorパターンの実装に関するヘルプを探しています
作成している小さなWebアプリケーションがあります。主に単体テスト機能を向上させるために(そしてコードをさらに分離するために)、いくつかの依存関係の具体的な実装を検索するためにサービスロケーターパターンを実装しています。Service Locatorシングルトンクラス自体にはほとんど満足していますが、どこに配置し、どのようにロードするかについて興味があります。シングルトンは基本的に、インターフェースのハッシュマップ->具体的な実装を管理します。
ワークスペースにいくつかのプロジェクトがあります。
1)サーブレットコードとプレゼンテーション層処理を含むプレゼンテーション層プロジェクト。(以下の2と3を使用)
2)データベースなどにアクセスするためのコードを含むデータアクセス層プロジェクト(以下の3を使用)
3)両方のレイヤーで使用されるさまざまなデータモデルを含む共通のプロジェクト。(他のプロジェクト参照はありません)
サービスロケーターは、上記のプロジェクト1と2の両方でクラスの実装を提供するためのものなので、どこに配置するのが最適か疑問に思います。
私が立ち往生しているもう1つの質問は、デフォルトの実装でそれをロードするのに最適な方法です。1つのオプションは、すべてのデフォルトの実装をシングルトンサービスロケータークラスのコンストラクターに配置することです。例えば:
別のオプションは、デフォルトの実装でServiceLocatorをロードする責任を持つ別のクラスを持つことです。しかし、問題は、デフォルトの実装が他のクラスの前にロードされるように、それをどのように呼び出すかです。
だから私は私の2つの質問は次のとおりだと思います:
1)ServiceLocatorはどのプロジェクトに最適ですか?
2)デフォルトの実装でクラスをロードするためにどのようなソリューションをお勧めしますか?
ありがとう