13

Webアプリケーションを開発しています。ここで行った作業を、同じデータベースを使用する別のアプリケーションに再利用し、同じデータベースの読み取りと書き込みに同じビジネスルールを使用したいと考えています。

どちらのデザインがより正しいでしょう

  1. UIがWebサービスを呼び出すようにします。これは、データアクセス層と通信するビジネスロジックを含むビジネスオブジェクトを使用します。

  2. UIにビジネスロジックを含むビジネスオブジェクトを使用させます。ビジネスロジックはWebサービスを呼び出し、Webサービスはデータアクセス層と通信します。

  3. データアクセス層と通信するビジネスロジックを含むUIユーザービジネスオブジェクトを用意します。

4

7 に答える 7

4

3枚目と言いますか。私は、Web サービスを別のプレゼンテーション層と考える傾向があります。

次のように考えてみてください。新しいユーザーの作成 (User.Add)、特定の説明 (Products.FindByDescription) に一致するすべての製品の検索などを行うために、ビジネス レイヤー コードを呼び出す Web UI があります。

同じビジネス レイヤー コードを再利用して、サードパーティが利用できる公開 Web サービスのセットを構築できるようになりました。ユーザーを追加するメソッド (内部の User.Add() メソッドを呼び出すメソッド、製品を検索する別のメソッドなど) が存在する可能性があります。

得られるのは、同じ基礎となるデータおよびビジネス ロジックに対するプレゼンテーション/インターフェイスの並列セットです。

舞台裏 (Web サービスや UI レイヤーの範囲外) では、ビジネス レイヤーがデータ アクセス レイヤーを呼び出し、データベースへの物理的なクエリを処理します。別の DBMS に変更する場合、理想的には (そして理論的には)、新しいデータベースのデータ層を再構築し、すべてが簡単に機能するようにする必要があります。

ビジネス層には、ユーザー名の長さを 4 ~ 15 文字にする必要があるなどのルールが含まれています。ユーザーは、アクセスできるストアにある製品のみを検索してロードすることができます。等

ビジネス ルールを変更することにした場合 (たとえば、ユーザーは任意のストアの商品をその状態で検索できるようにするなど)、変更を 1 か所で行うだけで、Web サービスや UI を操作して機能させる必要はありません。

于 2009-10-02T15:29:56.087 に答える
1

あなたの説明から、Web サービス レイヤーの使用が必要な理由を提供していません。データベースが UI システムから到達可能であると仮定すると、つまり、ファイアウォールの背後にある同じネットワーク内で、Web サイトの UI コード (サーバー側、私が想定している) が採用する基本的なビジネス オブジェクト レイヤーが要件を満たします。

UI システムとデータ層の間の距離が、データ アクセス層またはビジネス ロジック層が問題に遭遇し始める境界を越え始めたら、Web サービス層を導入します。

于 2009-09-23T02:25:01.617 に答える
1

デザインが「正しい」かどうかという点では、完全なコンテキストなしにデザインの正しさを 100% 回答することは実際には不可能です。要件は何ですか (機能的および非機能的)? どのような設計目標を達成したいですか? それぞれの目標はどれくらい重要ですか?

質問で言及されている唯一の目標は、ビジネス ロジックを別のアプリケーションで再利用することです。アプリケーションのビジネス ロジックを標準的な方法で再利用したい場合は、Web サービスを選択します。したがって、1 つの要件のみに基づいて、オプション 1 (UI->Web Service->Business Layer->Data Layer) が適切な選択であると言えます。

于 2009-09-23T04:27:46.773 に答える
1

論理的には、Web サービスは UI レイヤーに属します。「ユーザー」を人間だけでなく別のシステムと考えれば、それは明らかです。これらの論理レイヤー間で懸念事項を厳密に分離することで、アプリケーションの実装と保守が容易になります。

于 2011-04-06T21:56:58.520 に答える
0

チェックアウト: http://www.icemanind.com/layergen.aspx

UI レイヤーを一番上に、データ レイヤーを一番下に、ビジネス レイヤーを 2 つの間に配置します。各レイヤーは、その下のレイヤーとのみ通信できます。したがって、UI はビジネス層のみと通信します... ビジネス層はデータ層のみと通信します。UI はデータ レイヤーと対話してはならず、データ レイヤーは UI と対話してはなりません。

Web サービスを使用する理由がない限り、私は使用しません。

于 2009-09-29T20:53:08.807 に答える
0

サービス層について何か聞いたことがありますか? トランザクションと操作にサービス レイヤーを使用できると思います。ファサード レイヤーを使用すると、ビジネス レイヤーにアクセスした後、UI からデータ アクセス レイヤーへの直接的または間接的なアクセスを分離して管理するのに役立ちます。それはあなたの要件によって異なります。

于 2014-07-09T14:30:33.823 に答える