【发布时间】:2011-09-27 14:49:39
【问题描述】:
我在 Windows Azure 中托管了一系列 WCF Web 服务,我正在尝试实现 appfabric 缓存。
我正在为 Web 服务的无状态特性以及避免昂贵的 datacachefactory 和 datacache 对象初始化的需要而苦苦挣扎。
我已经将我的 datacachefactory 包装在一个单例中,因为这似乎是一个很好的起点.....
Imports Microsoft.ApplicationServer.Caching
Public Class Cache
Private Shared _DataCacheFactory As DataCacheFactory
Private Shared _DataCache As Microsoft.ApplicationServer.Caching.DataCache
Private Sub New()
End Sub
Shared ReadOnly Property DataCacheFactory As DataCacheFactory
Get
If IsNothing(_DataCacheFactory) Then
Dim localTimeout As New TimeSpan(0, 10, 0)
Dim localCacheConfig As New DataCacheLocalCacheProperties(10000, localTimeout, DataCacheLocalCacheInvalidationPolicy.TimeoutBased)
Dim factoryConfig As New DataCacheFactoryConfiguration()
factoryConfig.LocalCacheProperties = localCacheConfig
_DataCacheFactory = New DataCacheFactory(factoryConfig)
End If
Return _DataCacheFactory
End Get
End Property
Shared ReadOnly Property DataCache As Microsoft.ApplicationServer.Caching.DataCache
Get
If IsNothing(_DataCache) Then
_DataCache = DataCacheFactory.GetDefaultCache
End If
Return _DataCache
End Get
End Property
End Class
但是当我尝试使用它时,它似乎超出了范围,并且正在重复重新创建,而不是每个 azure 实例只创建一次。如果我理解正确,那么这基本上归结为.....我在哪里可以将全局变量存储在 wcf Web 服务中,这样它就不会超出范围。
【问题讨论】:
-
为什么投反对票?这似乎是一个合理的问题。
-
您的 WCF 实例是如何托管的?具有 Web 角色或以辅助角色自托管的 IIS?
-
它托管在 IIS Web 角色中。
标签: wcf web-services azure appfabric azure-caching