0

我有一个需要使用 jabber-net 对象向客户端发送 XMPP 消息的 web 服务。

(它用于处理打印:当 web 服务需要打印某些东西时,我将 XMPP 消息发送到在插入打印机的特定机器上运行的 Windows 窗体客户端,带有打印作业类型和 URL,然后客户端下载数据并将其发送到打印机。此通信通道还将用于其他 POS 功能,例如打开抽屉、与芯片和引脚设备通信等,因此打印替代方案将无济于事)。

我有一个包含 jabber-net 对象实例的静态对象,它登录到 XMPP 服务器,然后可用于发送消息。

这工作正常单线程。当我将 web 服务转换为 web 园以便它可以在多个线程上工作时,似乎每个线程都有自己的 jabber-net 对象实例,所以他们都试图登录到 XMPP 服务器一次作为同一用户,这意味着他们不断被踢出。

问题:有没有办法在网络花园中的所有线程之间共享一个活动对象(可能处理事件,而不是序列化对象,而不仅仅是数据),如果是这样,最好的方法是什么?

4

1 回答 1

0

网络花园基本上是微型网络农场,应该这样对待 - 寻找网络农场涉及的解决方案,这些相同的解决方案将适用于您的案例。

我被会话和网络花园所吸引,最终切换到进程外会话提供程序(我使用了基于 memcached 的提供程序,但 SQL Server 提供程序可以工作)。您可以做类似的事情,并拥有一个共享提供者,每个线程都可以从中请求对象。

不过,这不会解决您的事件问题 - 我怀疑这是否可以通过这种方式解决,并且您可能必须切换到消息传递系统(例如 msmq),所有消息都由单个进程处理。

于 2012-08-28T12:52:46.597 回答