2013-05-01 44 views
1

我有一个静态存储库,它在内存中存储一​​个大的XML文件结构,并且在MVC应用程序中只加载一次。该应用程序托管在具有2个实例的Azure(Paas)上。 我们有一个设计工具,用于添加更多的东西或从这个存储库中删除的东西。我们发现的挑战是,一旦有东西被添加,我们需要通过拆除存储库并重新创建它来重新加载存储库。这可以工作,但会留下一个问题,即静态存储库仅在服务器A上而不在服务器B上刷新。 如果请求发送到服务器B,则用户不会看到该更改,因为它尚未更新。 On; y两个实例上的IIS重置都会修复此问题。我曾尝试使用会话状态来存储存储库,但是因为我们将其用作存储数据库表中值的自定义会话提供程序,所以会在每个导致性能问题的页面请求上调用session_start事件。 有没有人有更好的解决方案来更新这两个服务器上的存储库,并使用任何现代技术。Azure静态存储库需要重新加载

回答

1

您是否考虑过使用角色内缓存来存储存储库(当然,坚持它以及您已经在做)?

您既可以使用现有Web角色中的内存,也可以创建专用的缓存角色。缓存将覆盖您的所有实例,因此您将访问每个实例的相同数据。

更进一步:如果您担心在角色实例重新启动期间数据丢失(这意味着当实例关闭时,您的某些数据将不再位于缓存中),则可以启用高可用性在缓存命名空间。此时,数据将在实例之间复制,这样您可以在实例重新启动后继续工作。

你会发现在角色属性共处一地(或专用)缓存设置:

enter image description here

+0

有多容易把这个代码(任何代码样本链接)更新?并且这将是MVC中第一次创建它的最佳“事件”? – chugh97 2013-05-01 23:22:16