2011-05-02 9 views
2

レイヤ3 - インターフェイスソフトウェア設計 - 3層アーキテクチャ

レイヤ2 - ビジネスロジック(データベース機能に送信、有効かどうかを確認、ユーザーからの入力を取得)

レイヤ1 - データベース(作成、更新、ユーザーが自分の主な携帯電話を変更することができた後、システムが自動的にプライマリ、そこにその電話番号を設定する最初の電話番号を追加した場合、)などのレコードを取得します


ユーザーは、多くの連絡先の電話番号を追加することができます自分の番号。

データベースに最初の電話番号レコードが作成されるとき、電話番号をプライマリに設定する必要があるかどうかを確認するのはどのレイヤーですか?

+1

非常にシンプルでビジネスロジックとしても有効です。関数)を意味するので、あなたのビジネスロジックは、電話番号がユーザーに追加されるときにそれを処理する必要があります。データベースはデータを格納するためだけのものなので、インタフェースはユーザーとビジネス層と対話して意思決定を行います。 – SharpUrBrain

答えて

5

ビジネス層。データベースは決定を下すのではなく、データを格納する必要があります。インターフェイスはユーザーとのやりとりをするだけです。ビジネスレイヤーはルールを作成します。

3

電話番号がユーザーに追加されると、ビジネスロジックがそれを処理する必要があります。ユニット/統合テストを提供することで、動作確認することができます。

1

N層アプリケーションのデータ層は、実際には値を入力して値を取得する以外のことはしません。永続性サービスと考えることができます。

他のすべては、UIコード(MVP、MVC、MVVMのようなものに別々のものを分けておくことになっています)を除いて、ビジネスレイヤーおよび/またはロジックレイヤーとして知られています。

この単純な問題は実際にはトランザクションの問題を引き起こしますが、データモデルではこれを防ぐ必要がありますが、原子単位で操作を完了できない場合は、常に2つの電話番号が同時にどちらもプライマリとして終了します(アプリケーションとデータベース間の待ち時間によって異なります)。これらの状況を適切に処理するためには、少なくとも、これらの問題を意味のある方法で伝播するエラー回復(エラー処理)について考える必要があります。アプリケーションをクラッシュさせないでください。

2

私はそれがあなたが目指しているものに依存していると思います。あなたのビジネスレイヤーは電話機がプライマリとして検証/設定されるように処理する必要があります。データベースはまだ私が思う何らかの方法でその情報を保存する必要があります。

セキュリティの確認のような場合は、[インターフェイス]、[ロジック]、[データベース]の各レベルでチェックする必要があります。はい、それは冗長ですが、私はあなたのインターフェイスやロジックを壊すハッカーが、あなたの基礎となるデータを乱用することはできないことを保証したいと思います。

+0

ベスト・ソリューションは、すべてのビジネス・ルールを一度定義し、UIおよびデータベース層用のコード生成ツールを使用することです。 – ajukraine

0

上記の回答を追加するだけで、有効性に関係なく入力を維持することを検討することをおすすめします。 (特にデータを消去する必要がある場合は)さらに開発を加えることができますが、アプリケーションに応じて価値があります。

関連する問題