2009-04-18 1 views
3

すでにn層設計の記事があり、これは私のことを思考してサークルを回っている可能性があることを認識していますが、今は自分自身がすべて混乱してしまいます。コミュニティから明快になるようにしてください。N層アーキテクチャー設計の分離の問題

私は異なる層に、(自分のプロジェクトの各)、私が作成したプロジェクトを分離しようとしています(とで開始するアーキテクチャは非常にうまく設計していなかった):

  • UI
  • をビジネスは
  • ロジック/ビジネスオブジェクト
  • DAL

UIはそのようなものを取得するロジック層を呼び出す必要があり

ビジネスは、電話または何か他のものへの参照を持つべきではない、単にデータを格納する方法であるオブジェクト

ロジック/BUSINESSレイヤーは、システム内のオブジェクトを取得、作成、更新、削除(CRUD)するためのすべてのメソッドを保持する必要があり、BOとDALの両方への参照を持ちます。ビジネスロジックをオペレーションに適用し、実際のCRUDをDALに委譲します。

DALは、DB上でCRUD操作を行うだけです。 Getなどのためにそれらを返すようにBOの参照を持っています。

私の質問は、論理クラスは同等のDALクラスを呼び出すだけで、代わりに論理クラスを呼び出す必要がありますか?つまり、CompanyLogicクラスは、CompanyDALクラスのみを呼び出す必要があります。したがって、クライアントオブジェクトをIDで取得する場合は、ClientDAL.GetClientByID(int)ではなくClientLogic.GetClientByID(int)を呼び出します。クライアントを取得した場合、

  • 何ロジックについて、プロジェクト間の結合を緩めるように思われる

    1. 私はそれは多分、独自の層の上にとどまるべきと思った理由は、ということでしたオブジェクトには論理検証がいくつかあります(おそらく最良の例ではありませんが、その点を理解してもらいたい)。

    EDIT:

    が、私はそれが私が悪いデザインですが、現時点ではビジネス層がClientBULLとCompnayBULLを含むクラスの数を持っている場合、両方のクラスは、1への呼び出しを持ってわかりません別の私は各クラスのインタフェースを使用し、結合を減らすためにオブジェクトを構築するファクトリを持っていますが、両方のクラスでメソッドを呼び出すために、互いに存在することなく存在することはできません。これは悪い考えですか?

  • 答えて

    4

    さて、ここであなたの設計上の私のコメントです:

    • Logicは、本質的に抽象永続化に割り当てられた層であり、何のために悪い名前です。私はおそらく、曖昧で絶対に何かを意味する "Logic"ではなく、 "Repository"または "Persistence"またはDAO(データアクセスオブジェクト)と呼ぶでしょう。

    • ビジネスレイヤをDALから切り離したい場合、ロジックレイヤはDALへのインターフェイスのみを受け入れ、具体的なDALクラスは受け入れません。

    • 検証の対象となるべき2つの学校があります。いくつかは完全にうまくいっていて、UIレイヤーにある検証があります。他の人はむしろ例外を投げたり、ビジネス層からメッセージを渡したりします。いずれにしても、一貫性を保ち、複数の場所で検証を重複させないでください。うまくいくでしょう。

    • はおそらく私があなたに与えることができる最高のアドバイスになるでしょう。それはうまくやっていると思っていますが、コーディング中にそれを見る必要があります。そのときだけ微妙な癖や落とし穴が現れます。どんなプロトタイプを思いついても、あなたの開発とデザインには貴重な価値があります。

    Goodluck!あなたの編集再

    更新

    :同じ名前空間またはアセンブリ内には、具体的なクラスへの呼び出しは間違いなく大丈夫です。私は、あなたがビジネスロジックのためのインターフェースを用意する必要があるのは過度に複雑であると思います。つまり、あなたが従うべきルールは複数ありますか?

    私は物事をシンプルに保ち、その後はYAGNIの信者です。そのインターフェイスを実装/既に実装しようとしているクラスが3つ以上存在するまでインターフェイスを作成しないでください(DALは常に例外です)。

    +0

    は、インターフェイスと完全に一致します。私はこのルートを通過し、それぞれの具体的なタイプを生成するためのファクトリを作成しようと試みました。実装に問題がありますが、別の投稿のために保存します。ポイントはよく、タイトルのLOGIC、おかげで撮影... – Jon

    関連する問題