2009-06-24 13 views
1

私が最初に達成したいことを正確に説明しようとします。クライアントからクライアントへのメッセージング

ユーザーAが特定のフォームを開くときに2人のユーザーがWindowsフォームアプリケーションを使用しているとします。そのユーザーのみが変更を加えることができるようにフォームの基礎となるデータレコードにロックが適用されます。

ユーザーBは、ユーザーAが既に開いているレコードへの参照を含むすべてのレコード(グリッド内)のリストを持っています。ユーザーAがレコードを開くと、ユーザーBのレコードのリストが表示されます。行の横にロックアイコンが表示され、レコードが使用中であることを示します。

これは私たちがメッセージングで行うことの簡単な例ですが、ユーザーAはユーザーBがそれについて知っておく必要がある何かを行います。

私はC#とOpenFire Jabber Server用にJabber-netを使ってシステムを実装しました。基本的には、メッセージを送信するときに、新しい行がデータベースのメッセージテーブルに挿入されます。メッセージテーブルは、SqlDependancyオブジェクトを使用してサービスクライアントによって監視されるため、新しいメッセージが準備されると、サービスは関連メッセージを作成し、JabberとOpenFireサーバー経由で目的のクライアントに送信します。

これは問題なく動作しますが、OpenFireのすぐれた機能は、私が達成しようとしているものではないインスタントメッセージングをサポートするためです。私が持っている問題は、ユーザーが2つのアプリケーションコンテキスト(つまり、テストとライブ)にログインしている場合、User @ server/resourceのJID構造がリソースの通知を受けないため、OpenFireはメッセージを送信するアプリケーションを特定できないということです。

現在、私が現在OpenFireとJabber-netを使用している方法は正しくありません。

達成したいものを達成するために使用できるパターンがあります。つまり、メッセージを送信するクライアントにメッセージを送信します。クライアントはメッセージを送信するクライアントを指定できます。 XMPPは答えのように思えました。なぜなら、自分のメッセージタイプを解析して解析できるからです。

私のアプリケーションは、Windows Forms、.NET 3.5 C#アプリケーションです。

+0

個人的には、それは良い選択肢と消耗品の選択肢のようです。 – kenny

答えて

0

影響を受けるアプリケーションコンテキストを示すデータを追加し、他のクライアントにメッセージを処理する必要があるかどうかを判断させるだけです。

+0

ええ、私はすでにそれをやっていることを考えました、ちょうどちょっとしたチートのように感じました。私はそれをやり遂げるかもしれません、私はちょうどそこに他のオプションが何かを見て興味があった。 – MrEdmundo

関連する問題