私は通常、開発するすべてのソフトウェアのユースケースを作成します。ユースケースごとに、私は通常、フローを指示するコントローラーを作成します(ユースケースを実装します)。
最近、Asp.netMVCを使用してWebアプリの開発を開始しました。Asp.net MVCのベストプラクティスの1つは、コントローラーのロジックを非常に少なくすることです。これを反映するためにデザインをどのように変更するのかわかりません。
基本的に、ユースケースをカプセル化する方法が必要です。
私は通常、開発するすべてのソフトウェアのユースケースを作成します。ユースケースごとに、私は通常、フローを指示するコントローラーを作成します(ユースケースを実装します)。
最近、Asp.netMVCを使用してWebアプリの開発を開始しました。Asp.net MVCのベストプラクティスの1つは、コントローラーのロジックを非常に少なくすることです。これを反映するためにデザインをどのように変更するのかわかりません。
基本的に、ユースケースをカプセル化する方法が必要です。
ファットモデルとスキニーコントローラーを使用することは、一般的にどの言語でも良い習慣であり、特に.NETMVCではないと思います。Ruby on Railsのファットモードの利点を示すサンプルシナリオを紹介するこの素晴らしい記事をチェックしてください(ただし、アイデアはどの言語にも当てはまります)。
コードでユースケースを表すには、コントローラーではなくテストケースを使用する方がはるかに適していると思います。
モデルとヘルパークラスにできるだけ多くのビジネスロジックをプッシュし、主にURL呼び出しの処理と関連モデルのインスタンス化、モデルからのデータの取得、ビューへのデータのプッシュにコントローラーを使用します。ビューとコントローラーは、可能な限り少ない決定を行う必要があります。
ユースケースをカプセル化するビジネスコンポーネントを作成します。たとえば、休暇管理システムがある場合、休暇の申請、休暇申請の承認、休暇申請の却下などのユースケースがあります。このために、メソッド(関数)を使用して休暇管理者と呼ばれるビジネスコンポーネント(クラス)を作成できます。 / operations)「適用」、「承認」、「拒否」など。これらのメソッドは、ユースケースをカプセル化します。これらのメソッドは、ビジネスエンティティとデータストアクラスを入力として受け取り、ユースケースを実行します。
class LeaveManager{
int Apply(from, to);
bool Approve(leaveApplicationId, approverId);
bool Reject(leaveApplicationId, approverId);
}
次に、コントローラーでこのビジネスコンポーネントを使用して、必要なパラメーターを指定することでユースケースを実行できます。