2011-02-24 4 views
1

저는 여러 파일과 데이터베이스에서 데이터를 읽는 그래픽 도구를 Silverlight에서 만듭니다.모든 사용자가 사용하는 실버 라이트로 데이터를 캐싱 할 수 있습니까?

나는 데이터베이스를 몇 번이고 다시 호출하고 싶지 않다. 필요에 따라 데이터를 검색하고 어딘가에 안전하게 보관하려고하므로 사용자 또는 다른 사용자가 같은 페이지를 방문하면 데이터에 액세스 할 수 있습니다.

Silverlight에서 asp.net 캐시 [ "Object"]의 응용 프로그램 상태를 사용하고 싶습니까? 가장 좋은 방법은 무엇입니까?

답변

4

silverlight는 클라이언트 측에서 실행되므로 서버 측 캐시가 필요합니다. WCF로 데이터를 가져올 수 있습니다. 이 라인을 따라 뭔가 :

public class YourWcfService 
{ 
    ICacheManager _cacheManager = null; 

    public YourWcfService() 
    { 
     _cacheManager = EnterpriseLibraryContainer.Current.GetInstance<ICacheManager>("Cache Manager"); 
    } 

}

웹 방법과 같이 보일 것이다 :

내가 과거에했던 어떤 enterprise library를 사용하여 WCF를 사용하여 쿼리를 캐시하는 것입니다

[OperationContract] 
    public List<Guid> SomeWebMethod() 
    { 
     if (_cacheManager.Contains("rgal")) // data in cache? 
       result = (List<Guid>)_cacheManager.GetData("rgal"); 
      if (result == null) 
      { 

       result = FETCH FROM DATABASE HERE; 
       // cache for 120 minutes 
       _cacheManager.Add("rgal", result, CacheItemPriority.Normal, null, new AbsoluteTime(TimeSpan.FromMinutes(120))); 
      } 
        return result; 
    } 
1

Silverlight 컨트롤은 사용자별로 브라우저/클라이언트 쪽에서 실행되므로 서버의 모든 사용자에 대해 무언가를 캐싱 할 수 없습니다.

주어진 사용자의 세션에 대한 컨트롤이나 지정된 사용자에 대한 격리 된 저장소의 데이터를 캐시 할 수 있습니다. 그러나 해당 서버 측 코드를 작성하지 않으면 서버에서 아무 것도 할 수 없습니다.

0

캐싱이 실제로 필요합니까? 당신은 정말로 당신의 데이터베이스를 그렇게 두드리고 있습니까?

귀하의 DB는 저장 공간입니다. 성능 문제가 없다면 조기 최적화입니다.

0

새 엔터프라이즈 라이브러리 Silverlight Integration Pack은 클라이언트에서 캐싱 기능을 제공합니다. 2 가지 유형의 데이터 캐싱이 지원됩니다 : 메모리 내 저장 및 격리 된 저장. 또한 만료 정책 구성의 유연성 (프로그래밍 방식 또는 외부 구성을 통한)과 구성 도구 지원 기능을 사용할 수 있습니다.

참고 : 지금 코드 미리보기이지만 5 월에 최종본으로 발표되어야합니다.

관련 문제