シナリオ:
さまざまなクライアントに見つけてもらいたいサービスがいくつかあります。ディスカバリーの実行は完全に機能しています。しかし今、私はさまざまな理由でこれらのサービスのさまざまなバージョンを持っています。
アプリケーションのライフサイクルには、本番、ステージング、テスト、および開発の 3 ~ 4 つの異なるレイヤーがある場合があります。
過去 6 か月間に展開したクライアントをサポートする必要があるため、同時に 2 から 3 つのバージョンのサービスを実行する必要があるかもしれません。コントラクトの異なるバージョンではなく、実装のわずかに異なるバージョンです。
また、提供するデータのカテゴリごとにサービスを分ける必要があるかもしれません。米国のデータを提供するサービスの 1 つのインスタンスと、カナダのデータを提供する別のインスタンス、およびオーストラリアのデータを提供する 3 つ目のインスタンスがあるとします。場合によっては、サービスに複数のカテゴリが含まれる場合があります。
したがって、クライアントの観点から見ると、契約のみに基づいてサービスを要求すると、実際にはプロダクション、米国、バージョン 1.1 の 1 つのサービスとのみ通信したい場合に、9 ~ 15 のエンドポイントを取得する可能性があります。サービスのスコープが存在することはわかっていますが、自分の環境で必要な種類の柔軟性を可能にする一連のスコープをうまく作成できていません。
前の例では、非常に具体的なサービスを探していましたが、国やバージョンに関係なく、Production だけの特定の契約のすべてのサービスを表示したい場合もあります。追加の「スコープ」をミックスに追加する必要がある場合もあります。合計すると、「スコープ」として使用されている基準が 4 から 6 あるかもしれません。
質問:
スコープは、この種の複雑なフィルタリングを構築する正しい方法ですか、それとも何かカスタムを行う必要がありますか?
スコープが正しい方法である場合、私が見ることができるサンプルを教えてもらえますか?
カスタムする必要がある場合、「スコープ」の動作を拡張して、それをだましてやりたいことをさせる標準的な方法はありますか?
ソースコード: