私は単一のページで構成されるWebアプリケーション(ASP.NET)ゲームに取り組んでおり、そのページにはモノポリーに似たゲームボードがあります。私は、最良のアーキテクチャアプローチが何であるかを判断しようとしています。これまでに特定した主な要件は次のとおりです。
- 最大6人のユーザーが1つのゲーム状態オブジェクトを共有します。
- ユーザーは、ゲームの現在の状態、つまり、アクティブなユーザーが何をロールしたか、お互いのユーザーがどれだけのお金を持っているかなどを(比較的)最新の状態に保つ必要があります。
ゲームの状態をデータベースに保持することを考えましたが、ゲームの状態オブジェクト(たとえば、キャッシュ内)を最新の状態に保つことができる場合、データベースを更新し続けるのはやり過ぎのようです。たとえば、フローは次のようになります。
- ユーザーからデータの要求を受け取ります。
- データベースでデータを検索します。そのデータからオブジェクトを作成します。
- ユーザーがゲームの状態に基づいてリクエストを実行する権限を持っていることを確認します(つまり、それが本当に自分の番であるか、そのプロパティを購入するのに十分なお金があることを確認します)。
- ゲームオブジェクトを更新します。
- ゲームオブジェクトをデータベースに書き戻します。
- リクエストごとに繰り返します。
1台のサーバーが複数の同時ゲームを提供するとします。
- AJAXを使用してASP.NETページにリクエストを送信することを考えました。
- Silverlightを使用してWebサービスへのAJAXリクエストを使用することを考えました。
- SilverlightでWCFデュプレックスチャネルを使用することを考えました。
最善のアプローチが何であるか理解できません。すべてに欠点があるようです。誰かがこの種のことを経験していて、それらの経験を共有することに気を配っていますか?あいまいすぎる場合は、お気軽にご質問ください。ありがとう。
更新:上記の3つのオプションに基づいて、サーバーへのこの接続を実装する方法について誰か提案がありますか?