3

私は WPF で 4 プレーヤーのネットワーク ゲームに取り組んでおり、その過程で WCF を学習しています。これまでのところ、ネットワーク通信を処理するために、Coding4Fun ゲームの YeeTrivia ゲームからのアドバイスに従いまし。それはかなりうまくいきます。dualHttpBindingCallbackContract

ただし、私のサービスは非常に大きくなっています。ゲーム自体を処理するためのメソッド/コールバックだけでなく、チャット システム、ログイン/登録プロセス、マッチメイキング、名簿/プレイヤー情報なども備えています。サーバーとクライアントの両方を維持するのが難しくなっています。単一のインターフェース。たとえば、クライアントでは、コールバックをゲーム ページやロビー ページなどにリダイレクトする必要があり、非常に面倒です。ゲーム ページでのゲーム コールバック、チャット ウィンドウでのチャット コールバックなどを処理できるようにしたいと考えています。

それで、それを処理する最良の方法は何ですか?サービスを複数に分割する、サービスに複数の「エンドポイント」を設定する、または適切な場合にサービスを部分的に実装する他のトリックはありますか?

ありがとう

4

2 に答える 2

4

複数のコンポーネントを用意し、それぞれを 1 つの責任に限定する必要があります。必ずしも 1 つのメソッドではなく、扱っているオブジェクトの 1 つの状態を処理する必要があります。すべてを 1 つのサービスにまとめると、サービスはそれ自体と信じられないほど結合されます。最適には、各コンポーネントは可能な限り独立している必要があります。

理にかなった場所で分割することから始めて、物事をより管理しやすくすることをお勧めします。

于 2009-06-24T15:38:57.253 に答える
1

私は Terry の回答を支持します。大きなインターフェイスをいくつかの小さなインターフェイスに分割することは間違いありません。

また、登録および/またはログインプロセスなどの特定の操作をより単純なサービスに分離することもできます-ゲームについて何も知らない場合、これは単純な非二重サービスであり、たとえば有効な「プレーヤートークン」をそのこの出力は、他のサービスがプレーヤーを認証するために使用できます。

複数のより小さくて無駄のないインターフェイスにより、システム全体の特定の部分だけをターゲット/処理する個別の専用フロントエンド (たとえば、Silverlight など) を潜在的に作成するオプションも提供されます。

マルク

于 2009-06-24T16:04:15.347 に答える