Azure 中水平缩放的术语有点不清楚。
当它创建应用程序的多个实例时,我知道它们在单独的 VM 中运行,因此当发生这种水平扩展时,这应该会导致创建具有自己的一组静态变量的全新 AppDomain。
如果是这种情况,那么是否会为每个实例调用 Application_Start 事件?
我们有一个“缓存刷新”功能,它涉及设置一个侦听器来订阅消息队列中的“主题”,以便在收到消息时刷新静态缓存。我们曾经认为我们必须在 HttpApplication.Init 事件中设置侦听器,该事件将为每个实例调用,但在意识到 AppDomain 中的所有 HttpApplication 实例共享同一组静态变量之后,这不再有意义。
我的新理解是,即使没有水平缩放,Web 应用程序中也会发生多个 HttpApplication 实例(因此多次调用 HttpApplication.Init)。换句话说,即使在单个 AppDomain 中,它也是 asp.net Web 应用程序如何处理请求的正常功能。Azure 的水平缩放是完全不同的,涉及实例化完全独立的 AppDomain。听起来对吗?