Windowsチャットアプリケーションを開発したい場合は、チャットサーバーとクライアントも開発する必要があるとします。チャットサーバーアプリを開発した後、そのアプリをマシンで実行でき、チャットクライアントは別のPCを実行します。それらのPCが同じネットワークにない場合は、チャットサーバーが米国のマシンで実行され、1つのチャットクライアントがドイツのマシンで実行され、別のチャットクライアントが英国のマシンで実行されているとします。この状況では、インターネットを使用して通信がどのように行われるか。すべてのnachineはインターネットにアクセスできるため、1つのチャットクライアントがチャットサーバーにログインする方法と、2つのチャットクライアントが相互に通信する方法があります。チャットサーバーを介してデータが1つのクライアントから別のクライアントにどのように転送されるかを知りたいだけです。コンセプトを教えてください。さもないと、チャットサーバーとチャットクライアントが存在する優れた.netベースのチャットアプリケーションのリファレンスを誰かに教えてもらえればもっと良いでしょう.........ありがとうございます。
2 に答える
一般的?これが C# とどのように関連しているかはわかりませんが、クライアント サーバー アーキテクチャは次のようになります。
Client <-----> Server
2 つ以上のクライアントが相互に通信する場所を説明しているようなものについては、複数のクライアントを追加することについて話しているだけです。
Client A <----
|
----> Server
|
Client B <----
クライアント A がクライアント B にメッセージを送信したい場合、クライアント A は、メッセージがクライアント B 向けであることを示す何らかの情報とともにメッセージをサーバーに送信します。サーバーはメッセージを調べ、クライアント B 向けであると判断します。クライアント B への接続を介してそのメッセージをリレーします。
これは、クライアント サーバー アーキテクチャの基本的な定義です。Skype など、クライアント サーバーとピアツーピアを組み合わせた、より高度なアーキテクチャがあります。ハイブリッド システムでは、クライアントからサーバーへの接続は通常、制御メッセージ (認証など) と、別のクライアントに直接接続する方法に関する情報の要求のみを伝送します。このようなアプローチの利点は、A と B の間のすべての通信がサーバーを経由する必要がないことです。A と B は両方ともサーバーに接続しますが、サーバーに直接接続する方法を尋ね、その直接接続を使用して帯域幅を大量に消費します。
しかし、それはすべて余談です。アプリケーションの開発を開始する前に、特定の言語や環境に関係なく、クライアント/サーバー アーキテクチャについてよく調べておく必要があります。
クライアントがサービスをポーリングする WCF Web サービス (シンプルで基本的なシナリオ - 実装は簡単ですが、あまり効率的ではありません)
サーバーが必要に応じてクライアントを更新する WCF Duplex Web サービス (もう少し複雑)
TCP ソケットベースのソリューションで、実装が最も困難ですが、より優れた制御が可能です。Matthew McDonald の本「Pro Silverlight 3」に非常に良い例があります。