1

複数の異なるアプリケーションで使用されている既存のデータアクセスおよびビジネスロジックレイヤーについて考えてみます。これまでは、データを使用した特定のアプリケーションの存続期間中、単一のデータ接続のみが必要でした。そのため、接続情報はデータによって簡単に取得できました。アプリケーションの構成ファイルからのレイヤー。ただし、今後は、データクラスとロジッククラスが、アプリケーションが呼び出しごとにデータ接続を決定するための柔軟性を提供する必要があります。さらに、クラスは、サービスを介して同時に複数のアプリケーションによって呼び出されるようになりました。

呼び出し元は、接続文字列を具体的に管理するのではなく、データ層内およびデータ層によって接続文字列に解決できる列挙型の接続名を管理する必要があります。

現在、すべてのデータとロジッククラスは静的であり、データのスコープは内部で、ロジックのスコープはパブリックです。

APIの使いやすさ、パフォーマンス、スレッドセーフ/呼び出し元の分離などを考慮して、呼び出し元からデータクラスのメソッドに至るまでキーを取得するためのいくつかの優れた戦略は何ですか。

2つの明らかなオプションは次のとおりです。

  1. すべてのメソッドにパラメータとして接続キーを追加します。うん-起こることはないが、完全性のために含まれている。

  2. ロジッククラスとデータクラスをインスタンスクラスに変更し、使用するメンバーメソッドのコンストラクターにキーを渡します。メソッドシグネチャの変更はありませんが、APIの呼び出し方法に大幅な変更が加えられます。

他にどのようなオプションがありますか?

4

1 に答える 1

0

残念ながら、このタイプの問題に対処する方法については、2つの最良の選択肢があります。#2は、サービスが関与することで少し複雑になります。これは、さまざまなサービスリクエストで、どのクライアントがどのクライアントであるか(セッションなど)を記憶する方法が必要になるか、呼び出しごとにサービスを介して接続情報を渡す必要があるためです。

サービスにアクセスするためのクライアント側ラッパークラスを作成すると、必要なクライアント側の変更の数を制限できると思います。サービス自体については、選択肢がかなり複雑であるという理由だけで、毎回パラメータとして接続を渡すことに本当に行き詰まっていると思います。

于 2011-01-22T20:25:46.287 に答える