0

さて、私はスタンドアロンの Web サービスを設計しています (RestLET をフレームワークとして使用しています)。私のアプリケーションは 3 つのレイヤーに分かれています。

  • データ層(データベースのすぐ上にあり、データベースへの接続/クエリ用の API とデータベース オブジェクトを提供します)
  • オブジェクト層(データ層からのシリアル化を担当...クライアント層がデータベースを気にせずに使用できるオブジェクトを提供)
  • クライアント層(この層はRestLET Webサービスです...基本的にオブジェクト層からオブジェクトを作成し、Webサービスリクエストを実行します)

ここで、オブジェクト レイヤーで作成するオブジェクトごとに、異なる資格情報を使用したいと考えています (各オブジェクトをサンドボックス化できるように...)。オブジェクト層は、正確な資格情報 (つまり、ログイン/pw/DB URL など) を認識してはなりません。

これを管理する最善の方法は何でしょうか? データレイヤーにスーパークラスのデータベースオブジェクトが必要だと考えています...そして、各サブクラスには必要なログイン情報が含まれます...このようにして、オブジェクトレイヤーはそのまま進みDatabase db = new SubDatabase();、そのデータベースを使い続けることができます。

クライアント レベルでは、ItemCollection items = new ItemCollection();接続されたデータベースを把握したり制御したりすることはできません。

他の人が私のプラットフォームから簡単にサービスを作成できるように、私は自分のプラットフォームを拡張可能にしようとしているので、これを尋ねています。

誰かがこれらのアーキテクチャの問題やこの種のことを管理する方法を経験したことがあれば、洞察やアドバイスをいただければ幸いです...

これが紛らわしい場合は、遠慮なく質問してください。ありがとう!

私のプラットフォームは Java、使用している REST フレームワークは RestLET、データベースは MySQL です。

4

3 に答える 3

2

私の提案は、それぞれの数のデータソースを持つ複数のデータベースを使用できる JTA を使用することです。詳細については、こちらを参照してくださいhttps://test.kuali.org/confluence/display/KULRICE/Datasource+and+JTA+Configuration

于 2010-03-11T05:36:45.417 に答える
1

あなたが説明したことは賢明であり、データベースの詳細とクレデンシャルをクレデントレベルに公開しないようにしようとしていると思います。

この状況では、シングルトンパターンを考えるのに役立つ可能性のあるデザインパターンを考える必要があります。ここでは、1つのインスタンスを作成し、それをオブジェクトレイヤーで使用して、ユーザーに資格情報とURLに関する詳細を表示しないようにします。 。

2番目のオプション、私が頭に浮かぶのはHibernateレイヤーの使用です。これは、詳細を非表示にしてORMオブジェクトにアクセスするだけで、探しているものを取得するのに役立ちます。

于 2010-03-11T06:57:23.600 に答える
1

@saugata のコメントをエコーし​​ます。Springを見て、データ ソースの実装 (またはテスト用のスタブ) を Spring 構成のオブジェクト レイヤーに挿入します。これは、さまざまな方法でアプリケーション アーキテクチャ全体に役立つはずです。

  1. コードを再コンパイルすることなく、その場でデータベース (インスタンスまたは実装) を切り替えることができます。
  2. データ ソースをその実装から完全に抽象化します。これにより、データベースを Web サービス、キューの実装、またはスタブに交換できます。
  3. このようにアプリケーションを分離すると、テストが容易になります。
于 2010-03-11T19:33:51.363 に答える