2009-04-08 10 views
1

私は現在のデザインに関するフィードバックを探していました。ここでアプリケーションアーキテクチャのフィードバック

が現在

  1. Webアプリケーション(UI)をどのように見えるかですBLL層とBusinessEntitiesレイヤ
  2. BusinessEntitesレイヤーを参照 - (性質上の内部検証で)インタフェースとクラスが含まれています
  3. BLL( BusinessEntitiesとDAL Layerを参照) - 主に、Create()Save()Delete()のようなメソッドを持つ各ビジネスオブジェクトのマネージャを持っています。
  4. DAL(BusinessEntities Layersを参照) - ビジネスエンティティオブジェクトを作成/追加/更新するDBコマンドを持っています。

レイヤに使用されている命名規則についてはわかりません。だれかが私が喜んでそれらを採用するよりも良い提案があれば、

また、DALがBusinessEntitiesレイヤーを参照しているという考えが嫌いですが、データセット/データテーブルの代わりにオブジェクトを返す方法はありますか?

フィードバックありがとうございます。

答えて

1

ビジネス層をDALから参照する必要性に関しては、これはおそらく最適ではないということに同意します - 下位層は上の階層を知るべきではなく、再利用性を減らし、 。

DALが工場のように動作するのではなく、DALクラスを使用して独自の永続性操作を行うと考えましたか?そうすれば、あなたのDALはデータベースをより直接的に表現することになります。ビジネスエンティティは、適切に補完して持続するために必要な(ビジネス)ロジックを含んでいます。

また、あなたがスペックアウトした「BLL」レイヤーは、私にビジネスロジックを含むようには見えません。エンティティのパーシスタンスサービスレイヤー以上になるように思えます。

だから、あなたが提案する何の変化が考えられます。

  1. のWeb/UI、ビジネスエンティティ
  2. BusinessEntitiesを参照し、ビジネスロジックとのインタフェースとクラスが含まれています。参照DataServices layer
  3. DataServicesには、データをロード、検索、および保持するクラスが含まれています。ビジネスエンティティによって生成、消費、処理可能なデータ(データ転送オブジェクト)を含む「汎用」構造を提供できます。参照DAL。
  4. DAL。これは単にテーブルにマップするクラスを提供します。

要件に応じて、BusinessEntitiesとDataServices(元のデザインのBLL)を1つの層にマージすることを検討します。私がそれらを分け合わせるために考えることができる唯一の理由は、あなたがクライアント側のビジネスエンティティで非同期データ操作を必要とするSilverlightのようなものをやっている場合です。

もちろん、これはすべて特定のシステム要件に関する不完全な知識であり、特定のアプリケーションに最適なものを設計する必要があります。がんばろう!

+0

ありがとうございました。 DALがDataServices Layerに何も知らずにクラスを戻す方法を理解するのに苦労しています。私は明らかにこれを非常に新しいので、多分例が役立つだろう。あなたはもちろん、時間があれば、それは大丈夫です。 – AlteredConcept

+0

私はあなたにフォローアップの質問をしていますが、DALでDTOを定義し、データアクセスサービス層が必要な場合はDTOとは関係なく、メッセージインタフェースとしてBusinessEntitiesへのインターフェイスを公開します。 DTOは、ADO.NETオブジェクトを渡さないようにするだけです。 –

+0

したがって、次のようになります。DALには、AddressDTO、IAddressDTO、およびIAddressDTO GetAddress(int id){}があります。 DataService Layerにはメソッドがあります。Public Address GetAddress(int id){DAL.IAddressDTO iadd = new DAL.AddressDAL.GetAddress(int id); // DTOでアドレスオブジェクトを作成する} – AlteredConcept

関連する問題