2010-12-03 8 views
3

私は、当社のサイトの1つにオンラインカスタマーサポートシステムを構築したいと考えており、構造化に関するいくつかの質問がありました。Web /クライアントサポートチャットシステムを構成する方法

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

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

私たちのデスクトップクライアントは、C#.NETでWPFを使用して作成され、私たちのサイトはASP.NET MVC 2であることを考えれば、2つの間の通信を確立する最も良い方法は何でしょうか?

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

また、これを行う商用アプリケーションがすでに存在していることに気づいてください。しかし、私たちは簡単なチャットを超えた特注の機能を必要としています。具体的な内容に入る価値はありませんが、基本的には独自のソリューションを実装する必要があります。

ご迷惑をおかけして申し訳ありません。

+0

解決方法を見つけましたか?私も同じ型の実装を探しています。あなたのアイデアを共有できますか? –

答えて

0

ウェブ技術は、リアルタイムのやり取りを実装するための不適切なプラットフォームです。もちろん、それは可能ですが、スケーラビリティ、応答性、開発努力に問題があることは間違いありません。要件を非常に慎重に検討し、ベンダー製品を活用して自分がしたいことを達成できるかどうかを検討することをお勧めします。

自分で打ち負かす場合は、ブラウザにメッセージをプッシュする方法が克服する必要があります。 HTTPは "pull-only"要求/応答モデルで構築されているため、純粋なWebテクノロジを使用してサーバーからブラウザを「Pingする」ことは不可能です。サーバー内のクライアント間で永続的な接続は維持されません。サーバーがbroswerにページを送信し終えると、接続は解除されます。

新しいメッセージをWebサーバーにポーリングできますが、スケーラブルな解決策ではありません。ごくわずか(一桁の数字)のユーザーしか扱っていない場合、これはうまくいくかもしれませんが、応答速度は投票の速度によって制限され、投票が速くなればなるほどこのソリューションはスケーラビリティが低くなります。さあ。

もっと良い解決策は、Silverlight、Flash、またはブラウザで動作する他のシッククライアントテクノロジを使用することです。次に、クライアント間のメッセージルーティングを処理するサービスを実装できます。 This article on CodeProjectは良いスタート地点になるかもしれません。

+3

"純粋なウェブ技術を使用してサーバーからブラウザにpingを実行することは不可能です" - それは[もはや真実ではありません](http://en.wikipedia.org/wiki/WebSockets)。 – josh3736

+0

Silverlightはやり方のように聞こえます。 –

関連する問題