2

我正在使用一个IHttpAsyncHandler来服务彗星/长轮询请求。处理程序使连接保持打开状态并将MyAsyncResult对象保存在 staticConcurrentSet<MyAsyncResult>中。

当发出单独的请求(导致彗星响应的请求)时,程序会MyAsyncResult在列表中找到对象并完成请求。

我的问题是,当我将应用程序更改为在 Webgarden 中运行时,这个静态变量不会在所有工作进程之间共享,所以这个实现不会起作用。

现在,我无法将MyAsyncResult对象存储在 SQL 数据库中,或者任何可能有用的对象(如IHttpHandler自身,或指向 EndProcessRequest 方法的委托等)中。我可以将某些 ID 和字符串存储在 SQL 数据库中,并不断检查新值,但这似乎很昂贵,并且首先违背了使用长轮询的目的。

有什么方法可以在网络花园中分享我的静态ConcurrentSet内容吗?或者我可以通过任何其他方式让IHttpAsyncHandler坐在那里等待信号发送它的响应?

编辑:

如果我无法跨进程共享变量,有没有办法可以向所有其他工作进程广播?我在这里只需要一个带有两个整数参数的信号。

4

0 回答 0