NCache 4.4 - 온라인 문서

Read-Through 공급자 구성

 
다음 단계를 따라 Read-Through 공급자를 구성하고 구현해야 합니다. NCache.
 
IReadThruProvider 인터페이스 구현
 
구현 IReadThruProvider, 제공자 어셈블리에 다음 참조를 추가하십시오.
 
Alachisoft.NCache.런타임.dll
 
구현하는 클래스 만들기 Alachisoft.NCache.Runtime.DatasourceProviders.IReadThruProvider 인터페이스를 사용하여 배포 NCache 여물통. NCache 프레임워크는 내부적으로 이 클래스를 사용하여 캐시에서 사용할 수 없는 경우 구성된 데이터 소스에서 데이터를 로드합니다.
 
IReadThru 인터페이스
 
공공 무효 초기화(System.Collections.사전 매개 변수, 캐시아이디);
공공 무효 처분();
공공 무효 소스에서 로드( 키, 아웃 ProviderCache 항목캐시항목);
공공 영역 사전<, ProviderCache 항목> 소스에서 로드([] 키);
 
회원
상품 설명
초기화
이 메서드는 다음에 의해 호출됩니다. NCache 캐시 시작 시 프레임워크. 사용자는 이 메서드를 사용하여 리소스 할당, 데이터 소스 연결 획득 등과 같은 작업을 수행할 수 있습니다. 이 메서드는 다음을 통해 공급자에게 전달된 인수의 IDictionay 인스턴스를 입력으로 사용합니다. NCache 관리자(구성 설정). 공급자에게 매개변수 목록을 전달할 수 있습니다. 이러한 매개변수는 다양한 방식으로 활용될 수 있습니다. 예를 들어 데이터 원본의 연결 문자열을 매개 변수로 지정할 수 있습니다. 따라서 코드 변경 없이 구성하면서 데이터 소스 설정을 변경할 수 있는 유연한 방법을 제공합니다.
다른 argumentCacheId는 읽기가 구성된 캐시 이름을 지정합니다.
소스에서 로드
이 메서드는 다음에 의해 호출됩니다. NCache 필요한 항목이 캐시 저장소에 없는 경우 프레임워크 및 NCache 구성된 데이터 소스를 통해 로드해야 합니다. 이 메서드는 구성된 데이터 소스에서 개체를 로드하는 논리를 포함해야 합니다. 첫 번째 인수 "key"는 필수 항목의 키를 나타냅니다. 두 번째 인수는 필수 속성과 함께 인스턴스화해야 하는 Provider CacheItem 유형의 매개변수입니다. 여기에서 로드된 항목을 다시 반환하기 전에 다양한 속성을 로드된 항목에 연결할 수 있습니다. NCache 뼈대. 이 메서드에 할당된 Provider CacheItem.Value가 "Serializable"인지 확인하십시오. NCache 나중에 요청을 이행하기 위해 해당 항목을 캐시 저장소에 저장합니다.
이 메서드를 구현하는 동안 여러 Get 요청이 읽기를 위해 이 메서드에 액세스할 수 있으므로 코드 스레드 안전에 주의해야 합니다. 또한 재귀적 무한 루프를 유발하는 시나리오를 피하도록 주의하십시오.
참고 : 의 경우 돈을 받아가세요, LoadFromSource(문자열 키, ProviderCacheItemcacheItem 출력) 동안 공급자로부터 호출됩니다. 대량 가져오기, LoadFromSource(문자열[] 키)
데이터 소스에서 항목을 로드하기 위해 호출됩니다.
이 메서드는 다음에 의해 호출됩니다. NCache 캐시가 중지될 때 프레임워크. 이 방법을 사용하여 리소스 해제, 연결 해제 등과 같은 작업을 수행할 수 있습니다. 여기에서 효과적인 리소스 활용을 위해 데이터 소스와 관련된 리소스를 해제할 수 있습니다.
 
 
In NCache, Read-Through 공급자는 캐시 수준에서 구성됩니다. 즉, 클러스터 캐시의 경우 모든 노드에 공급자 구성과 배포된 어셈블리가 포함됩니다.
 
 
IReadThruProvider의 샘플 코드
 
// 마스터 데이터 소스에서 키로 개체를 읽는 데 사용되는 메서드를 포함합니다.
// 마스터 데이터 소스에서 키로 개체를 읽는 데 사용되는 메서드를 포함합니다.
공개 수업 SampleReadThruProvider : IReadThruProvider
{
사설 Sql연결 _연결;
//자원 할당 또는 연결 획득과 같은 작업 수행
 
공공 무효 초기화(사전 매개 변수, 캐시 ID)
{
대상 connStringObject = 매개변수["연결 문자열"];
connString = connStringObject == null로 ? "" : connStringObject.ToString();
if (연결 문자열!= "")
            _연결 = Sql연결(콘스트링);
시도
{
  _connection.Open();
}
따라 (예외 전의)
{
// 예외 처리
}
}
 
//외부 데이터 소스에서 항목을 로드하는 역할을 합니다.
공공 무효 소스에서 로드( 키, 아웃 ProviderCache 항목 캐시 항목)
{
//여기서 LoadFromDataSource는 데이터 원본에서 데이터를 로드하는 더미 메서드입니다.
대상 값 = LoadFromDataSource(key);
        캐시항목 = ProviderCache 항목(값);
        캐시아이템.ResyncItemOnExpiration = 참된;
}
 
//리소스 해제, 해제 또는 재설정과 관련된 작업을 수행합니다.
공공 무효 폐기 ()
{
if (_연결!= null로)
            _connection.Close();
}
 
//외부 데이터 소스에서 대량의 항목을 로드하는 역할을 합니다.
공개 사전<, ProviderCache 항목>소스에서 로드([] 키)
{
  시도
  {
사전<, ProviderCache 항목> 사전 = 사전<, ProviderCache 항목>();
키 = null로;
for (INT 인덱스 = 0; 색인
      {
          키 = 키[인덱스];
//여기서 LoadFromDataSource는 데이터 원본에서 데이터를 로드하는 더미 메서드입니다.
          사전.추가(키, ProviderCache 항목(LoadFromDataSource(키)));
      }
return 사전;
  }
        따라 (예외 특급)
  {
던지다;
  }
}
개인 객체 로드FromDataSource( 키)
{
대상 검색된 개체 = null로;
// 데이터 소스에서 항목을 로드하고 검색된 개체를 채웁니다.
return 검색된객체;
}
}
 
이 공급자를 구현 및 배포한 후 다음을 직접 호출할 수 있습니다. NCache 필요한 아이템을 얻기 위해 캐시 저장소에서 항목을 로컬로 사용할 수 없는 경우 NCache 지정된 데이터 액세스 클래스에서 "LoadFromSource" 메서드를 사용하여 데이터 소스에서 항목을 로드합니다..
 
기본 작업으로 Read-Through 사용
 
이 섹션에서는 read-through 공급자를 구성하고 배포한 후 사용하는 방법을 설명합니다. NCache 응용 프로그램과 함께 여러 읽기 제공자를 지원합니다.
 
애플리케이션에 다음 네임스페이스를 추가합니다.
 
사용 Alachisoft.NCache.웹.캐싱;
사용 Alachisoft.NCache.Runtime.DatasourceProviders;
사용 Alachisoft.NCache.실행 시간;
 
NCache 제공 Alachisoft.NCache.Web.Caching.DSReadOption 열거형은 API에서 옵션을 통해 읽기를 지정합니다.
다음을 통해 다중 읽기 제공자를 구성할 수 있습니다. NCache. API를 통해 특정 제공자 이름이 언급되지 않으면 기본 읽기 제공자가 호출됩니다. 공급자별 API 오버로드를 사용하여 기본 이외의 공급자를 사용할 수도 있습니다.
 
  • 메서드 가져오기
 
회원
상품 설명
얻다( 키, DSRead 옵션 dsRead옵션)
캐시에서 항목 가져오기 및 기본 공급자 사용
얻다(현  키, 현 공급자 이름, DSRead 옵션 dsRead옵션)
캐시에서 항목 가져오기 및 지정된 공급자 사용
 
프로덕트 제품=null로;
시도
{
키 = "제품:1001";
대상 데이터 = 캐시.겟(키, DSRead 옵션.ReadThru);
if (데이터!= null로)
    {
        제품 = (프로덕트)데이터;
    }
}
따라 (작업 실패 예외 특급)
{
// 예외 처리 }
 
  • 대량 방법
 
이러한 작업을 더 잘 이해하려면 다음을 검토하세요.  대량 작업. 이 시나리오에서는 다음 API를 사용합니다.
회원
상품 설명
사전 GetBulk([] 키, DSRead 옵션 dsRead옵션)
캐시에서 대량 항목 가져오기 및 기본 공급자 사용
사전 GetBulk([] 키, 공급자 이름, DSRead 옵션 dsRead옵션)
캐시에서 대량 항목 가져오기 및 지정된 공급자 사용
 
시도
{
[] 키 = { "제품:1001", "제품:1002", "제품:1003", "제품:1004" };
사전 resultSet = cache.GetBulk(키, DSRead 옵션.ReadThru);
//IDictionary는 캐시된 키와 값을 포함합니다.
}
따라 (작업 실패 예외 특급)
{
// 예외 처리
}
 
  • CacheItem과 함께 Read-Through 공급자 사용
 
이 시나리오에서는 다음 API를 사용합니다.
회원
상품 설명
캐시 아이템 GetCache항목( 키 DSRead 옵션 dsRead옵션)
캐시에서 CacheItem 가져오기 및 기본 공급자 사용
GetCache항목( 키, 공급자 이름, DSRead 옵션 dsRead옵션)
캐시에서 CacheItem 가져오기 및 지정된 공급자 사용
 
키 = "제품:1001";
프로덕트 제품=널;
 
시도
{
캐시 아이템 데이터 = 캐시.GetCacheItem(키, DSRead 옵션.ReadThru);
if (데이터!= null로)
    {
        제품 = (프로덕트)데이터.값;
    }
}
따라 (예외 특급)
{
// 예외 처리
}
 
NCManager 또는 config 폴더에 있는 client.ncconf를 통해 기본 공급자를 지정할 수 있습니다. NCache 설치 디렉토리. API와 client.ncconf 모두에 공급자 이름이 제공되지 않으면 기본 공급자가 자동으로 사용됩니다.
 
<캐시 id="마이캐시" 기본 readthru 공급자="기본공급자 이름" 클라이언트 캐시 ID="" 클라이언트 캐시 동기화 모드="낙관적인" 기본 쓰기 공급자="" 부하 균형="참된" 서버 런타임 컨텍스트="NCACHE">
  ...
</캐시>
 
CacheInitParam을 사용하여 공급자를 지정할 수도 있습니다.
NCache 어셈블리를 로드하는 동안 예외가 발생할 경우 응용 프로그램 이벤트 로그에 경고를 기록합니다.
 
 
 
도 참조