3

私たちの会社のサイトの 1 つにオンライン カスタマー サポート システムを構築しようとしていますが、構造化に関していくつか質問がありました。

シナリオはこうです。サイトのユーザーが「ライブ チャット サポート」ボタンをクリックできるようにしたいと考えています。クリックすると、サポート チームの 1 つに接続しようとするポップアップが表示されます。

一方、サポート チームはデスクトップ クライアントを実行します。サイトのユーザーがリンクをクリックすると、すべてのデスクトップ クライアントが「呼び出し音」を鳴らします。サポート チーム メンバーが通話に「応答」すると、他のクライアントの呼び出し音が止まり、そのメンバーが Web ユーザーとのチャットを開始します。

デスクトップ クライアントが C#.NET で WPF を使用して作成され、サイトが ASP.NET MVC 2 である場合、2 つの間の通信を確立する最良の方法は何でしょうか?

私の最初の考えは、Web 側でチャットを SQL データベースに保存し、何らかの方法で関連するデスクトップ クライアントに "Ping" して、チャット ログを更新するように指示することでした。デスクトップから Web への場合も同様です。しかし、これを 2 つの異なるプラットフォーム間で実装する方法がわかりません。デスクトップクライアントからデスクトップクライアントへの場合は、はるかに簡単になると思いますが、そうではありません。

また、これを行う商用アプリケーションが既に存在することを認識していることを心に留めておいてください。ただし、単純なチャットを超える特注の機能が必要です。詳細に入る価値はありませんが、基本的には独自のソリューションを実装する必要があります。

どんな助けでも大歓迎です。

4

1 に答える 1

1

Web テクノロジは、リアルタイムの対話を実装するための不適切なプラットフォームです。もちろん、それは可能ですが、スケーラビリティ、応答性、および開発作業に問題が生じることは間違いありません。要件を慎重に検討し、目的を達成するためにベンダー製品を活用することが本当に可能かどうかを検討することを強くお勧めします。

それでも自分で攻撃したい場合、克服しなければならない主なハードルは、メッセージをブラウザーにプッシュする方法です。HTTP は「プルのみ」の要求/応答モデルに基づいて構築されているため、純粋な Web テクノロジを使用してサーバーからブラウザーに「ping」を実行することは不可能です。サーバー内のクライアント間で維持される永続的な接続はありません。サーバーがブラウザへのページの送信を完了すると、接続が失われます。

新しいメッセージがないか Web サーバーをポーリングすることもできますが、これはスケーラブルなソリューションではありません。非常に少数 (たとえば 1 桁) のユーザーのみを扱っている場合、これは機能する可能性がありますが、応答性はポーリングの速度によって制限され、ポーリングが高速であるほど、このソリューションのスケーラビリティは低下します。なれ。

より良い解決策は、Silverlight、Flash、またはブラウザーで実行されるその他のシック クライアント テクノロジを使用することです。次に、クライアント間のメッセージ ルーティングを処理するサービスを実装できます。 CodeProject に関するこの記事は、始めるのに適した場所かもしれません。

于 2010-12-03T16:19:09.590 に答える