質問
複数の異なるアプリケーションで使用されている既存のデータアクセスとビジネスロジックレイヤーを考えてみましょう。これまで、それを消費した特定のアプリケーションの寿命に単一のデータ接続しか必要でした。アプリケーションの構成ファイルからレイヤー。ただし、データとロジックのクラスは、アプリケーションが通話ごとにデータ接続を決定する柔軟性を提供する必要があります。さらに、クラスは現在、サービスを通じて複数のアプリケーションによって同時に呼び出されます。
発信者は、特に接続文字列を管理したくありませんが、データレイヤー内およびデータレイヤーによって接続文字列に解決できる列挙の形で接続名を管理したくありません。
現在、すべてのデータとロジッククラスは静的であり、データは内部スコープされ、ロジックは公開されています。
APIの使いやすさ、パフォーマンス、スレッド安全 /発信者の分離などを考慮して、発信者からデータクラスのメソッドまでずっとキーを取得するためのいくつかの良い戦略は何ですか。
2つの明らかなオプションは次のとおりです。
すべてのメソッドにパラメーターとして接続キーを追加します。 Yuck-は起こるつもりはありませんが、完全性を含めます。
ロジッククラスとデータクラスを変更してクラスをインスタンスに変更し、使用するメンバーメソッドのコンストラクターのキーを渡します。メソッドの署名の変更はありませんが、APIの呼び出し方に大幅に変化する変更があります。
他にどんなオプションがありますか?
解決
残念ながら、このタイプの問題に対処する方法のための2つの最良のオプションを見つけました。 #2は、さまざまなサービスリクエストがどのクライアント(セッションなど)がどのクライアントであるかを思い出す方法が必要になるか、各通話のサービスを通じて接続情報を渡す必要があるためです。
クライアントサイドラッパークラスを作成してサービスにアクセスすると、必要なクライアントサイドの変更の数を制限できると思います。サービス自体にとって、あなたは本当にパラメーターとして接続を渡すことになっていると思います。