我在 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 服务中,这样它就不会超出范围。