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 インスタンスごとに 1 回だけではなく、繰り返し再作成されているようです。私が物事を正しく理解している場合、これは基本的に次のようになります.wcf Webサービスのどこにグローバル変数を格納して、範囲外にならないようにすることができますか。