2009-06-02 10 views
0

ビジネスルールをasp.net mvcアプリケーションに組み込む方法と、それらがモデルにどのように関連するかについて、いくつかのガイダンスを探しています。ASP.NET MVCモデルとビジネスオブジェクト

最初に少しの背景がありますので、この質問に対してどのような解決策が相対的であるかを知っています。職場では、WinForms、MVP、BusinessObjects、DataAccessObjects、およびDataTransferObjectsを使用します。レイヤーの境界はDTOを使用して、メソッドに戻り値の型を渡したり、List型を返します。

現時点では、PresentationLayerでDTOを使用する方法が現時点でどのように機能しているのかを建築家が気に入らないため、DTOをドメインオブジェクトに変換するためのファサードレイヤを追加しています。私はそれが実用的であるか否かを除いて、理論的にはこのすべてについて快適です。

私は楽しいためにウェブサイトを作っていますが、考慮すると、それはSOと同じ量のトラフィックを提供すると言います。最後に聞いた月に60,000ヒットのようなものです。コントローラとビューの仕組み、そしてモデルが2つのモデルとどのように統合されているか、私は快適です。

私はサイト構築のサンプルとしてNerdDinnerを使用しており、例のリポジトリパターン実装に従っています。私が得られないことは、ビジネスオブジェクトをミックスに組み込む方法です。

DataAccessLayer/DataAccessObjectsとしてLINQについて話しています。私がビジネスオブジェクトを介して私の要求のすべてを強制すると、私は奇妙な依存関係を導入しています。私のUIと私のBOは私のDAOについて知っていなければなりません。

LINQクラスを真のDAOレイヤーとして使用し、BOの背後に隠して、BOをPOCOとLINQオブジェクトの間で変換することは意味があります。

私の唯一の懸念は、私のUIをLINQクラスにバインドしても問題ありません。本当にすべての余分な作業が必要なわけではありません。NerdDinnerのような軽量なアプローチに満足しています。

私が本質的に持つのは、LINQオブジェクトを受け取り、返すコントローラでインスタンス化されるリポジトリです。私のビジネスオブジェクトには、LINQクラスをとり、何らかの計算を実行する静的メソッドがあります。たとえば、特定の州税tax%またはw/eを適用します。

これらの計算はリポジトリの結果全体で行う必要があるため、ファサードレイヤーのような1つの中央領域にそれらを組み合わせることを考えていますが、データを変換して他のものには変換しないオブジェクトセット(DomainObjects < - > DTO)。

私はそれを行うべきですか、それらのビジネスメソッドが実際に私のモデルの一部であり、それらをオブジェクトを返すリポジトリメソッドに入れるべきだと言いますか?

答えて

8

デザインの観点からは、このように設計します。もちろん命名はあなたのDALとBLLの名前を付ける必要はありませんこの投稿の目的のためだけです..リポジトリと..サービス。

データアクセス/クエリが実行されるはずのリポジトリ(または1つ)があります。それは理想的には(コンパイルされているかどうかにかかわらず)クエリーを含んでいるだけです私は個人的にクエリを分離しておくのに役立つ各データ型のリポジトリを持っています。

次のレイヤは、私がサービスを呼びたいビジネスレイヤである必要があります。これらのクラスは、サービスの消費者に必要な情報を得るために必要とされる、検証、準備手順、およびその他の必要なことに関するすべてのロジックを担当します。 ASP.NET MVCアプリケーションと同様に、私のサービスではビューモデルが返され、厳密に型指定されたビューに直接渡されます。私のサービスでは、通常、データ型ごとに1つではなく論理的にグループ化します。

これは、データアクセスコードとプレゼンテーションコードをすばらしく薄くして、物事が間違っている可能性のあるロジックの大部分がサービス(またはビジネス)レイヤーにあるためです。

+0

答えをありがとう。私の主な関心事は、PresentationLayerとServiceLayerの両方がDataAccessLayerを参照する必要があるということです。また、私はビジネスオブジェクトやPresentationLayerの検証から離れ、代わりに自分のモデルで直接行っています。これは私が好きな方向です。 – blu

+0

しかし私は答えが好きです+1 – blu

関連する問題