3

マルチプレイヤーゲーム(ここではアマチュア!)を書いてみたいと思っていたので、デザイン時にMVCパターンを使用することにしました。
今私の質問は、ネットワークコードをどこに置くべきかということです。モデルまたはコントローラーで?(明らかにビューではありません)

編集: 申し訳ありませんが、100回目の私の質問は不明確でした。
ゲーム自体はMVCになり、最初にサーバーと通信し(プレーヤーを検索)、後でそのプレーヤーと通信します(自分のターンを送信して他のターンを取得します)。だから私はどこでそれをすべきですか?

4

2 に答える 2

2

MVC デザイン パターンは、実際には、プレゼンテーション レイヤーとモデル レイヤーの 2 つのレイヤーの組み合わせです。プレゼンテーション層は通常、ユーザー インターフェイスを処理します (それを更新し、ユーザーの操作に反応します)。モデル レイヤーは、ドメインのビジネス ロジックと永続性を扱います。

ネットワーク コードは、モデル レイヤーに配置する必要があります。

正確に言えば、永続性を扱うモデル レイヤーの部分では、ビジネス ロジックの観点から、データがどこから来るかの違いはありません。これは、SQL データベースから、開いているネットワーク ソケットから、または火星探査車の検出器からのものです。これらはすべて単なるデータ ソースであり、データ マッパーとして実装されることが多く、モデル レイヤーの一部です。

于 2012-08-25T08:41:52.233 に答える
1

実際のゲーム自体を新しいプロジェクトに配置し、それを MVC アプリケーション間で参照することができます。これにより、ゲームは Web アプリケーションから完全に分離されます。これは、たとえば WPF に移植したい場合に役立ちます。もう 1 つの方法は、MVC アプリケーションが情報を要求する Web サービスとしてゲームを使用し、追加の言語をプラグインするためのスケーラビリティを提供することです。

ただし、MVC ですべてをまとめて保持することにした場合は、モデルをお勧めします。

内訳として:

  • コントローラーは、すべての Web 要求、つまり GET と POST を処理します。また、モデルにデータを入力して、そのリクエストに適したビューを返すこともできます。

  • モデルには、実行するドメイン オブジェクトとロジックが含まれています (つまり、リポジトリから情報を抽出し、ビューに渡すデータを操作します)。

  • ビューは、モデル内に保存されたデータに基づくマークアップを返します。

特定の実装では、条件のチェックやリポジトリ呼び出しなどの追加のロジックもコントローラー レベルで行われます。これは、Fat Controller Thin Model と呼ばれる手法です。

編集:

コントローラーにリクエストを送信する必要があります。つまり、ゲーム コントローラにはHTTPPost、サーバーに接続し、プレイヤーにターン情報を送信して新しい情報を取得するメソッドがあります。例えば:

[HttpPost]
public ActionResult SendPlayerTurnInformation(PlayerObject player) 
{
   // logic to connect to the Game Network
   // connection.UpdatePlayerTurn(player);

   //return success/fail
}

次に、同じことを行って特定のプレーヤーのターン情報を取得し、モデルを更新して新しい情報を含むビューに渡すことができます。

于 2012-08-25T08:37:22.933 に答える