如何在整个Web角色中共享DataCacheFactory的静态实例,以便在多个网站中使用,从而只创建一个缓存连接?

时间:2011-11-25 15:36:00

标签: caching azure appfabric azure-caching

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

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

  • 15个用于缓存x个webrole实例的连接

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

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

一个人说: “您的网络角色可以拥有一个可供所有网站使用的DataCacheFactory静态实例

这意味着不是每个网站都有一个缓存连接,而是每个webrole只有一个缓存连接,只有2个与azure缓存的连接,这意味着128 MB计划将完全适合。

那么,有谁知道如何设置DataCacheFactory的静态实例,可以被webrole中的所有网站使用?

1 个答案:

答案 0 :(得分:3)

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

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

考虑到这一点 - 我很确定在不同的网站(甚至虚拟目录,实质上是IIS上的两个不同的应用程序)之间共享一个静态成员是不可能的,因为它可能会在单独的应用程序中失败。

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