質問

最初に達成したいことを正確に説明します。

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

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

これは私たちがメッセージングで行うことの些細な例ですが、ユーザーAはユーザーBがそれについて知る必要のあることをするという考えを得ることができます。

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

これは問題なく機能しますが、OpenFireの標準機能はインスタントメッセージングをサポートするためのものであり、明らかに私が達成しようとしているものではありません。私が抱えている問題は、ユーザーが2つのアプリケーションコンテキスト(つまり、テストとライブ)にログインしている場合、OpenFireはuser @ server / resourceのJID構造がリソースを通知しないため、どちらにメッセージを送信するかを知らないことです。

基本的に、私が現在OpenFireとJabber-netを使用している方法は適切ではありません。

私が達成したいことを達成するために使用できるパターンはありますか?つまり、メッセージを送信しているクライアントを指定できる一方で、何かをすることを伝えるメッセージをクライアントに送信します。解析する独自のメッセージタイプを作成できるため、XMPPが答えのように思えました。

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

役に立ちましたか?

解決

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top