我的问题有两个 -
我们有一个 asp .net Webforms 网站,允许用户通过 Facebook、Google 等网站进行身份验证,一旦通过身份验证,用户就会被重定向回我们的网站,并对一些可能需要几分钟才能完成的数据进行一些处理。长时间运行的任务在单独的线程上启动,并且通过 Ajax 调用向用户显示进度。
到目前为止,它在单个服务器上使用 InProc 会话,一切正常。现在我们正在移动到一个网络农场,并且必须将会话移动到一个进程外模型,这是我的第一个问题。从 proc 中存储会话的推荐方法是什么?或者我应该根本不使用会话并使用 memcached 之类的东西来存储仅对该用户会话有效的用户生成数据?什么提供了更多的可扩展性和性能?
在网络农场环境中,由于后续请求可以由任何一台服务器提供服务,您如何处理长时间运行的任务?例如,该任务可以由一台服务器启动,来自同一客户端/会话的下一个请求可能会到达场中的另一台服务器。在单服务器 + InProc 模型中,我们使用 ManualResetEvent 等待(或超时),并在进程完成时响应客户端。我们是否应该在缓存/会话中寻找一些共享对象?
感谢您提供任何提示/帮助。