2011-06-07 81 views
1

我遇到了與Azure雲應用程序中的緩存處理有關的問題。 我正在使用MVC3結構,使用2個實例。從Azure應用程序的多個Web角色實例中分配緩存

正如我們所知,Microsoft Azure會根據負載平衡自動分配Web角色以提供Web請求。

但問題是,當我處置一個緩存「HttpRuntime.Cache.Remove(」CacheName「)」,它是從當前的網絡角色,我目前由微軟分配處置。 並且不會從另一個實例中釋放緩存。

請幫我,我可以同時處理兩個實例的緩存嗎? 使用任何C#尖銳代碼。

回答

2

這是使用分佈式緩存的一個很好的理由。同步緩存在許多實例和緩存中單獨添加和刪除操作很難做到。試圖解決這個問題的任何代碼或解決方案都會非常黑客。將緩存移出到分佈式緩存將正確解決您的問題。

你看過Windows Azure AppFabric緩存解決方案嗎?

+0

另外,我有一個使用服務合同的工作。在Web角色中使用TCP端點。森達代碼,你只需要ADDA端點(TCP),然後創建 – 2011-06-09 04:17:26

+0

[ServiceContractAttribute的] 公共接口ICDMMessage { [OperationContract的] 無效CacheCDM(字符串主機,串ACCID,列DB,字符串[ServiceContractAttribute的]類接口類語言標識號); } 和 公共類CDMMessage:ICDMMessage { 公共無效CacheCDM(字符串主機,串ACCID,列DB,串語言標識) { CDM CDM = CDM.GetInstance(); cdm.CacheCDMOnALL(host,AccId,Db,LangID); } } – 2011-06-09 04:21:16

+0

並在您的正常公共課程中調用類似 var current = RoleEnvironment.CurrentRoleInstance; var instances = current.Role.Instances; 的foreach(在實例RoleInstance實例) { 如果(instance.Id = current.Id!) { client.CacheCDM(主機,ACCID,DB,語言標識號); flag =「True」; } – 2011-06-09 04:22:09