다음 단계를 따라 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는 캐시된 키와 값을 포함합니다.
}
따라 (작업 실패 예외 특급)
{
// 예외 처리
}
이 시나리오에서는 다음 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 어셈블리를 로드하는 동안 예외가 발생할 경우 응용 프로그램 이벤트 로그에 경고를 기록합니다.
도 참조