1

C# でバックエンドを使用してクロス プラットフォーム チャット アプリを作成したいのですが、そのためのアプローチを探したところ、サーバー上のハンドラーへの http 要求を使用してそれを実行し、それに応じて応答を使用できることがわかりました。これまで、ユーザーの追加、ログイン、ストレージ用のデータベースを使用したメッセージの送受信を行うハンドラーを作成しました。

現在、私はそのためのAndroidクライアントを作成しており、ユーザーのメッセージを取得するには、特定の間隔(3秒)でhttpリクエストを行う必要があります。

これを行うのは良いアプローチではないと感じています。私はこのアプリを 30000 人近くの対象ユーザー向けに作成しています。彼らは 1 つのセッションで 1 対 1 でチャットできるでしょう。

私は正しい方向に進んでいるのか、それともバックエンドを使用してチャットアプリを作成するためのはるかに優れた方法があるのか​​ を知りたいだけです.

wcf について聞いたことがありますが、どのようなアプローチをとるべきか明確ではありません。チャットアプリケーションのアプローチについて教えてください。

編集 whats app や facebook Messenger のような有名なチャット アプリのほとんどの作業の例は、大きな助けになるでしょう。ありがとう。

4

1 に答える 1

2

HTTP でもできますが、代わりに TCP を使用することをお勧めします。ここのcodereview には、C# ベースの TCP サーバーの非常に強固な基盤があり、オブジェクトの処理方法と接続の適切な処理方法の概要を説明しています。Socket

この方法の主な利点は、クライアントをサーバーに接続できることです。クライアントは実質的に任意の言語にすることができます。C# である必要はありません。言語がソケットをサポートしている限り、大丈夫。

その上、クライアントにサーバーをリッスンさせることができます。これにより、数秒ごとに新しいメッセージをサーバーにポーリングする必要がなくなります。サーバーがデータを送信すると、クライアントソケットはデータを受信し、ほぼリアルタイムですぐに処理できますが、HTTPを介してサーバーに新しいメッセージをポーリングする場合、たとえば3秒ごとに、常に終了しますチャット サービスの遅延が発生することは避けたいと思います。

上記でリンクした CodeReview のコード サンプルを参照しSocket、C# で s がどのように機能するか、TCP が保証の観点からどのように機能するかを読んでください (TCP は、送信されたものはすべて同じ順序で反対側に到達することを保証しますが、そうではありません必要に応じて 1 つのパケットなど)、これらすべてをうまく活用すれば、優れたチャット アプリを作成できると確信しています。

編集: あなたの投稿に WCF タグがあることに気付きました。クロスプラットフォームのサポートを実現したいので、この特定のプロジェクトでは個人的には避けたいと思います。そのためにできる限り低レベルに進んでみてください。

于 2013-07-28T13:55:26.847 に答える