0

XMPP メッセージをクライアントに送信するために jabber-net オブジェクトを使用する必要がある Web サービスがあります。

(これは印刷を処理するためのものです。Web サービスで何かを印刷する必要がある場合、プリンターに接続された特定のマシンで実行されている Windows フォーム クライアントに、印刷ジョブの種類と URL を含む XMPP メッセージを送信すると、クライアントはダウンロードします。データをプリンターに送信します. この通信チャネルは、他の POS 機能 (引き出しを開く、チップやピン デバイスと通信するなど) にも使用されるため、印刷の代替手段は役に立ちません)。

jabber-net オブジェクトのインスタンスを含む静的オブジェクトがあります。これは XMPP サーバーにサインインし、メッセージの送信に使用できます。

これはシングルスレッドでうまく動作します。複数のスレッドで動作できるように Web サービスを Web ガーデンに変換すると、各スレッドが jabber-net オブジェクトの独自のインスタンスを取得するように見えるため、すべてのスレッドが XMPP サーバーにサインインしようとしています。つまり、彼らは継続的に追い出されます。

質問: Web ガーデン内のすべてのスレッド間でライブ オブジェクト (シリアル化されたオブジェクトではなく、データだけでなく、イベントを処理する可能性がある) を共有する方法はありますか? もしそうなら、それを行うための最良の方法は何ですか?

4

1 に答える 1

0

Web ガーデンは基本的にミニチュアの Web ファームであり、そのように扱う必要があります。Web ファームに関連するソリューションを探してください。同じソリューションがあなたのケースに適用されます。

私はセッションと Web ガーデンに気を取られ、最終的にプロセス外のセッション プロバイダーに切り替えました (memcached ベースのプロバイダーを使用しましたが、SQL Server プロバイダーは機能していました)。同様のことを行い、各スレッドがオブジェクトを要求できる共有プロバイダーを持つことができます。

ただし、これはイベントの問題を解決しません。この方法で解決できるとは思えません。すべてのメッセージが単一のプロセスで処理されるメッセージング システム (msmq など) に切り替える必要があるかもしれません。

于 2012-08-28T12:52:46.597 に答える