すでに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)
を呼び出します。クライアントを取得した場合、
何ロジックについて、プロジェクト間の結合を緩めるように思われる
:
私はそれは多分、独自の層の上にとどまるべきと思った理由は、ということでしたオブジェクトには論理検証がいくつかあります(おそらく最良の例ではありませんが、その点を理解してもらいたい)。
EDIT:
が、私はそれが私が悪いデザインですが、現時点ではビジネス層がClientBULLとCompnayBULLを含むクラスの数を持っている場合、両方のクラスは、1への呼び出しを持ってわかりません別の私は各クラスのインタフェースを使用し、結合を減らすためにオブジェクトを構築するファクトリを持っていますが、両方のクラスでメソッドを呼び出すために、互いに存在することなく存在することはできません。これは悪い考えですか?
は、インターフェイスと完全に一致します。私はこのルートを通過し、それぞれの具体的なタイプを生成するためのファクトリを作成しようと試みました。実装に問題がありますが、別の投稿のために保存します。ポイントはよく、タイトルのLOGIC、おかげで撮影... – Jon