質問

誰もがMVCについて話しているので、ビジネスルールが対処されていないことに気付きました。 3層アーキテクチャの昔、ビジネスルールは中間層にありました。新しいMVCのどこに位置しますか?

役に立ちましたか?

解決

最初のブラシでは、モデルに属していると思います。 WikipediaのMVCエントリは同意しているようです:" MVCでは、モデルはアプリケーションの情報(データ)およびデータの操作に使用されるビジネスルール」。 結局、「ビジネスルール」とは、入力/出力関連のロジックとは対照的に、アプリケーションが関与するドメインをエンコードする機能的なアルゴリズムとロジックを意味します。これらのビジネス関連のコアロジックは、ユーザーに表示されるもの(ビューのドメイン)またはユーザー入力(主にコントローラーが受信する)に基づいて変更されない、または変更されるべきではありません。

私の経験では、この種の質問をすることはソフトウェア開発プロセス中に非常に明らかになっています。真のビジネスルールではない場合、モデルに属していない可能性があります。

他のヒント

MVCアドレスが表示されない理由"ビジネスルール" MVC全体がプレゼンテーションパターンであるということです。アプリケーションの構造化方法に焦点を当てています。たとえば、モデルはプレゼンテーションモデルと考えることができます。ビューがレンダリングするアプリケーションのモデル。

ただし、プレゼンテーションモデルを作成するには、通常、すべてのビジネスロジックが存在するドメインモデルに移動する必要があります。その時点で、MVCはそのコードが物理的にどこにあるかを指示しません。別の層にありますか? MVCは気にしません。

ビジネスルールは常にモデル内に存在します。モデルは、まったく異なるUIで再利用できるビットです。ビューは明らかにUIの選択に完全に依存しており、コントローラーはモデルからデータを取得し、ビューにレンダリングするよう指示する必要があります。

ビジネスロジックをビューに挿入すると、構造がプレゼンテーションに結び付けられるため、不適切です。

ビジネスロジックをコントローラーに挿入すると、ビジネスドメインがモデルによって保持されるデータとコントローラーのルールに分割されるため、不良です。

ウィキペディアからの引用記事

MVCはWebアプリケーションでよく見られます。ビューは実際のHTMLページであり、コントローラーは動的データを収集してHTML内のコンテンツを生成するコードです。最後に、モデルは、通常はデータベースまたはXMLノードに保存される実際のコンテンツと、ユーザーのアクションに基づいてそのコンテンツを変換するビジネスルールで表されます。 p>

MVCとNtierを混合できない理由はありますか?私たちのアプリケーションはまさにそれを行います。コントローラーはデータ検証に使用され、どのビジネスレイヤーを呼び出すかを決定します。

OurApp.Web-Asp.net MVCプロジェクト
OurApp.Business-ビジネスレイヤーライブラリ
OurApp.DataAccess-データレイヤーライブラリ
OurApp.Entities-基本的に、すべてのレイヤーで共有されるすべての「モデル」

ビジネスルールは、コントローラーではなくモデルに含める必要があります。コントローラーとビューはプレゼンテーション層の一部です。

モデルはドメインのエンティティと機能を表します..

コントローラーは、ユーザー入力と要求を受け取り、モデル内またはモデル上でアクションを実行し、それをプレゼンテーション層のビューにマッピングするための単なるマネージャーです。コントローラーは単なる仲介者ではなく、ビューまたはコントローラーがモデルに作用する可能性があります。

これは古くから投稿された質問ですが、アプリケーションのどの部分からも完全に独立しているルールリポジトリが好きです。複数のアプリケーション、ビジネス層の複数の実装は、ビジネスルールリポジトリの静的レンダリングにアクセスできる必要があります。このような単純な分離の決定により、デスクトップからの移行が行われます->ウェブ、例えば、些細な。

私のアーキテクチャでは、View->モデル->コントローラー->ビジネス層->ルールリポジトリ、つまりコントローラーは、ビジネス層/レイヤーによって提示された粗いデータにアクセスし、それをモデルにフィードして、それを表示可能な形式にマッサージし、ビューが受動的に表示します。プレゼンテーション形式全体で再利用可能なビジネス層には、明示的なルールがあり、暗黙のルールを持つサブシステムにアクセスできます。設計上、各コンポーネントはその上のコンポーネントの詳細を認識しません。

この問題は定義の問題だと思います。必要な順序で画面を表示するためのロジックはコントローラーの問題であり、ルールエンジンを使用して順序とユーザーからの入力が必要なものを決定するプロジェクトを見てきました。これは、ビジネスルールの私見とは異なります。

モデルではなく、コントローラー内に存在するビジネスルールが間違っています...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top