7

ドメイン モデル (MVC など) をビジネス ロジックを保持するものとして定義する記事をいくつか読みました。モデル プロパティ以外のメソッドを保持するモデルを考えたことはありません。

ドメインモデルに機能やビジネスロジックを持たせることをサポートする考え方が実際にあるのか知りたいです。

前もって感謝します。

4

3 に答える 3

12

もちろん、ビジネス ロジックはドメイン モデル内にある必要があります。しかし、ドメイン モデルは単なるエンティティ フレームワーク エンティティではありません。ドメイン モデルは、ビジネス ドメインを反映する多数の小さなクラスで構成されます。

私の典型的な MVC アプリケーションでは、通常、いくつかのタイプのビジネス ロジックを次のように分割します (ただし、これらに限定されません)。

  • ビューのモデルを担当するViewModels 。
  • 薄くてアプリケーションフローを担当するコントローラー。
  • 必須フィールドなどの単純なビジネス ロジックは、エンティティ フレームワーク モデルまたはViewModel内の属性として存在できます。
  • 注文や予約チケットなどの複雑なビジネス ロジックは、PlaceOrderOperation や PlaceOrderCommand などの独自のクラスに昇格されます。
  • 単純なクエリロジックは、入力するコントローラーまたは短い拡張メソッド内にある場合がありますDbSet<Entity>
  • 複雑なクエリも、クエリが複雑であると仮定して、GetMostPorpularProductsQuery などの独自のクラスに昇格されます。
  • インフラストラクチャコンポーネントは、ActionFilter、CustomRoute、CustomTemplate などの Entity Framework または MVC コンポーネント、または EcyptionHelpers などの独自のクラスの拡張機能である場合があります。

結論

ドメイン モデルの構築は、UserBusinessLogic などの BusinessLogic や UserServices などのサービスを使用してクラス プレフィックスを作成するだけではありません。1 つのことを担当する多くの小さなクラスで構成する必要があります。もちろん、デザイン パターンの使用、フレームワークの選択、エラー処理、ローカリゼーション、キャッシュなどのインフラストラクチャ コンポーネントが必要になります。

トレードオフの世界へようこそ。:)

于 2012-11-23T10:11:58.577 に答える
4

MVCModelは確かにビジネス ロジックを持つことができます。MVC の責任については、ここで詳しく説明されています。ここでは、貧血ドメイン モデルに関する説明があります。これで問題が解決するかもしれません。

MSDNから:

MVC Web アプリケーションのアプリケーション モデルを表すクラスに提供されるモデル。通常、このフォルダーには、オブジェクトを定義するコードと、データ ストアとのやり取りのロジックを定義するコードが含まれています。通常、実際のモデル オブジェクトは別のクラス ライブラリにあります。ただし、新しいアプリケーションを作成するときは、ここにクラスを配置し、開発サイクルの後半で別のクラス ライブラリに移動することがあります。

問題を混乱させる可能性があるのは、多くの ASP.Net MVC 実装が を使用View Modelsしていることです。これは、View と Controller の間でプレゼンテーション層のデータを転送するために使用されるクラスです。

典型的な大規模なプロジェクト セットアップでは、通常、Models フォルダーを削除し、代わりに EF データ レイヤー、エンティティ、およびビジネス/サービス ロジックを完全に別のアセンブリに移動します。

于 2012-11-23T10:05:41.937 に答える
0

私の経験に基づくと、ビジネス ロジックを配置するのに最適な場所は、コントローラーとモデルの間のレイヤーです。repositorytasks/commandsなど、いくつかの一般的なパターンを試してください。

于 2012-11-23T10:11:35.417 に答える