【发布时间】:2016-01-22 10:57:33
【问题描述】:
Azure 具有此设置,您可以根据当前负载的大小自动缩放正在运行的 Web 应用程序实例。
我的问题是如果你有一个单例类并运行多个实例会发生什么,这个类每个实例是否存在一次? 根据我的理解,每个实例都会初始化单例类,这是正确的吗?
【问题讨论】:
标签: c# azure web-applications singleton
Azure 具有此设置,您可以根据当前负载的大小自动缩放正在运行的 Web 应用程序实例。
我的问题是如果你有一个单例类并运行多个实例会发生什么,这个类每个实例是否存在一次? 根据我的理解,每个实例都会初始化单例类,这是正确的吗?
【问题讨论】:
标签: c# azure web-applications singleton
每个 web/worker 实例都有一个 Singleton 实例。
【讨论】:
每个“实例”实际上只是另一个运行您的网络应用程序的虚拟机。因此,每个都有自己的应用程序池、内存空间和 IIS 工作进程来处理您的 Web 应用程序的流量。
由于单例在每个实例 (VM) 上的自己的应用程序空间中运行,您将为每个“实例”获得一个单例。
如果您有兴趣创建超越其内存位置的对象实例,请查看 Actor 模式、Orleans 项目和新的 Azure Service Fabric。这些技术是 Actor 模式的实现,允许您创建一个与其运行的物理基础设施无关的对象。
如果您只是对在 Web 应用的多个实例之间共享状态感兴趣,请查看 Redis 缓存,它是一种在 Web 应用之间创建共享数据池的高性能方式。
【讨论】: