1

ASP.NET の学習を始めたばかりです。私は uni - chess でプロジェクトを持っています (/w プレイ アルゴリズム、アルファ ベータ プルーニング)。学ぶために ASP.NET に実装することにしました。

ここで私の質問があります: モデルは何をすべきで、コントローラーは何をすべきでしょうか? 私が推測するビューは、チェスの駒といくつかの情報を表示する単なるテンプレートです。

ほとんどすべてのロジックを Controller に入れているある人のアプリを見ました。ゲームロジックはモデルに行くべきではありませんか? アプリは次のように動作すると思います:

  • ユーザーの行動を検出する(どのフィールド、どのピース、どこへ)
  • 移動が正しいかどうかを確認します (完全なボードの移動情報が必要です)
  • そうでない場合は、ユーザーに再度移動するように通知します
  • 正しい場合は、移動を処理してアルゴリズムを実行します (コンピューターが移動します。完全なボード情報が必要です)。
  • 今度は再びプレイヤーの番です。

では... ASP.NET MVC 4/4.5 でチェスのゲームを実装するにはどうすればよいでしょうか?

4

3 に答える 3

2

@usr が示唆したように、MVC の背後にある理由は、プレゼンテーション層をビジネス ロジック層から分離することです (テスト容易性、保守性などを改善するため)。

あなたの場合 (すべてのソフトウェア プロジェクトと同様)、それはソリューションに費やす時間と労力に大きく依存します。

何かをすばやく作成したり、アイデアのプロトタイプを作成したりしたい場合は、先に進んですべてのロジックをコントローラーに入れれば、少なくともコードが機能することをすばやく証明できます。

プロジェクトが成長したり、メンテナンスが必要になったりすると、このアプローチはメリットよりも苦痛を伴うことに気付くでしょう。コードが分散し、ロジックがまばらになります。次のステップでは、もう少し手間がかかりますが、コントローラーからの知識を抽出またはリファクタリングして、一般的なチェスのゲームを担当するクラスのセット (ドメイン モデル) にします。

このようにして、1 つの重要な目標を達成できます。それは、プロジェクトのロジック全体を、管理、保守、および再利用が可能なライブラリに格納することです。これは、メイン プロジェクトで使用できる API を指定する意図を明らかにするインターフェイスに囲まれている可能性があります。

このメイン プロジェクトは、デスクトップ アプリ、モバイル アプリ、MVC アプリなど、どのように考えてもかまいません。つまり、完全に機能する堅牢なコアを中心としたシン クライアントです。

この設計では、いくつかの決定に直面する必要があります。たとえば、コアのクラスは通常、MVC アプリのモデルとは異なります (一般的に POCO オブジェクトである傾向がありますが、そうである必要はありません)。そのため、2 つの間でマッピングできるアダプターを使用するか、コアのクラスを MVC のモデルとして使用するより単純なソリューションを使用するかを決定する必要があります。

もう 1 つの問題は、永続化 (DB への保存) を管理する方法の決定である可能性があります。

絶対に忘れてはならないのは、コア API に関する優れた一連のテストです。それらはその動作を定義して文書化し、リファクタリング中に非常に役立つことを証明します。

于 2013-04-27T00:36:34.450 に答える