0

我在一个 webrole 上有 15 个网站,它们都使用相同的 azure 缓存。我只需要 128 MB 缓存,所以它只允许我 10 个连接。

基本上,如果我在 App_start 上的每个网站中实例化一个连接并将其存储在应用程序级别,我会得到(如果我理解良好):

  • 15 个连接缓存 x 个 webrole 实例

因此,对于 SLA 的 2 个 webrole 实例,每个有 15 个网站,创建 30 个与 azure 缓存的连接。正确的 ?

在这个线程中:http ://social.msdn.microsoft.com/Forums/en/windowsazuredata/thread/216a5159-0186-403c-89d8-99058d51a542

一个人说:“你的网络角色可能有一个静态的 DataCacheFactory 实例,所有网站都可以使用它

这意味着每个网站我只能有一个缓存连接,而不是每个网站只有一个缓存连接,也就是说只有 2 个连接到 azure 缓存,这意味着 128 MB 计划非常适合。

那么,任何人都知道如何设置一个静态的 DataCacheFactory 实例,它可以被 webrole 中的所有网站使用?

4

1 回答 1

3

最初我认为这里的挑战是每个网站都将在自己的应用程序池(即进程)上运行,并且静态成员不能跨进程共享。如果是这种情况,我想,一个可能的解决方案是配置不同的网站在同一个应用程序池下运行。

这是有代价的,但实际上也无关紧要——即使网站在同一个应用程序池下运行,它们每个都有自己的 AppDomain,因此您仍然无法共享静态成员。

鉴于此 - 我很确定在不同的网站(甚至虚拟目录,本质上 - IIS 上的两个不同应用程序)之间共享一个静态成员 - 是不可能的,因为它会完全破坏拥有单独应用程序的点。

这与 Azure 本身无关,而是与 IIS 行为有关。

于 2011-11-26T13:06:47.747 回答