ASP.NET Webgarden共享静态对象

时间:2012-08-28 12:42:53

标签: asp.net singleton xmpp shared web-garden

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

(它用于处理打印:当webservice需要打印的东西时,我将XMPP消息发送到在插入打印机的特定机器上运行的Windows窗体客户端,具有打印作业类型和URL,以及客户端然后下载数据并将其发送到打印机。此通信通道也将用于其他POS功能,如打开抽屉,与芯片和引脚设备通信等,因此打印替代品将没有帮助。)

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

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

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

1 个答案:

答案 0 :(得分:0)

网络花园基本上是微型网络农场,应该这样对待 - 寻找可以在网络农场中使用的解决方案,这些解决方案将适用于您的情况。

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

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