13

Webアプリケーションを開発しています。私たちはおそらく、同じデータベースを使用する別のアプリケーションに対してここで行った作業を再利用し、同じデータベースを読み書きするためのビジネスルールを使用したいと考えています。デザインは、データアクセス層に話すだろう、ビジネス・ロジックを含むビジネス・オブジェクトを使用するUIコールWebサービスを、持っUI、ビジネスロジックレイヤー、データレイヤー、およびWebサービスを配置する場所

  1. より正しいだろう

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

  3. データアクセスレイヤーと通信するビジネスロジックを含むビジネスユーザーオブジェクトをUIユーザーに持たせます。

答えて

0

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

UIシステムとデータレイヤーとの間の距離が、データアクセスレイヤーまたはビジネスロジックレイヤーが困難に遭遇し始める境界線を越え始めるときに、Webサービス層を開始します。

1

デザインが「正しい」かどうかに関しては、完全な文脈なしにデザインの正しさを100%回答することは本当に可能ではありません。要件(機能的および機能的)は何ですか?どのような設計目標を達成したいですか?それぞれの目標はどれくらい重要ですか?

あなたの質問に言及する唯一の目標は、ビジネスロジックを別のアプリケーションで再利用することです。私は、標準的な方法でアプリケーションのビジネスロジックを再利用したいとき、私はWebサービスを選択します。あなたの1つの要件だけに基づいて、オプション1(UI-> Webサービス - >ビジネスレイヤ - >データレイヤ)が良い選択であると言います。

0

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

それは行くべき道は、あなたが上にあなたのUI層、下部のデータ層と2の間であなたのビジネス層を持っています。各レイヤーはその下のレイヤーとのみ通信できます。したがって、UIはビジネスレイヤとのみ話します...ビジネスレイヤはデータレイヤとだけ通信します。あなたのUIはデータレイヤーと決して話すべきではなく、データレイヤーは決してあなたのUIとやりとりするべきではありません。

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

4

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

このように考えると、新しいユーザー(User.Add)の作成、特定の説明に一致するすべての製品の検索(Products.FindByDescription)などのビジネス層コードを呼び出すWeb UIがあります。

これで、同じビジネスレイヤーコードを再利用して、第三者が利用できる公開Webサービスのセットを構築できるようになりました。内部User.Add()メソッドを呼び出すユーザー、製品を見つける別のユーザーなどを追加するメソッドがあります。

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

(WebサービスまたはUIレイヤの範囲外の)ビジネスレイヤーは、物理的にデータベースに問い合わせるデータアクセスレイヤーを呼び出します。別のDBMSに変更する場合は、理想的には(理論的には)新しいデータベースのデータ層を再構築し、すべてを単純に機能させる必要があります。

ビジネス層には、ユーザー名の長さが4〜15文字でなければならないなどのルールが含まれています。ユーザーはアクセス権のある店舗にいる製品のみを検索して読み込むことができます。

ビジネスルールを変更する場合(ユーザーが状態の任意の店舗内の商品を検索できるようにした場合)、一度に変更し、ウェブサービスに触れる必要はありません。それを機能させるためのUI。

10

論理設計と物理設計を混在させないでください。論理設計は、レイヤーや物理的な設計層で機能します。 Webサービスはレイヤーではありません。それは単なる階層です。論理設計では、UIレイヤー→BLレイヤー→DAL の標準的なアプローチがあります。物理的な設計では、すべてのレイヤーがローカルデータベースを接続する1つのクライアントサイドアプリケーション内に常駐することも、リモートレイヤーを介して分散させることもできます。しかし、分散アプリケーションの場合、通常、もう1つのレイヤーが追加されます。アプリケーションレイヤー。ワイヤーを介してBLレイヤー通信から隠蔽されます。

+3

私はこれがWebサービスをどこに置くのかという質問の答えではないと思いますか? – siamak

1

論理的には、WebサービスはUIレイヤーに属します。 「ユーザー」は人間だけでなく、別のシステムであると考えてください。これらの論理レイヤ間の懸念を厳密に分離しておくことで、アプリケーションを簡単に実装して維持することができます。

0

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

関連する問題