我正在使用 ASP.NET(不是 MVC)和 .NET v4(不是 v4.5)编写一个 Web 应用程序。
我从第 3 方 Web 服务中获取了一些我必须显示的数据,其中一种方法需要很长时间(几秒钟)才能完成。要获取/预取的信息取决于用户的初始请求(因为不同的用户要求有关不同对象的详细信息)。
在单用户桌面应用程序中,我可能会:
- 尽快显示我的 UI
- 有非UI后台任务提前获取信息
- 因此希望有一个已经获取/缓存的数据版本,当用户深入到 UI 来请求它时
要使用 ASP.NET 做类似的事情,我想我可以:
- 使用 BackgroundWorker,将 Session 实例作为参数传递给 worker
- 完成工作人员的任务后,将获取的数据写入 Session
- 如果用户的数据请求在任务完成之前到达,则阻塞直到它完成
您预见到问题,您能提出改进建议吗?
[StackOverflow 上还有其他关于 ASP.NET 和后台任务的问题,但这些似乎都是关于获取和更新全局应用程序数据,而不是特定于会话的数据。]