2014-06-13 1 views
1

개체가없는 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 오버 헤드를 피하고 리플렉션을 통해이를 사용하도록 강요하는 또 다른 방법은 없습니다. 직렬화 된 객체를 이동하여 자신의 키를 찾기위한 네트워크 대역폭을 제거하는 방법은 없습니다.

답변

0

대답은 Jeremy입니다. 현재 구현에서는 "모든 키를 가져 오는 중"기능을 지원하지 않습니다. 서버 쪽에서 서버 측에서 지원하지 않기 때문에 클라이언트 측의 모든 문제 해결 방법은 도움이되지 않습니다. 미안하지만 아마도 당신이 원한 대답이 아닐 것입니다. 말의 입에서. :) // J