개체가없는 AppFabric의 Windows Server 버전에서 모든 캐시 키를 가져 오는 방법이 있습니까?Windows Server AppFabric에서 키 이름 만 가져 오는 방법은 무엇입니까?
는 나는 다음과 같은 코드를 사용할 수 있다는 것을 알고 :
foreach(string regionName in cache.GetSystemRegions())
{
foreach (var cacheItem in cache.GetObjectsInRegion(regionName))
{
Console.WriteLine("Key={0} -- Value ={1}", cacheItem.Key,cacheItem.Value);
}
}
내가 다시 네트워크를 통해 caheItem.Value 부분을 잡아 당겨 피하려고.
Microsoft.ApplicationServer.Caching.DataCache, Microsoft.ApplicationServer.Caching.SimpleClient, Microsoft.ApplicationServer.Caching.RoutingClient 및 Microsoft.ApplicationServer.Caching.DataCacheFactory를 보면 알 수 있습니다. 이것은 가능하지 않습니다.
DataCacheFactory.GetCache (String)는 SimpleClient 또는 RoutingClient를 반환하도록 하드 코딩 된 DataCacheFactory.Create를 호출합니다. 리플렉션을 사용하지 않고 DataCache의 다른 구현을 제공하기 위해 이러한 방식으로 연결할 수 없습니다.
SimpleClient 및 RoutingClient의 SendMsgAndWait 구현은 ResponseBody의 byte [] [] 값 DataMember를 Utility.Deserialize (partialResponse.Value, false)와 같은 호출로 ValueObj 개체로 역 직렬화하도록합니다.
개발자가 ValueObj {get;}가 호출 될 때까지 deserialization을 연기 한 경우 세금에 대해 별다른 문제가되지 않습니다.
이렇게해도 네트워크 트래픽 문제는 해결되지 않습니다. 여전히 AppFabric 메시지와 함께 직렬화 된 개체를 보내야합니다.
사용자 지정 DataCache 구현없이 deserialization 오버 헤드를 피하고 리플렉션을 통해이를 사용하도록 강요하는 또 다른 방법은 없습니다. 직렬화 된 객체를 이동하여 자신의 키를 찾기위한 네트워크 대역폭을 제거하는 방법은 없습니다.