로컬 캐시
NCache 단일 노드에 상주하는 독립형 비클러스터형 캐시를 지원합니다. 로컬 캐시는 기능 면에서 다른 클러스터 캐시와 유사합니다. 즉, 다른 캐싱 토폴로지에서 제공되는 모든 캐싱 기능을 갖추고 있지만 클러스터 캐시처럼 확장 가능하거나 내결함성이 없습니다. 단일 서버 캐시이므로 여러 서버를 추가해도 트랜잭션 용량을 늘릴 수 없습니다. 또한 단일 캐시 인스턴스(백업이나 복제본 없음)를 생성하므로 다운되면 캐시된 모든 데이터가 손실됩니다. 로컬 캐시는 활동이 적은 소수의 클라이언트가 있는 애플리케이션이나 애플리케이션이 많은 양의 데이터를 캐시할 필요가 없는 애플리케이션에 적합합니다.
로컬 캐시의 격리 수준
로컬 캐시에는 다음과 같은 두 가지 격리 수준이 있습니다.
InProc(진행 중)
이 격리 수준은 캐시가 클라이언트 애플리케이션의 메모리 공간 내부에 있음을 의미합니다. 이러한 유형의 캐시는 응용 프로그램 프로세스 내부에 존재하므로 응답 시간이 더 빠릅니다. 인프로크에서는 NCache 캐시된 데이터를 직렬화된 형식이 아닌 활성 개체로 유지하여 직렬화/역직렬화 비용을 줄입니다. 그러나 이러한 애플리케이션은 애플리케이션과 캐시가 동일한 메모리를 공유하므로 메모리 제한에 직면할 수 있습니다. 또한 이 경우 캐시된 데이터는 이 프로세스 외부에서 실행되는 애플리케이션과 공유될 수 없습니다.
객체는 캐시 클라이언트와 동일한 주소 공간에 저장되므로 캐시 클라이언트는 복사본 대신 캐시된 객체에 대한 참조를 얻습니다. 여러 스레드가 동일한 객체를 수정하는 다중 스레드 애플리케이션의 경우 이러한 변경 사항은 다음에서 사용할 수 있는 다양한 동기화 기술을 사용하여 동기화되어야 합니다. .NET framework.
주의 사항
개체가 InProc 캐시에 직렬화된 형식으로 보관되지는 않지만 여전히 모든 개체를 다음과 같이 표시해야 합니다. Serializable
. NCache 나중에 필요할 때 퇴거하는 데 도움이 되는 객체를 직렬화하여 객체의 크기를 계산합니다.
OutProc(아웃 오브 프로세스)
이 격리 수준은 캐시가 별도의 프로세스( NCache 서비스 프로세스) 클라이언트 애플리케이션에서. 여러 클라이언트(로컬 및 원격)가 동일한 캐시에 연결하여 데이터를 공유할 수 있습니다. 이 경우 대기 시간은 프로세스 외부의 통신 비용으로 인해 InProc 캐시보다 큽니다.
OutProc 로컬 캐시는 애플리케이션의 여러 클라이언트가 동일한 캐시된 데이터에 액세스해야 하는 상황에 적합합니다. 예를 들어 각 ASP.NET 응용 프로그램이 별도의 작업자 프로세스에서 실행되는 웹 가든에서는 OutProc 캐시를 사용해야 합니다. 또한 ASP.NET 애플리케이션에서는 프로세스 메모리 제한으로 인해 InProc 캐시 인스턴스를 사용하는 것이 최선의 옵션으로 간주되지 않습니다. 그러나 애플리케이션 프로세스와 캐시 자체 간에 데이터를 전송하는 오버헤드가 있다는 점에 유의하세요.