확장 ASP.NET Core 앱 NCache

녹화된 웨비나
론 후세인(Ron Hussain)과 잭 칸(Zack Khan)

ASP.NET은 웹 응용 프로그램 개발에 매우 ​​널리 사용되는 기술입니다. 이제 최신 버전의 ASP.NET Core 웹 앱을 ASP로 이동하려는 조직에서 빠르게 인기를 얻고 있습니다..NET Core. 그러나 ASP.NET Core 사용자 로드가 많을 때 확장성 및 성능 문제가 발생합니다. 이는 데이터 저장소가 병목 현상이 되기 때문에 발생합니다. 그러나 분산 캐싱을 사용하는 경우 이러한 성능 및 확장성 병목 현상을 해결할 수 있는 방법이 있습니다. ASP 최적화 방법 알아보기.NET Core 극한의 트랜잭션 부하에서 수행할 수 있는 성능 및 확장성.

이 웨비나에서 다루는 내용은 다음과 같습니다.

  • ASP 개요.NET Core 확장성 및 성능 병목 현상
  • 분산 캐싱이 이러한 문제를 해결하는 방법
  • ASP를 통한 앱 데이터 캐싱.NET Core IDistributedCache 인터페이스 및 Direct NCache API
  • ASP.NET Core 세션 스토리지 NCache
  • ASP.NET Core 응답 캐싱 NCache
  • 몇 가지 중요한 NCache 분산 캐시 기능

오늘 웹 세미나에서는 ASP에 대한 개요를 살펴보겠습니다..NET Core 확장성 및 성능 병목 현상과 분산 캐싱이 이러한 병목 현상 및 기타 문제를 해결하는 방법. 우리는 ASP에 대해 이야기 할 것입니다.NET Core 응용 프로그램의 성능 및 확장성 병목 현상은 무엇이며 다음을 통해 이러한 성능 및 확장성 병목 현상을 해결하는 방법에 대해 설명합니다. NCache 분산 캐싱 시스템.

NCache .NET용 메모리 내 분산 캐싱 시스템이며 .NET Core 응용 프로그램. .NET으로 작성되었으며 주로 .NET 및 .NET Core 응용 프로그램이지만 주로 오늘날의 초점은 ASP에 관한 것입니다..NET Core 웹 앱과 몇 가지 샘플 기능을 사용할 수 있습니다. 나는 또한 몇 가지 샘플 응용 프로그램을 정렬했습니다. 따라서 캡처할 수 있는 다양한 사용 사례의 기능 수준 세부 정보와 이러한 사용 사례를 해결하는 데 도움이 되는 기능을 공유하고 해당 샘플도 시연하는 실습 웹 세미나가 될 것입니다. 시작하자.

따라서 처음 몇 개의 슬라이드는 ASP에 대한 소개 슬라이드입니다..NET Core 일반적으로 플랫폼. 나는 모두가 ASP가 무엇인지 알고 있다고 확신합니다..NET Core 이다. 새로운 ASP 웹 애플리케이션 플랫폼입니다. 깨끗하고 가벼우며 모듈식입니다. 웹 애플리케이션 접근 방식에 관한 한 주로 MVC 아키텍처입니다. 유명한 프론트 엔드 Angular, React는 대부분 JavaScript 기반 프론트 엔드이며 백업하는 MVC 아키텍처입니다. 크로스 플랫폼입니다. Windows, Linux 및 macOS와 같은 기타 운영 체제에서 실행할 수 있습니다. 그리고 일반적으로 레거시 4.0 ASP.NET 응용 프로그램과도 매우 호환됩니다.

ASP.NET Core (교통량이 많은 앱에서 인기 있음)

ASP.NET MVC 응용 프로그램이 있는 경우 이제 해당 응용 프로그램에서 마이그레이션한 다음 ASP 사용을 시작할 수 있습니다..NET Core 일반적으로 매우 빠르고 매우 강력하며 매우 가볍고 깨끗한 아키텍처입니다.

확장성이란 무엇입니까?

ASP에 대해 가장 먼저 이야기할 것은.NET Core 플랫폼은 확장성이 필요합니다. 그렇다면 확장성이 무엇인지 정의해 볼까요? 정상적인 사용자 부하에서 실행되는 모든 응용 프로그램은 정규화되어 일부 사용자가 있음을 의미합니다. 5-10명의 사용자가 로그인하고 특정 트랜잭션, 특정 작업, 읽기 및 쓰기 요청을 수행하고 있다고 가정해 보겠습니다. 일반적으로 여기서 아이디어는 애플리케이션이 낮은 사용자 로드에서 초고속이라는 것입니다. 그러나 애플리케이션 로드가 증가하자 마자 점점 더 많은 사용자가 애플리케이션에 로그온해야 하는 비즈니스 요구 사항이 됩니다. 그 때 애플리케이션이 느려지는 경향이 있습니다. 최대 부하에서 성능이 저하될 수 있습니다.

응용 프로그램이 적은 수의 사용자로 동일한 성능을 유지할 수 없는 경우 동일한 성능을 유지할 수 있다면 많은 사용자가 있을 때 해당 응용 프로그램은 확장성이 뛰어난 응용 프로그램으로 분류됩니다. 아키텍처에는 확장 기능이 있으며 최종 사용자의 증가된 로드를 처리할 수 있습니다. 따라서 최대 부하에서 고성능이 실제로 확장성 요소를 정의합니다.

여기 그래프가 있습니다. 일반적으로 확장성은 ASP.NET 및 ASP 내에서 달성됩니다..NET Core 여러 웹 또는 앱 서버를 통해 플랫폼.

선형 확장 성

애플리케이션 로드를 분산할 수 있습니다. 여러 웹 또는 앱 서버에 애플리케이션을 배포하고 이를 기반으로 애플리케이션 사용자 로드를 해당 서버에 분산하기만 하면 됩니다. 서버를 추가하면 요청 처리 용량이 선형적으로 향상됩니다. 더 많은 서버는 애플리케이션에서 더 많은 요청 처리 용량을 의미합니다.

다음은 서버를 더 추가한 후에도 아키텍처가 설계되지 않은 방식으로 웹 서버 또는 앱 서버를 많이 추가하지만 애플리케이션이 확장되지 않는 비선형 확장성입니다. 성장.

비선형 확장성

따라서 트랜잭션 요구 사항이 증가하고 서버를 추가하고 있으며 모든 올바른 단계를 수행하고 있지만 증가된 요청 로드를 수용하는 데 필요한 용량을 여전히 확보할 수 없습니다. 따라서 해당 문제는 일반적으로 백엔드 데이터 소스와 관련되며 이에 대해 이야기하겠습니다.

따라서 먼저 확장성이 필요한 응용 프로그램을 살펴보겠습니다. 다른 종류의 응용 프로그램은 무엇입니까? ASP.NET 내에서 & .NET Core 웹 애플리케이션과 MVC 웹 애플리케이션이 있으며, 주요 비즈니스, 일부 웹 서비스, 일부 서비스 호출, 일부 마이크로서비스를 실행합니다. 이것이 새로운 아키텍처이며 다른 일반 .NET 또는 .NET Core 신청.

이러한 모든 것은 확장성을 요구합니다. 왜냐하면 많은 내부 또는 외부 사용자가 있거나 애플리케이션 아키텍처에서 충족해야 하는 로드가 발생할 수 있기 때문입니다.

확장성 문제

웹 팜을 만들 수 있다고 언급했습니다. 여러 서버에 애플리케이션 로드를 분산할 수 있습니다. 그렇다면 확장성 문제는 정확히 어디에 있습니까? 보시다시피 서버를 추가하면 앱 팜 또는 웹 팜에 관한 한 선형 확장성을 제공하므로 점점 더 많은 요청 로드를 처리할 수 있어야 합니다.

그러나 정확히 언제 비선형 확장성을 보기 시작하거나 전혀 확장성이 없는 것으로 나타났습니까? 그것은 일반적으로 관계형 데이터베이스와 관련이 있습니다. 애플리케이션 계층이 멋지게 확장됩니다. 더 많은 서버를 추가할 수 있습니다. 동일한 상자에 동일한 애플리케이션의 여러 인스턴스를 생성하거나 애플리케이션을 호스팅하는 별도의 상자를 가질 수 있습니다. 그러나 이러한 모든 응용 프로그램은 일반적으로 백엔드 관계형 데이터베이스와 통신하며 관계형 데이터베이스는 저장에 매우 적합하지만 예를 들어 응용 프로그램에서 많은 트랜잭션 로드가 발생하는 극단적인 양의 요청 로드를 처리하는 경우 해당 데이터베이스는 병목 현상. 우선 속도가 느려지므로 성능 병목 현상이 발생하고 확장성을 높일 수 있는 용량이 없습니다. 용량을 늘릴 수 있는 기능이 없습니다. 데이터베이스가 호스팅되는 지정된 서버의 용량만 제공합니다.

또한 일부 메인프레임 데이터베이스일 수도 있습니다. 일부 파일 시스템일 수 있습니다. 이러한 모든 소스는 응용 프로그램의 확장성 병목 현상이며 이것이 응용 프로그램의 속도를 저하시키는 원인입니다. 귀하의 요청이 대기하기 시작하고 전반적인 최종 사용자 경험이 이에 영향을 받습니다. NoSQL 답이 아닙니다. 알다시피, 나는 많은 것을 이해합니다. NoSQL 제품이 있습니다. 라는 제품도 있습니다 NosDB, 어느입니다 NoSQL database. 그러나 주요 문제는 NoSQL databases는 관계형 데이터베이스 사용을 중지하고 NoSQL 비정형 데이터 소스 비교.

따라서 애플리케이션의 아키텍처를 재설계하는 것도 쉽지 않습니다. 그래서, 그것은 당신이 취해야 할 또 다른 문제입니다. 따라서 주로 백엔드 데이터 소스로 인해 전반적으로 애플리케이션을 확장할 수 없습니다.

해결 방법 : NCache 분산 캐시

해결책은 무엇인가? 다음과 같은 분산 캐싱 시스템을 사용하기 시작하는 것은 매우 간단합니다. NCache. 메모리 내이므로 데이터베이스에 비해 매우 빠릅니다. 그래서, 그것이 당신이 그것에서 얻는 첫 번째 이점입니다. 따라서 디스크 기반 액세스와 비교하여 메모리 내 액세스 NCache 에 비해 엄청나게 빠릅니다. 따라서 첫 번째 이점은 일반 지원 요청이 NCache 데이터베이스와 비교할 때 초고속이 될 것이며 백엔드 데이터 소스에 대한 여행을 저장함으로써 데이터베이스의 부하도 덜어줄 것입니다. 따라서 데이터베이스는 다른 작업도 자유롭게 수행할 수 있습니다. 두 번째 이점은 확장성이 매우 높다는 것입니다. 모델에서 선형으로 확장 가능합니다. 단일 서버가 아닙니다. 캐시 클러스터를 호스팅하는 데 사용할 수 있는 여러 서버가 있습니다. 캐시 클러스터입니다. 따라서 서버 팀은 서로 결합하여 작업하고 클라이언트 요청을 처리하는 데 도움이 됩니다. 더 많은 서버는 더 많은 요청 처리 용량을 의미합니다. NCache 거기에서 엄청난 이점을 얻을 수 있을 뿐만 아니라 NCache, 초고속, 짧은 대기 시간 및 높은 처리량, 매우 높은 확장성을 제공합니다. 계속해서 더 많은 서버를 추가할 수 있으며 애플리케이션 아키텍처 내에서 아무 것도 변경하지 않고 사용자 로드가 증가할 때마다 해당 용량을 선형으로 늘릴 수 있습니다.

그리고, 좋은 점은 NCache 백엔드 데이터베이스와 함께 사용한다는 것입니다. 기존의 관계형 데이터 소스를 대체하지 않습니다. 사용을 시작하기 위해 애플리케이션을 다시 아키텍처화할 필요가 없습니다. NCache. 당신은 항상 사용할 수 있습니다 NCache 데이터의 일부 또는 대부분이 내부에 있는 백엔드 데이터 소스와 결합 NCache 데이터베이스에는 마스터 복사본이 있습니다. 그러나 일부 사용 사례의 경우 캐시에 모든 데이터가 있습니다. 예를 들어 세션 및 기타 사용 사례의 경우입니다.

NCache 확장성 수치

다음은 처리량 수치입니다. AWS 랩에서 이러한 테스트를 수행했습니다. 이것은 AWS 랩에서 시뮬레이션한 실제 애플리케이션 데이터였습니다. 따라서 터치 앤 고 데이터가 아닙니다. 실제 애플리케이션 데이터는 우리 환경에서 시뮬레이션되었습니다. 우리가 사용한 곳 5 NCache 서버에서 초당 2백만 요청을 달성할 수 있었습니다. NCache.

따라서 서버가 점점 더 추가되면 확장성 수치가 향상되는 것과 같은 성능 향상을 얻을 수 있습니다. 따라서 단 2개로 초당 5만 요청 NCache 그것은 매우 선형적으로 증가하는 추세였으며 더 많은 서버를 계속 추가한다면 계속 증가해야 합니다.

이러한 내용은 당사 웹사이트에도 게시됩니다. 거기에 비디오 데모 가능합니다.

배포 아키텍처

다음은 배포 아키텍처입니다. 일반적으로 이렇게 NCache 분산 캐싱 시스템이 배포됩니다. 클라우드는 물론 온프레미스의 모든 환경에서 지원됩니다. 사용할 수 있으려면 .NET 또는 NET Core Framework만 있으면 됩니다. 그것이 유일한 전제 조건입니다 NCache Windows 및 Linux 서버에 배포할 수 있습니다. 온프레미스의 물리적 또는 가상 상자일 수도 있고 .NET 또는 .NET Core Windows 또는 Linux에 설치됩니다. 따라서 이 두 가지 요구 사항이 있습니다.

그 이외의 NCache 모든 플랫폼에서 지원됩니다. 그것은에서 사용할 수 있습니다 Azure Marketplace, 뿐만 아니라 AWS와 우리는 또한 SaaS 기반 모델 또는 배포를 제시하고 있습니다. NCache 우리의 향후 버전에서.

두 가지 배포 옵션이 있습니다. 하나는 캐싱을 위해 전용 서버를 사용해야 하고 애플리케이션이 클라이언트 서버 모델에서 연결되어야 한다는 것입니다. 이는 클라이언트 측 VM이 없지만 서버 측 배포가 있는 클라우드에서도 선호되는 모델입니다.

그리고 두 번째 배포 옵션은 기존 애플리케이션 상자를 NCache 서버도. 그것은 대부분 이미 애플리케이션 계층이 있는 온프레미스에 있습니다. 더 작은 구성은 다음을 사용하는 것이 좋습니다. NCache 동일한 상자, 동일한 서버 세트에 설치됩니다.

어느 쪽이든 NCache 대부분의 트래픽을 처리합니다. 100%가 권장되며 일부 트래픽은 항상 백엔드 데이터베이스로 갈 수 있으며 이는 캐시를 통해 백엔드 데이터 소스로 처리할 수 있는 트랜잭션 작업 읽기, 쓰기 작업일 수 있습니다.

따라서 응용 프로그램에 데이터가 있고 데이터를 업데이트하는 사이트 패턴으로 캐시를 사용하거나 캐시와 데이터베이스에서 데이터를 서로 함께 가져오거나 다음과 함께 사용할 수 있는 읽기 및 쓰기 접근 방식을 사용할 수 있습니다. NCache.

분산 캐시의 일반적인 사용

몇 가지 사용 사례에 대해 이야기한 다음 바로 ASP.NET Core 특정 캐싱 특징. 그럼, 몇 가지 일반적인 사용 사례에 대해 이야기해 보겠습니다. NCache. 많은 사용 사례가 있습니다. 그리고 기술적인 관점에서 몇 가지를 나열했으며 이는 ASP에만 해당됩니다..NET Core 응용 프로그램, 그러나 일반적으로 모든 .NET, ASP.NET 또는 ASP.NET Core or .NET Core. 웹 응용 프로그램, 일부 백엔드 응용 프로그램, 일부 워크플로, 일부 Windows 서비스, 모든 응용 프로그램에서 활용할 수 있습니다. NCache 선택할 수 있는 많은 사용 사례가 있습니다.

  1. 앱 데이터 캐싱

    주로 ASP의 경우.NET Core, 우리는 앱 데이터 캐싱을 대상으로 할 것이며 여기에는 두 가지 옵션이 있습니다. 당신이 사용할 수있는 IDistributedCache 인터페이스. 애플리케이션에서 이미 IDistributedCache를 사용하고 있다면 간단히 플러그인할 수 있습니다. NCache 제공자로서. 따라서 첫 번째 옵션입니다. 두 번째 옵션은 직접 NCache API 및 앱 데이터 캐싱은 애플리케이션 내부의 거의 모든 것을 캐시합니다. 도메인 개체, 컬렉션, 데이터 세트, 두 번 이상 사용하고 백엔드 데이터베이스로 이동하고 싶지 않은 모든 데이터가 될 수 있습니다. 해당 데이터를 검색했으며 이제 해당 데이터를 캐시 및 캐시 저장소를 계속 사용하고 데이터베이스에 대한 여행을 저장할 수 있습니다.

  2. ASP.NET Core 세션 캐싱 및 SignalR Backplane

    두 번째 사용 사례는 ASP입니다..NET Core 특정 캐싱. 이것이 우리의 웹 프런트 엔드 캐싱 기능입니다. 이 측면에서 우리는 많은 기능을 가지고 있습니다. 당신은 ASP를 사용할 수 있습니다.NET Core 세션 상태. 단일 사이트 및 다중 사이트 세션입니다. NCache 분산 캐시 클러스터입니다. 따라서 세션은 내부에 분산 방식으로 저장됩니다. NCache. 또한 코드 변경이 없는 옵션으로, 플러그인하는 확장 방법에서 거의 한 줄의 코드 변경이 가능합니다. NCache. 이것을 사용하기 위해 광범위한 코드 변경이 필요하지 않으며 내부적으로 매우 안정적입니다. NCache 세션이 서버 간에 복제되기 때문입니다. 따라서 서버가 다운되더라도 데이터 손실이나 애플리케이션 다운타임이 발생하지 않습니다.

    여기서 두 번째 기능은 ASP.NET Core 응답 캐싱. 정적 페이지가 있는 경우. 역사적으로 ASP.NET에는 출력 캐싱이 있었습니다. 최신 ASP에서.NET Core 플랫폼에서 응답 캐싱을 사용할 수 있습니다. 여기에서 페이지 수준 헤더를 정의하고 이러한 모든 페이지를 기반으로 페이지 출력이 내부에 캐싱됩니다. NCache. 따라서 응답이 캐시됩니다. 똑같은 요청을 다시 실행하면 미리 캐시된 응답을 사용할 수 있게 됩니다. 그래서, 그것은 NCache, 또한 ASP에서 사용할 수 있는 코드 변경 없음 옵션입니다..NET Core 프런트 엔드 캐싱 수준.

    그런 다음 SignalR을 사용 중이고 웹 팜이 있는 경우 백플레인이 필수로 필요합니다. 그래서, SignalR Backplane 단일 서버에서 웹 팜 배포로 이동하는 경우 필요합니다. NCache ASP 역할을 할 수 있습니다.NET Core 백플레인, SignalR Backplane SignalR 애플리케이션을 위한 것입니다. 이벤트 기반의 Pub/Sub 메시징을 뒤에서 사용하고 있습니다. 매우 빠르고 확장성이 뛰어납니다. 따라서 플러그인을 사용하면 고성능 및 확장성, 고가용성 및 안정성의 이점을 얻을 수 있습니다. NCache ASP로.NET Core SignalR Backplane.

  3. 게시/구독 메시징

    마지막으로 세 번째 사용 사례는 Pub/Sub 메시징입니다. 게시/구독 메시징 는 별도의 사용 사례이기도 합니다. SignalR의 경우 우리가 사용하는 배후에서 Pub/Sub 메시징이 사용됩니다. 그러나 Pub/Sub 메시징은 내에서 별도의 사용 사례로 사용할 수 있습니다. NCache 또한. 마이크로서비스 애플리케이션의 경우 이는 마이크로서비스 아키텍처에서 정의된 간단한 애플리케이션이 있는 경우 매우 의미가 있습니다. 이들은 전용 작업을 담당합니다. 그들이 봉사하는 매우 중요한 목적. 따라서 이러한 마이크로 서비스와 NCache 그 문제를 해결할 수 있습니다. 마이크로서비스 애플리케이션 내에서 직접 통신을 구현할 필요는 없습니다. 당신은 의지할 수 있습니다 NCache 이를 위한 통신 플랫폼과 이에 연결된 모든 응용 프로그램은 메시지를 보내고 받을 수 있으며 수행하는 동안 성능 저하가 없어야 합니다.

    게시자 구독자 모델을 가질 수 있습니다. 게시자가 데이터를 캐시에 게시하고 캐시가 해당 메시지를 저장하고 모든 구독자에게 전달하는 곳입니다. 비동기 이벤트 기반 메커니즘입니다. 따라서 게시자와 구독자는 서로 알 필요도 없습니다. 따라서 대기 시간, 대기 시간, 동기 호출이 없습니다. 따라서 매우 강력하고 매우 빠르며 느슨하게 결합된 아키텍처이며 모든 것이 다음에서 관리됩니다. NCache, 이 플랫폼에 관한 한.

실습 데모

그래서 우리는 이러한 높은 수준의 기능을 다뤘습니다. 다음은 실제 작동하는 제품을 보여 드리겠습니다. 캐시 클러스터를 생성할 위치입니다. 테스트해 보세요. 몇 가지 모니터링 측면을 보여주고 ASP에서 사용할 수 있는 이러한 모든 기능에 대해 이야기하겠습니다..NET Core 하나씩. 그래서 이에 대한 몇 가지 샘플 응용 프로그램을 정렬했습니다. 그래서 내 데모 환경에 로그온하고 있습니다.

그래서 여기 두 가지가 있습니다. NCache 내가 사용할 서버와 내 상자는 이러한 모든 샘플 응용 프로그램을 실행할 클라이언트 시스템으로 작동합니다. 여기서 아이디어는 다음을 사용할 것입니다. 웹 기반 관리 도구 및 모니터링 도구.

따라서 이 웹 기반 관리 도구를 사용하면 단일 지점에서 모든 것을 관리하고 모니터링할 수 있습니다. 귀하의 환경에서 귀하의 환경 중 하나에 이르기까지 모든 웹 요청, http 요청이 될 수 있습니다. NCache 웹을 통해 원격으로 모든 것을 관리하고 모니터링할 수 있어야 합니다.

클러스터형 캐시 생성

따라서 localhost, IP 주소를 제공할 수 있으며 인터넷을 통해 어디에서나 이 리소스에 액세스할 수 있습니다. 그래서 저는 계속해서 새 캐시를 만들 것입니다. 'aspcorecache'라고 합시다. 모든 캐시의 이름을 지정해야 합니다. 여러 개의 캐시 클러스터를 생성할 수도 있으며 필요에 따라 의미 있는 캐시 이름을 만들 수 있습니다.

직렬화 모드는 바이너리 또는 JSON일 수 있습니다. 따라서 바이너리를 사용하고 바이너리를 사용하면 JSON도 매우 유연하므로 이를 사용하려는 경우 복제본 캐시 토폴로지의 파티션을 선택하겠습니다.

이내 NCache 많이있다 캐싱 토폴로지. 내가 빨리 당신을 끝까지 데려가면. 따라서 선택할 수 있는 캐싱 토폴로지가 많습니다. 파티션을 나눈 다음 백업으로 파티션을 나눴습니다. 따라서 여기에는 각 서버가 두 개의 파티션을 유지 관리합니다. 클라이언트가 연결된 활성 데이터 파티션과 다른 서버의 수동 복제 파티션. 서버 XNUMX이 활성 상태인 것을 볼 수 있듯이 백업은 XNUMX에 있고 서버 XNUMX는 활성이며 백업은 서버 XNUMX에 있습니다. 서버가 다운되는 경우 백업이 활성화되고 여기에서 모든 데이터를 가져옵니다. 정상적인 작업에서 이러한 파티션은 데이터가 균등하게 분배됩니다.

클라이언트는 모든 서버에 연결되어 있으므로 읽기 및 쓰기 요청이 매우 빠르며 서버를 더 추가하면 모든 서버가 서로 결합하여 작동하기 때문에 더 많은 읽기 및 쓰기 요청 처리 용량을 얻을 수 있습니다. 이것이 내가 복제본 파티션을 선택하는 토폴로지입니다.

그런 다음 비동기 복제 옵션입니다. 활성과 백업 중에서 동기화 또는 비동기를 선택할 수 있습니다. 동기화가 더 안정적입니다. 비동기가 더 빠릅니다. 그래서, 나는 그것을 계속할 것입니다.

크기 1024는 이 데모에 충분하지만 의미가 있는 것으로 보이는 모든 크기를 생각해낼 수 있습니다.

TCP 매개변수.

질문 : 현재 사용하고 있는 NCache, client.ncc 또는 nc conf 파일이나 개발 파이프라인에 있는 것을 피하는 방법이 있습니까?

예. 그것은 절대적으로 가능합니다. client.ncconf를 사용하면 캐시 클러스터가 실행 중인 캐시 서버에 연결하기 위한 구성을 지정할 수 있습니다. 제 경우에는 두 개의 상자와 캐시 이름이 있습니다. 따라서 client.ncconf에는 캐시 이름과 이 캐시가 구성된 서버가 있습니다. client.ncconf를 피하려면 이러한 모든 설정을 인라인으로 제공할 수 있습니다. 캐시 초기화 매개변수가 있습니다. 우리는 그것들을 캐시 초기화 매개변수라고 부릅니다. 그 객체를 사용하면 애플리케이션 코드 내에서 이러한 모든 구성을 지정할 수 있습니다. 네. 이 질문에 답하려면 캐시 초기화 매개변수를 사용해야 합니다.

질문 : 배포할 수 있습니까? NCache 애저에서?

전적으로. 배포 아키텍처에 대한 세부 정보를 공유할 때 이에 대해 논의했습니다. NCache Microsoft Azure, AWS 및 기타 모든 공용 또는 사설 클라우드에서 완벽하게 지원됩니다. 에 대한 전제 조건만 NCache .NET 또는 .NET Core, 선택한 운영 체제에 따라 다릅니다. 또한 Azure 및 AWS 내에서 SaaS 모델을 제공할 예정입니다. 따라서 완벽하게 지원됩니다. 당사 마켓플레이스 이미지도 게시됩니다. 따라서 사용할 수있는 많은 방법이 있습니다. NCache Azure에서.

NCache TCP/IP 기반 캐시 클러스터링 프로토콜입니다. 따라서 IP 주소와 포트가 필요합니다. 따라서 화면의 모든 것을 기본값으로 유지하겠습니다.

캐시가 가득 차면 두 가지 옵션이 있습니다. 새 업데이트를 거부하고 읽기에 캐시를 계속 사용하거나 축출을 켜면 새 항목을 위한 공간을 만들기 위해 일부 데이터가 자동으로 제거됩니다.

세션, 보기 상태, 응답 캐싱 및 개체 캐싱의 경우 데이터가 중요한 속성인 경우 축출을 끄고 가득 차지 않고 가득 차더라도 충분히 큰 가스 ​​크기를 제공하는 것이 좋습니다. 런타임에 캐시 크기를 변경할 수 있습니다. 그러나 여유가 있다면 실제로 일부 데이터를 손실해도 괜찮습니다. 여유가 있다면 제거를 활성화할 수 있으며 캐시가 가득 차면 일부 데이터가 자동으로 제거되고 최신 데이터를 위한 공간이 생깁니다. 이것이 바로 퇴거가 하는 일입니다.

완료 시 이 캐시를 시작하고 서비스 시작 시 이 캐시를 자동 시작합니다. 따라서 서버가 재부팅될 때마다 캐시가 자동으로 시작되고 그게 전부입니다. XNUMX노드 캐시 클러스터를 구성하는 것이 얼마나 쉬운지 알 수 있습니다. NCache.

스트레스 시뮬레이션 및 캐시 통계 모니터링

따라서 캐시가 실행 중입니다. 역시 활성화 되어 있으니 빨리 테스트 해봐야겠습니다. 통계 창. 따라서 이들은 두 서버 모두에 대한 성능 카운터를 보여주고 다음의 측면을 모니터링합니다. NCache.

매우 좋은. 따라서 서버 측 및 클라이언트 측 대시보드 보고서 보기도 제공합니다. 따라서 모든 매개변수가 있습니다.

다음은 이 캐시를 테스트하는 것입니다. 연결된 응용 프로그램이 없으므로 계속 진행하겠습니다. 그것은 캐시의 이름이며 뒤에서 이것은 클라이언트 측 구성을 사용하여 연결하고 내 캐시 클러스터에 연결하고 요청 시뮬레이션을 시작합니다. 당신이 볼 수 있듯이 초당 요청 카운터와 캐시 작업 카운터당 평균 마이크로초는 활동을 보여줍니다. 추가, 가져오기, 업데이트도 발생하고 캐시 크기 카운터, CPU, 메모리가 표시되고 현재 캐시에 연결된 클라이언트 IP가 있습니다.

이 도구의 다른 인스턴스를 실행하겠습니다.

질문 : 또 다른 질문은 이 작업을 수행하는 동안 캐시에 연결된 모든 클라이언트를 모니터링할 수 있습니까?

전적으로. 그것은 매우 강력한 기능 중 하나입니다. NCache. 나는 이 예를 통해 이것을 보여줄 수 있다. 이제 두 개의 클라이언트가 연결되었습니다. 먼저 클라이언트 대시보드를 볼 수 있습니다. 따라서 이 두 클라이언트는 107에서 실행되고 있으며 이 클라이언트 상자에서 읽기 작업이 수행되는 것을 볼 수 있습니다. 내가 할 것인 내 상자에서 응용 프로그램을 실행하는 경우 여기에서 내 상자 통계도 볼 수 있으며 이와 유사하게 프로세스, 프로세스 ID, 포트, 여기에서 보내고 받은 바이트도 볼 수 있습니다. 그러나 가장 중요한 것은 클라이언트 측과 다른 모니터링 측면이라고 생각합니다. 따라서 초당 읽기 작업, 초당 추가, 초당 업데이트, 가져오기가 있습니다.

따라서 우리는 클라이언트 측 카운터의 완전한 세트를 가지고 있으며, 이는 NCache, 오른쪽 및 캐시 상태 및 이들은 모두 서버 측 카운터이지만 클라이언트 측에서 표시하는 이러한 모든 카운터는 추가할 수 있으며 클라이언트 응용 프로그램 서버에 대한 모든 카운터도 검토할 수 있습니다.

그래서, NCache 클라이언트 측 모니터링에 대한 지원이 매우 광범위합니다. 귀하의 질문에 답변이 되었기를 바랍니다.

이제 실제로 실행했습니다. 스트레스 테스트 도구의 두 인스턴스를 실행할 수 있으며 각각에 의해 초당 약 800~900개의 요청을 볼 수 있습니다. NCache 섬기는 사람. 따라서 평균 초당 약 1500개의 요청이 처리되고 있습니다.

그래서, 그것은 빠른 데모였습니다. 이 도구를 중지하겠습니다. 다음으로 실제로 활용할 수 있는 실제 기능을 보여 드리겠습니다. 그래서 우리는 방법을 설명하는 데 많은 시간을 할애했습니다. NCache 매우 확장 가능합니다.? 어떻게 배포됩니까? 캐시 클러스터를 구성하고 생성하는 방법은 무엇입니까?

이제 다음으로 강조하고 싶은 것은 활용 방법입니다. NCache ASP에서.NET Core 응용 프로그램 및 주요 사용 사례는 무엇입니까? 다양한 사용 사례를 다루었습니다. 따라서 ASP 내에서 웹 프런트 엔드 캐싱 사용 사례를 시작하겠습니다..NET Core.

NCache ASP.NET Core 세션 캐싱

그래서 제가 강조할 첫 번째 기능은 NCache ASP.NET Core 세션 캐싱. 여기에 두 가지 옵션이 있습니다. 이미 세션을 사용 중이고 대부분의 기회가 IDistributedCache 인터페이스를 사용하는 경우 사용할 수 있습니다. 그래서, 당신은 연결할 수 있습니다 NCache IDistributedCache를 통한 세션 캐싱 제공자. 독립형 인메모리 공급자가 있습니다. SQL 서버 공급자가 있습니다. 독립 실행형은 단일 실패 지점입니다. 확장할 수 없습니다. SQL Server는 경우에 따라 단일 실패 지점이기도 합니다. 확장할 수 없고 매우 느립니다.

NCache 공급자는 매우 빠릅니다. 인메모리입니다. 확장성이 뛰어납니다. 단일 실패 지점이 아니며 런타임에 용량을 늘립니다. 따라서 점점 더 많은 서버를 추가할 수 있으며 NCache. 따라서 IDistributedCache를 빠르게 검토해 보겠습니다. 그래서 여기 추측 게임인 IDistributedCache가 있습니다.

public void ConfigureServices(IServiceCollection services)
{
	//Add framework services
	services.AddMvc();

	services.AddNCacheDistributedCache(configuration =>
        {
	   configuration.CacheName = "MyNCacheCache";
	   configuration.EnableLogs = true;
	   configuration.ExceptionsEnabled = true;
        });
}

public void Configure(IApplicationBuilder app)
{
	app.UseNCacheSession();
}

서비스가 추가되기만 하면 됩니다. NCache 분산 캐시를 말한 다음 앱 사용이라고 말합니다. NCache Session과 여기에 바로 그 작업을 수행할 샘플 애플리케이션이 있습니다.

public IConfigurationRoot Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddMvc();

            //To test sessions with NCache Distributed Cache, uncomment the following lines and comment the line after it
            services.AddNCacheDistributedCache(Configuration.GetSection("NCacheSettings"));
			services.AddSession();			
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseBrowserLink();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseStaticFiles();

여기서 두 번째 옵션은 NCache 고급 기능이 있는 세션 공급자와 이에 대한 샘플 응용 프로그램도 있습니다. 그래서, 실제로 이것에 집중합시다. 기본적으로 우리 공급자는 IDistributedCache에 비해 훨씬 더 풍부한 기능을 제공하므로 이 점을 강조하고 싶습니다. 그 일환으로 IDistributedCache 공급자도 제공하는 모든 기능을 볼 수 있습니다.

그래서, 여기로 돌아옵니다. 우선, 당신이 필요 NCache 이 안에 이미 추가한 NuGet 패키지. 그래서, 우리가 가지고 있다면 AspNetCore.세션.NCache, 오른쪽. 이것이 NuGet 패키지입니다. 여기로 빠르게 돌아와서 세션을 검토하겠습니다. NCache.Microsoft.Extensions.Caching. 따라서 IDistributedCache 세션 NuGet 패키지는 NCache 실제 세션 제공자.

그래서 저는 여기에서 이것에 집중할 것입니다. 당신이해야 할 모든 것은 .... 우선 Startup.cs로 오세요. 서비스가 있습니다.추가NCache세션 및 소요 NCache 구성의 설정.

... 
    public IConfigurationRoot Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services.
        services.AddMvc();
        
        //To test sessions with NCache Distributed Cache, uncomment the following lines and comment the line after it
        //services.AddNCacheDistributedCache(Configuration.GetSection("NCacheSettings"));
		//services.AddSession();
			
        services.AddNCacheSession(Configuration.GetSection("NCacheSettings"));
    }
    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();
... 

그리고 구성 내부에서 모두 지정합니다. NCache 공급자 설정. 예를 들어 ASP를 사용하고 있습니다..NET Core 은닉처. SessionAppId는 앱에 캐시 항목 키가 추가되는 앱 ID 속성입니다. 세션 ID가 캐시 키가 되고 이 속성이 추가됩니다. 따라서 내부에서 다른 애플리케이션의 세션을 고유하게 볼 수 있습니다. NCache 그런 다음 일부 세션 잠금을 설정합니다. 이것을 true로 설정하면 할 수 있습니다. 좋습니다. 따라서 이것을 true로 설정하면 단순히 세션을 잠글 수 있으므로 동시 액세스가 허용되지 않습니다.

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  },
  "NCacheSettings": {
    "CacheName": "mycache", //Replace "myPartitionedCache" with the name of your cache
    "SessionAppId": "GuessGame", //(Optional)Specifies an identifier to make sure that session ID remains unique in case multiple applications are using the same cache.
    "EnableSessionLocking": false, //(Optional)If this flag is set, NCache Session Store Provider exclusively locks the session-store item for which multiple concurrent requests are made. The default is false.
    "SessionLockingRetry": -1, //(Optional)If enableSessionLocking is true and this integer is not less than 0, NCache Session Store Provider will return empty session after sessionLockingRetry, which specify the number of retries to acquire a lock. The default is -1.
    "EnableLogs": false, //(Optional)When this flag is set, store provider logs all error information. The log files are created in %NCHOME%/log-files/SessionStoreProvider. The default is false.
    "EnableDetailLogs": false, //(Optional)When this flag is set, store provider logs all debugging information. The log files are created in %NCHOME%/log-files/SessionStoreProvider. The default is false.
    "ExceptionsEnabled": false, //(Optional)Specifies whether exceptions from cache API are propagated to the page output. Setting this flag is especially helpful during development phase of application since exceptions provide more information about the specific causes of failure. The default is false.
    "OperationRetry": 0, //It specifies the number of times server will retry the operation, in case connection is lost with a server while an operation is executing. Its default is zero.
    "operationRetryInterval": 0 //It specifies the time interval between each operation retry, in case connection is lost with the server. Its default value is zero.
  }
}

따라서 세션을 읽을 수만 있습니다. 쓰기 액세스 권한은 로그가 있는 현재 요청에만 부여되며, 그러면 자세한 로그를 사용할 수 있습니다. 단일 사이트 및 다중 사이트 세션을 사용할 수 있습니다. 따라서 이러한 모든 기능은 ASP를 연결한 경우에만 사용할 수 있습니다..NET Core 세션 제공자. IDistributeCache 세션이 지원되지만 제한적입니다. 그래서, 나는 이것을 정말 빨리 실행할 것이고 그것은 결국 이 ASP에 연결될 애플리케이션을 시뮬레이트할 것입니다..NET Core 은닉처.

사실 이건 그만하자. 먼저 내 상자를 클라이언트로 추가하겠습니다. 여기에서 내가 해야 할 일은 바로 여기에 내 상자인 클라이언트 상자를 추가하는 것입니다.

가세요. 이제 모든 구성이 완료되었으며 이제 이 애플리케이션을 한 번 더 실행할 수 있으며 내 캐시 클러스터에 연결할 수 있어야 합니다. 매우 좋은. 따라서 처음 인스턴스화하는 데 시간이 걸립니다.

따라서 이것은 내부에 세션 객체를 생성합니다. NCache. 모니터링 측면으로 이동하면 하나의 클라이언트가 연결된 것을 볼 수 있습니다. 공급자가 초기화되면 해당 클라이언트는 107 및 108에 연결하고 내부에 세션 개체를 생성합니다. NCache. 현재 주 사용자이기 때문에 하나의 세션 개체만 생성됩니다. 나는 로그인한 한 명의 사용자가 될 것이지만 여러 애플리케이션 사용자가 있는 경우 내부에 여러 세션이 생성되는 것을 볼 수 있습니다. NCache. 그러나 여기서 아이디어는 매우 간단합니다. 이 두 줄의 코드를 추가하기만 하면 됩니다. 추가하다 NCache 세션을 클릭한 다음 사용이라고 말합니다. NCache 세션.

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();

//To test sessions with NCache Distributed Cache, uncomment the following lines and comment the line after it
//services.AddNCacheDistributedCache(Configuration.GetSection("NCacheSettings"));
//services.AddSession();
			
services.AddNCacheSession(Configuration.GetSection("NCacheSettings"));
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseBrowserLink();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }
    app.UseStaticFiles();
    //To test NCache Distributed Cache, uncomment this and comment the line below this
    //app.UseSession();
    app.UseNCacheSession();
... 

이러한 확장 방법은 모든 것을 다룰 것입니다. 첫 번째 인스턴스화는 약간 더 오랜 시간이 걸립니다. ASP에서 본 것입니다..NET Core 그러나 일단 실행되면 애플리케이션이 실행되고 매우 빠르게 테스트할 수 있어야 합니다. 가세요. 한 클라이언트가 이미 연결되어 있으므로 우리가 거기에 있다고 생각합니다.

그동안 내보내기라는 빠른 명령을 실행하겠습니다. 이 도구는 현재 존재하는 모든 캐시 키를 덤프합니다.

따라서 하나의 클라이언트가 연결되어 있고 두 개의 세션이 있어야 하기 때문에 캐시에 하나의 세션 개체가 추가될 것으로 예상합니다. 이전 시도에서 하나와 이번 시도에서 하나가 이미 있습니다. 가세요.

이것은 숫자를 추측할 수 있는 추측 게임이며 세션 내에서 해당 숫자를 추가하고 해당 숫자도 표시합니다. 더 큰 숫자를 추측해 보겠습니다. 그러면 NCache.

매우 간단한 응용 프로그램이지만 여기로 돌아오면 캐시에 두 개의 항목이 있으며 내가 방금 만든 두 가지 요청을 보았을 것입니다. NCache 서버 측.

이것으로 첫 번째 데모를 완료하고 플러그인할 수 있습니다. NCache 세션 캐싱용. 많은 기능이 있습니다. 단일 사이트, 다중 사이트 세션이 지원됩니다. 세션 잠금이 지원됩니다. 광범위한 로깅이 가능합니다. 매우 안전합니다. 우리는 그 위에 보안과 암호화를 가지고 있습니다. 따라서 사용하려는 경우 전체 패키지입니다. NCache 세션 캐싱용.

ASP.NET Core 응답 캐싱

두 번째 기능은 ASP입니다..NET Core 응답 캐싱. 여기에는 애플리케이션에 대한 http 헤더가 있습니다. 페이지 출력을 캐시하도록 선택하고 다음을 사용할 수 있습니다. NCache 캐싱을 위한 응답 캐싱 미들웨어이며 다시 IDistributedCache 인터페이스를 통해 이루어집니다. 그래서, 내가 바로 여기로 돌아온다면, 우리는 이것을 가지고 있습니다 샘플 애플리케이션.

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Alachisoft.NCache.Caching.Distributed;

namespace ResponseCaching
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddResponseCaching();
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            #region Option1
            // Reading NCacheSettings using appsettings.json

따라서 이것을 사용하려면 이 NuGet 패키지를 사용하기만 하면 됩니다. NCache.Microsoft.Extensions.Caching. 여기서는 하나의 NuGet 패키지에서 세션, 개체 캐싱 및 응답 캐싱을 위한 IDistributedCache를 다룹니다.

그리고 다음으로 해야 할 일은 서비스.추가NCache분산 캐시.

// This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddResponseCaching();
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            #region Option1
            // Reading NCacheSettings using appsettings.json
            services.AddNCacheDistributedCache(Configuration.GetSection("NCacheSettings"));
            #endregion

            #region Option2
            // Reading NCacheSettings using hardcoded values
            //services.AddNCacheDistributedCache(options =>
            //{
            //    options.CacheName = "myPartitionedCache";
            //    options.EnableLogs = true;
            //    options.ExceptionsEnabled = true;
            //});
            #endregion

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        }

그래서, 그것은 연결되는 IDistributedCache 인터페이스이지만 응답 캐싱에 사용할 것이며 앱 설정에는 우리가 설정한 캐시 이름과 일부 로깅 설정이 있습니다. 그리고 내가 바로 여기로 돌아오면 응답 캐싱을 갖게 될 것입니다. services.AddResponseCaching();

...
namespace ResponseCaching
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddResponseCaching();
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });
...

따라서 이 애플리케이션은 응답 캐싱이 완료될 것으로 예상합니다. 통해 이루어질 것입니다. NCache IDistributedCache 인터페이스를 사용합니다. 시간이 좀 걸리고 실제로 연결할 수 있을 것으로 예상하기 때문에 이 작업을 빠르게 실행하겠습니다. NCache 그러면 실제로 추가되는 데이터를 보여드리겠습니다.

코드를 보여주면. 구성을 인라인으로 지정할 수도 있습니다. 예를 들어 '추가NCacheDistributedCache' 및 캐시 이름 'demoClusteredCache' 또는 'aspCoreCache'라고 말하면 모든 설정을 인라인으로 지정할 수 있습니다.

public void ConfigureServices(IServiceCollection services)
{
...
   services.AddNCacheDistributedCache(configuration => 
   {
	configuration.CacheName = "demoClusteredCache";
	configuration.EnableLogs = true;
        configuration.ExceptionsEnabled = true;
   });
...
}

또는 그냥 사용할 수 있습니다 NCache 설정 및 설정을 통해 NCache 설정, 바로 여기. 구성을 통하거나 인라인 설정을 통할 수 있습니다. 그래서, 그것은 앞에서 매우 간단합니다.

public void ConfigureServices(IServiceCollection services)
{
   services.AddResponseCaching();

   //remaining services here
   ...
   //Add NCache services to the container
   services.SetNCacheSessionConfiguration ( 
	Configuration.GetSection("NCacheSettings"));

   services.AddNCacheDistributedCache();

   services.AddMvc();
}

지금 여기로 돌아오면 응답 캐싱 응용 프로그램이 NCache 그 결과 캐시에 일부 항목이 표시됩니다.

질문 : 데이터가 정확히 어떻게 암호화되고 안전하게 유지됩니까?

이 응답 캐싱 샘플을 보여주고 내부의 보안 암호화 기능을 보여드리겠습니다. NCache. 따라서 응용 프로그램이 실행되고 있으며 보시다시피 몇 가지 항목이 추가되었습니다. 간단히 새로 고침하면 여기에서 값이 업데이트되고 이 페이지 출력 내용은 내부에 저장됩니다. NCache 응답 캐싱을 통해 캐시 키를 표시하면 이제 캐시에 항목이 더 있습니다. 따라서 이미 있는 세션 항목 외에 두 개의 항목이 있습니다.

이제 다시 돌아와서 보안 암호화. 그것들은 내부가 매우 광범위합니다. NCache. 보안 및 암호화 기능이 있습니다. 선택할 수 있는 보안 공급자가 많이 있습니다. AES 및 DES 제공업체가 있습니다. 그 중 여러 개. FIPS 호환 암호화 공급자가 있으며 TLS 1.2도 지원합니다. 따라서 전송 수준 보안도 사용할 수 있습니다. NCache. 이것이 암호화를 다루는 것입니다. 클라이언트와 서버 상자 간에 종단 간 암호화를 사용할 수 있고 보안 관점에서 캐시 관리자가 될 수 있는 사람, 캐시 사용자가 될 수 있는 사람을 선택할 수 있으며 Active Directory 기반 LDAP 기반 암호화 보안 공급자가 있습니다. 꽂을 수 있습니다.

따라서 특정 질문이 있는 경우 이메일을 보내주시면 구성 방법에 대한 모든 세부 정보를 공유해 드리겠습니다. 그러나 우리는 내부적으로 매우 광범위한 지원을 NCache. 그래서, 여기로 돌아옵니다. 그래서 이것은 우리의 ASP를 다룹니다..NET Core 응답 캐싱.

ASP.NET Core SignalR Backplane

다음 기능은 ASP입니다..NET Core SignalR Backplane. 여기에서 웹 팜을 사용하는 경우 다음을 사용할 수 있습니다. NCache 그것을 위한 백플레인으로 그리고 기존 백플레인과 비교하여, NCache 훨씬 빠르고 안정적이며 확장성이 뛰어납니다.

여기에 내가 추가한 NuGet 패키지가 있습니다. AspNetCore.SignalR.NCache 검색할 수 있다는 것입니다. 이미 설치되어 있습니다. 다시 앱 설정을 통해 캐시 이름을 사용하고 확장 방법을 사용하기만 하면 됩니다. 따라서 services.AddSignalR이 있는 경우 여기에 추가하는 확장 메서드가 있습니다. NCache 있다 SignalR Backplane ASP용.NET Core 분야의 다양한 어플리케이션에서 사용됩니다.

// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.Configure<NCacheConfiguration>(Configuration.GetSection("NCacheConfiguration"));
    services.AddSignalR().AddNCache(ncacheOptions =>
    {
        ncacheOptions.CacheName = Configuration["NCacheConfiguration:CacheName"];
        ncacheOptions.ApplicationID = Configuration["NCacheConfiguration:ApplicationID"];
        // Uncomment in case of cache security enabled.
        //ncacheOptions.UserID = Configuration["NCacheConfiguration:UserID"];
        //ncacheOptions.Password = Configuration["NCacheConfiguration:Password"];
    });
}

시간이 좀 걸리기 때문에 빠르게 진행하겠습니다. 많은 일이 진행되고 있다고 생각합니다. 따라서 이 샘플을 실행하겠습니다. 따라서 채팅 애플리케이션이 실행되고 배후에서 Pub/Sub 메시징을 사용하고 있습니다. NCache. 따라서 내가 실제로 할 일은 바로 여기로 돌아와서 서버 측에서 Pub/Sub 메시지를 구체적으로 관리하고 모니터링할 수 있는 몇 가지 성능 카운터를 보여주고 SignalR이 Pub/ 무대 뒤에서 서브 메시징. 그래서 SignalR이라고 말하겠습니다. 여기에서 눈치채셨다면 바로 여기에 메시징 섹션이 있습니다. 메시지 저장소 크기, 메시지 수, 초당 배달됨, 초당 만료됨, 게시됨, 주제 수를 볼 수 있습니다.

주제를 사용하면 관심을 분리할 수 있습니다. 사용하는 여러 응용 프로그램 NCache 등 SignalR Backplane 그들은 내부에 생성된 여러 주제를 가질 것입니다 NCache. 따라서 유사한 성격의 메시지의 주제는 별도의 주제로 주어질 수 있습니다. 예를 들어 주문에 대한 주제를 만들 수 있습니다. 메시지 고객에 대한 주제를 만들 수 있습니다. 따라서 다른 주제에 다른 메시지를 가질 수 있으며 별도의 주제에 연결된 구독자에게는 해당 메시지와 관련된 메시지만 제공됩니다. 여기에서 이미 내 애플리케이션이 실행 중임을 의미하는 몇 가지 활동을 볼 수 있습니다. 따라서 서버 대시보드로 돌아가면 이제 XNUMX개의 애플리케이션이 실행되고 있습니다. 정기 통계에는 아무것도 표시되지 않습니다. 메시징 통계에서 모든 것을 볼 수 있습니다. 따라서 메시지 수를 볼 수 있습니다.

그래서 몇 가지 메시지가 있었고 저장소 크기는 약 800바이트입니다. 메시지가 게시되고 아직 만료되지 않았기 때문에 날짜에 다른 매개변수가 없는 것 같습니다.

따라서 내 애플리케이션으로 돌아가서 이것의 다른 인스턴스를 실행합니다. 자, 두 가지 신청서가 있습니다. 시크릿 모드로 실행했어야 했는데 보내자마자 테스트 메시지가 여기로 보내집니다. 메시지 2를 테스트하면 다른 쪽에서도 해당 메시지를 볼 수 있습니다. 바로 여기로 돌아오면 여기에서 진행 중인 활동이 있습니다.

따라서 배후에서 Pub/Sub 메시징을 사용하고 백플레인을 만들 수 있습니다. 따라서 사용 사례인 SignalR 자체는 사용자에게 콘텐츠를 푸시할 수 있는 사용자 폴링 대신 푸시 알림을 강조합니다. 그러나 웹 팜의 경우 해당 웹 서버에 연결된 클라이언트에만 콘텐츠를 푸시할 수 있다는 제한이 있습니다. 여러 웹 서버가 있는 경우 ASP.NET 및 ASP의 중앙 본체와 백플레인이 필요합니다..NET Core 해결합니다.

그래서 당신은 사용할 수 있습니다 NCache 이를 위한 백플레인으로. 모든 메시지가 중계되는 커뮤니케이션 플랫폼입니다. NCache로 보내 NCache 그리고 NCache 차례로 모든 웹 서버에 전송하고 브로드캐스트하면 해당 웹 서버는 결국 해당 메시지를 최종 사용자에게 전송할 수 있습니다. 이것이 전체 아키텍처를 매우 빠르게 만드는 이유입니다. NCache 메모리에 있습니다. 그것은 초고속, 매우 확장 가능하고 매우 안정적이며 고가용성입니다.

괜찮아. 그래서 저는 우리가 이 면에서 좋다고 생각합니다. 질문이 있으신가요? 그렇지 않으면 계속해서 데이터 캐싱 측면에 대해 이야기하겠습니다. 따라서 마지막 10-15분 동안 일부 기능인 데이터 캐싱에 대해 알아보겠습니다. 이 전면에는 많은 기능이 있습니다. 그래서 몇 가지를 빨리 보여 드리겠습니다.

따라서 우선 사용할 수있는 많은 방법이 있습니다. NCache 데이터베이스 캐싱 또는 앱 데이터 캐싱을 위한 것입니다. 내부에 데이터를 캐시하는 위치 NCache & 백엔드 데이터베이스에 여행을 저장합니다. IDistributedCache를 이미 사용하고 있다면 매우 제한적이지만 플러그인할 수 있습니다. NCache 제공자로서.

여기 샘플 응용 프로그램이 있습니다. 다시 말하지만 매우 간단합니다. NuGet 패키지를 추가해야 합니다. ASP입니다.NET Core 과 NCache.Microsoft.Extensions.캐싱.

public async Task<IActionResult> onPostResetCachedTime()
{
    var currentTimeUTC = DateTime.UtcNow.ToString();
    byte[] encodedCurrentTimeUTC = Encoding.UTF8.GetBytes(currentTimeUTC);
    var options = new DistributedCacheEntryOptions()
        .SetAbsoluteExpiration(TimeSpan.FromSeconds(20));
    _cache.Set("cachedTimeUTC", encodedCurrentTimeUTC, options);

    return RedirectToPage();
}

따라서 IDistributedCache를 다룬 다음 캐시 이름을 지정하는 앱 설정과 플러그인하는 startup.cs 내부가 필요합니다. services.AddNCacheDistributedCache는 구성을 통해 설정을 제공하거나 구성을 지정하는 옵션 XNUMX를 사용할 수 있습니다. 모든 설정은 코드를 통해 직접 지정됩니다.

public void ConfigureServices(IServiceCollection services)
    {
        // Reading NCacheSettings using appsettings.json
        services.AddNCacheDistributedCache(_config.GetSection("NCacheSettings"));

        services.AddMvc().SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_2_2);
    }

그리고 index.html.cs에는 여기에 몇 가지 메서드가 있습니다. 여기서 우리는 cache.GetAsync를 호출합니다.

public string CachedTimeUTC { get; set; }
public async Task OnGetAsync()
{
    CachedTimeUTC = "Cached Time Expired";
    var encodedCachedTimeUTC = await _cache.GetAsync("cachedTimeUTC");

    if(encodedCachedTimeUTC != null)
    {
        CachedTimeUTC = Encoding.UTF8.GetString(encodedCachedTimeUTC);
    }
}

그리고 주목해야 할 한 가지는 이 IDistributedCache 인터페이스입니다. 예를 들어 GetAsync를 보여주면 바이트 배열을 다시 가져옵니다. 따라서 직렬화되거나 직렬화 해제된 객체가 아닙니다. 직렬화 및 역직렬화를 직접 수행해야 합니다.

using System.Threading;
using System.Threading.Tasks;

namespace Microsoft.Extensions.Caching.Distributed
{
public interface IDistributedCache
{
    byte[] Get(string key);
    Task<byte[]> GetAsync(string key, CancellationToken token = default);
    void Refresh(string key);
    Task RefreshAsync(string key, CancellationToken token = default);
    void Remove(string key);
    Task RemoveAsync(string key, CancellationToken token = default);
    void Set(string key, byte[] value, DistributedCacheEntryOptions options);
    Task SetAsync(string key, byte[] value, DistributedCacheEntryOptions options, 
    CancellationToken token = default);
}
}

이 샘플에서 수행한 작업은 실제로 개체를 추가하기 전에 직렬화하고 검색한 후에는 역직렬화하는 방식으로 수행했습니다. 그래서, 우리는 이것을 통해 문자열을 되찾고 있습니다.

public string CachedTimeUTC { get; set; }
public async Task OnGetAsync()
    {
        CachedTimeUTC = "Cached Time Expired";
        var encodedCachedTimeUTC = await _cache.GetAsync("cachedTimeUTC");

        if(encodedCachedTimeUTC != null)
        {
            CachedTimeUTC = Encoding.UTF8.GetString(encodedCachedTimeUTC);
        }
    }

이것이 우리가 광범위하게 수행한 것이며 여러분이 해야 할 일입니다. 와 함께 NCache 앱 데이터 캐싱 플랫폼으로 직접 사용하면 이 모든 작업을 수행할 필요가 없습니다. NCache 개체를 자동으로 직렬화 및 역직렬화합니다. 직렬화 가능으로 표시하기만 하면 됩니다.

따라서 이 샘플을 정말 빠르게 실행하고 IDistributedCache 인터페이스도 보여줄 수 있어야 하며 마지막으로 이것이 실행되는 동안 빌드도 하고 싶습니다. 이것이 우리의 IDistributedCache 인터페이스이고 이것이 두 번째입니다. 바로 여기에서 보여주고 있는 여기 옵션은 NCache 아피스. API는 다음과 같습니다.

/*Cache Connection*/
Cache cache = NCache.InitializeCache("myCache");
cache.Dispose();

/*Fetching Data*/
Employee employee = cache.Get<Employee>("Employee:1000");
bool isPresent = cache.Contains("Employee:1000");

/*Writing Data*/
cache.Add("Employee:1000", employee);
cache.AddAsync("Employee:1000", employee);

cache.Insert("Employee:1000", employee);
cache.InsertAsync("Employee:1000", employee);

Employee employee = (Employee) cache.Remove("Employee:1000");
cache.RemoveAsync("Employee:1000");

또는 모든 것을 직접 관리하는 경우 더 많은 제어 권한을 얻는 것이 좋습니다 NCache API 호출. 당신은에 연결 NCache 캐시 초기화를 사용하거나 현재 버전에서 캐시 가져오기를 사용한 다음 캐시를 말합니다. 항목을 검색하려면 캐시를 가져오세요. 항목을 추가하려면 추가하세요. Add Async도 가능합니다. Insert 및 Insert Async도 사용 가능하며 cache.Remove를 호출할 수 있습니다. 따라서 이 샘플이 실행되고 IDistributedCache가 지원되지만 우리의 직접 API는 비교할 때 보다 광범위한 기능이 제공되는 두 번째 접근 방식입니다.

질문 : 우리는 사용할 수 있습니까 NCache API는 IDistributedCache와 함께 제공되며 이에 대한 샘플은 어디에서 얻을 수 있습니까?

따라서 우선 IDistributedCache를 사용할 수 있습니다. 이미 IDistributedCache를 사용 중이어야 합니다. 그래서, 당신은 연결할 수 있습니다 NCache 그 소스로. 따라서 이것이 출발점이 될 수 있으며 그 외에 동일한 애플리케이션에서 직접 API를 사용할 수도 있습니다. 네, 그렇게 할 수 있습니다. 우리는 당신이 하나 또는 다른 것을 사용하도록 제한하지 않습니다. 세션 캐싱, 응답 캐싱, SignalR Backplane, IDistributedCache 또는 직접 NCache API 호출. 이 다섯 가지 기능은 단일 응용 프로그램에서도 모두 사용할 수 있습니다. 그래서 그것이 아름다움이다. NCache 모든 사용 사례를 결합할 수 있습니다.

샘플 애플리케이션, 이 모든 샘플은 함께 설치되어 제공됩니다. NCache, 오른쪽. 그래서, 우리는 여기서 커스텀을 사용하지 않습니다. 따라서 이 모든 것은 프로그램 파일 샘플에서 사용할 수 있습니다. NCache 샘플. 이러한 내용은 당사 웹사이트에도 게시됩니다.

따라서 이 샘플이 실행되었습니다. 따라서 캐시 시간을 재설정하면 그렇게 하고 여기로 빨리 돌아오면 캐시 키를 보여주고 이제 캐시 키를 더 많이 볼 수 있습니다. 일부 항목이 만료되었다고 생각하지만 캐시 시간 UTC가 표시됩니다. 일부 응답 캐싱 개체는 만료되었을 것입니다.

그래서 이것이 IDistributedCache 인터페이스를 사용하는 방법입니다. NCache.

이제 직접 보여드리겠습니다. NCache API 호출을 적극 권장합니다. 그것은 당신도 할 수 있는 일입니다. 따라서 이를 위해 다음을 사용할 수 있습니다. Alachisoft.NCache.SDK NuGet 패키지. 이것이 전체 클라이언트 측 리소스를 가져오는 완전한 SDK이며 이 SDK를 사용하여 클라이언트 측에서 모든 기능을 노출할 수 있으며 이를 기반으로 이러한 이름 공간을 포함한다고 말할 수 있습니다. Alachisoft.NCache.고객 다음을 포함할 수도 있습니다. Alachisoft.NCache.실행 시간 그것을 통해 사용할 수 있는 몇 가지 고급 기능이 있기 때문입니다.

using Alachisoft.NCache.Runtime;
using Alachisoft.NCache.Sample.Data;
using Alachisoft.NCache.Client;
using System;
using System.Configuration;
using Alachisoft.NCache.Runtime.Caching;

namespace Alachisoft.NCache.Samples
{
    public class BasicOperations
    {
        private static ICache _cache;
    }
}
...

ICache 인터페이스. 이것은 IDistributedCache와 달리 우리 고유의 인터페이스입니다. 따라서 비교에서 볼 수 있듯이 많은 기능이 있으며 이 안에도 여러 기능이 있습니다. 따라서 이것은 ICache의 일부 개체입니다.

따라서 캐시를 초기화할 수 있습니다. 초기화는 다음을 통해 수행됩니다. NCache.고객. 캐시매니저.겟캐시, 그래서, 당신이 그것에 연결하는 방법입니다. 캐시 핸들을 얻고 해당 캐시 핸들을 사용하여 시간 기반 만료를 설정할 수 있습니다. 이 경우 고객인 물건을 주고, 캐시에 개체 추가 그리고 우리는 고객을 얻고 있습니다. 그런 다음 cache.Add 키 값 항목이 추가됩니다. 따라서 고객 개체는 캐시에 추가하는 동안 자동으로 직렬화되며 검색은 cache.Get을 통해 이루어지고, 일부 값을 변경할 수 있는 cache.Insert를 통해 업데이트됩니다. 만료 시간을 변경한 다음 cache.Remove를 호출하여 데이터도 제거할 수 있습니다.

따라서 이 샘플 내에서 신속하게. 괜찮은. 따라서 앱 설정에서 캐시를 가져옵니다. 이 캐시의 이름을 asp 코어 캐시로 지정하면 데이터 캐싱에도 동일한 캐시를 사용하기 시작하고 다른 응용 프로그램 내에서 동일한 캐시를 사용한 곳에서 이미 보았지만 하나의 큰 응용 프로그램이 사용하는 경우 이러한 모든 기능은 서로 결합되어 서로 결합되어 지원됩니다.

그래서 이것이 실행되는 동안 많은 기능이 있습니다. 샘플에서 한두 개만 보여주고 있습니다. 이는 기본적인 작업일 뿐이며 캐시에 일부 데이터가 추가될 것이기 때문입니다. 어느 시점에서나 멈추지 않을 수도 있습니다. 확신할 수는 없지만 일단 봅시다. 그 사이에 하나의 클라이언트가 연결되어 있다고 보여줍니다. 일부 작업을 수행했습니다. 희망합시다. 어딘가에 중단점을 두고 한 번 더 실행하겠습니다.

그래서 실제로 한 것은 실제로 캐시를 초기화하고 개체를 추가하고 검색하고 업데이트하고 다시 검색한 다음 제거한 다음 캐시를 폐기했다는 것입니다. 그래서 폐기하기 전에 중단점을 두었으므로 이제 캐시에서 초기화, 추가, 가져오기, 세부 정보 업데이트, 업데이트를 볼 수 있기를 바랍니다. 따라서 이 모든 방법이 실행되었습니다.

따라서 이 샘플을 실행하는 것은 간단합니다. 필요한 것은 NuGet 패키지와 네임스페이스를 포함하고 여기에서 보여드릴 다양한 API를 사용하는 것뿐입니다.

많은 기능을 사용할 수 있습니다. 저는 마지막 5~6분 동안 직접 사용할 수 있는 다양한 기능에 대해 설명하겠습니다. NCache 아피스. 따라서 시간 기반 만료를 사용할 수 있습니다. 절대 및 슬라이딩 만료를 사용할 수 있습니다. 절대는 사전에 시간을 제공하고 해당 시간이 지나면 데이터가 제거되는 경우입니다. 슬라이딩은 해당 데이터를 계속 사용하는 경우 슬라이딩 만료가 10분이라고 가정해 보겠습니다. 해당 항목에 10분 동안 액세스하지 않으면 해당 항목이 제거됩니다. 그렇지 않으면 해당 개체를 계속 사용하는 경우 캐시에 유지됩니다.

캐시를 데이터베이스와 동기화할 수 있습니다. 캐시된 항목 콘텐츠의 모든 변경 사항입니다. 예를 들어 캐시된 항목은 데이터베이스 레코드의 변경 사항입니다. 데이터베이스에 속한 캐시된 항목이 있는 경우 데이터베이스가 변경되면 캐시의 항목이 무효화되고 이벤트 기반의 SQL 종속성이 있습니다. DB 기반 종속성, 폴링 기반 DB 폴링 종속성이 있습니다. 변경 사항을 풀링하고 데이터베이스의 일부 레코드가 변경된 것을 발견하면 캐시에서 해당 항목을 제거합니다. 직접 만들 수 있는 .NET CLR 저장 프로시저 NCache 데이터베이스 서버에서 직접 API 호출. 캐시를 비관계형 데이터베이스와 동기화할 수도 있습니다. 파일 종속성을 사용할 수 있습니다. 파일에 종속된 캐시 항목을 만들 수 있습니다. 또는 코드 레지스터를 실행하는 사용자 지정 종속성일 수도 있습니다. NCache 그러면 해당 항목이 캐시에서 만료되어야 하는지 여부가 결정됩니다. 따라서 비즈니스 논리에 따라 캐시에서 항목을 만료시킬 수 있습니다. 키 기반 종속성이 있습니다. 이를 사용하여 캐시된 항목 간의 관계를 처리할 수 있습니다. 따라서 일대일, 일대다 및 다대다 관계를 내부에서 관리할 수 있습니다. NCache.

서버 측 지원, 코드 지원은 매우 광범위합니다. 캐시 옆 패턴을 사용하거나 캐시에서 캐시로 읽는 Read-through 및 Write-through 패턴을 사용할 수 있으며 데이터가 캐시에 없는 경우 공급자를 실행하여 캐시를 통해 읽을 수 있습니다. 구현하고 당사에 등록하는 인터페이스이며 캐시를 읽고 해당 항목을 가져오거나 백엔드 데이터베이스에서 손상시킬 수 있습니다.

그리고 write-through는 그 반대입니다. 캐시를 업데이트한 다음 write-through 핸들러를 호출하여 백엔드 데이터베이스를 자동으로 업데이트할 수도 있습니다. 구현 및 등록하고 write-behind 인터페이스는 백엔드 데이터베이스를 비동기식으로 업데이트합니다. 쓰기 작업을 수행할 필요가 없는 경우에 비해 매우 빠릅니다. 캐시 항목은 캐시에서만 업데이트되고 애플리케이션이 반환되고 뒤에서 캐시가 백엔드 데이터베이스를 업데이트합니다.

그룹, 하위 그룹을 사용할 수 있습니다. 내부에 논리적 컬렉션을 만들 수 있습니다. NCache. 태그가 지원됩니다. 항목에 키워드를 첨부할 수 있으며 해당 태그를 기반으로 항목을 검색, 제거 또는 가져오거나 놀거나 검색할 수도 있습니다.

SQL 유사 검색이 가능합니다. SQL 및 LINQ 검색이 지원됩니다. 속성을 기반으로 항목을 검색할 수 있습니다. 제품이 객체 유형인 제품 선택과 같은 검색 기준을 실행할 수 있으며 product.price가 10보다 크고 product.price가 100보다 작은 제품을 선택한다고 말할 수 있습니다. 따라서 지정된 기준에 따라 NCache 응용 프로그램에서 결과 집합을 공식화합니다.

그리고 LINQ 쿼리도 지원됩니다. 이것들은 평행합니다. 데이터 인덱싱은 이것의 일부로 지원됩니다. 매우 빠르게 검색할 수 있도록 해야 합니다. NCache.

Pub/Sub 메시징 및 이벤트

Pub/Sub 메시징 및 이벤트는 별도의 기능입니다. 비동기식 이벤트 기반 Pub/Sub 메시징 플랫폼이 있습니다. 데이터 세트를 매핑하고 해당 데이터 세트에서 이벤트를 가져올 수 있는 기준 기반 연속 쿼리가 있습니다. 예를 들어, 제품 가격이 100 미만인 모든 제품을 매핑할 수 있습니다. 따라서 이것이 데이터 세트가 될 수 있습니다. 해당 데이터 세트가 변경되면 알림을 받게 됩니다.

주요 기본 이벤트를 사용할 수 있습니다. 따라서 항목이 업데이트 또는 제거되거나 모든 항목이 모니터링되는 캐시 수준일 수 있는 경우 알림을 받을 수 있습니다.

동적 캐시 클러스터

마지막으로 에 대한 몇 가지 세부 사항 NCache 클러스터링. 동적 캐시 클러스터링 프로토콜을 기반으로 합니다. NCache 즉석에서 서버를 추가하거나 제거할 수 있습니다. 따라서 단일 실패 지점이 없습니다. 서버가 다운되는 경우 프로토콜 내에서 관리됩니다. 서버를 더 추가하면 자동으로 새로 추가된 서버를 사용하기 시작합니다. 서버가 다운되면 이 경우에도 다운 시간이 없으며 주로 이 캐시를 호스팅하는 여러 서버가 있기 때문에 단일 실패 지점이 없습니다.

애플리케이션에 관한 한 서버 추가 및 제거는 원활합니다. 100% 가동 시간, 고가용성 캐시 시나리오를 제공하며 이미 토폴로지를 다뤘습니다.

우리는 몇 가지가 클라이언트 캐시. WAN 복제 특징. 활성-활성 또는 활성-수동 사이트 간에 사이트 간 복제를 수행할 수 있습니다. 그것도 관리합니다.

분산 캐시의 WAN 복제

그래서, 당신은 목록이 계속된다는 것을 알고 있습니다. 지금까지 많은 세부정보를 다루었으며 실제로 활용하는 방법에 대한 간략한 개요를 제공하고 싶었습니다. NCache ASP에서.NET Core. 자, 우리는 이미 이 프레젠테이션의 끝을 향해 가고 있습니다. XNUMX시간 마커라고 생각합니다.

제 생각에는 이쯤에서 결론을 내리겠습니다. 지금까지 궁금한 점이 있으면 알려주세요. 그렇지 않으면 내가 그것을 Zack에게 넘겨주고 그가 거기에서 가져갈 수 있을 것입니다. 질문이 있으신가요? 약 1분 동안 바닥을 열어 두겠습니다. 궁금한 점이 있거나 아직 생각 중인 부분이 있으면 자유롭게 던져주세요.

그리고 우리는 당신이 보고 있는 이러한 모든 기능을 거의 다뤘습니다. ASP.NET Core 세션, 응답 캐싱, SignalR Backplane, IDistributedCache, 데이터 캐싱 및 직접 NCache API 호출 및 Pub/Sub 메시징용 샘플 애플리케이션도 있습니다. 이 섹션에 별도로 관심이 있는 경우 별도의 샘플 애플리케이션도 사용할 수 있습니다.

질문 : 이 프레젠테이션은 나중에 사용할 수 있습니까?

예, 그렇게 될 것입니다. 웨비나 녹화본을 얻을 수 있을 뿐만 아니라 슬라이드도 다운로드하여 사용할 수 있으며 준비가 되면 녹화된 웨비나로 연결되는 이메일을 받게 됩니다. 따라서 웹사이트가 생방송되면 언제든지 방문할 수 있으며 녹화된 웨비나에서 찾을 수 있습니다.

질문 : IDistributedCache와 차이점은 무엇입니까? NCache ASP.NET Core 세션 저장소 공급자?

좋습니다. 질문이 IDistributedCache를 통한 세션 사용량의 차이에 더 초점이 맞춰져 있다고 생각합니다. 따라서 높은 수준에서 IDistributedCache는 기능면에서 제한됩니다. NCache 공급자가 더 많은 제어를 제공합니다. 먼저 세션 잠금을 사용할 수 있습니다. IDistributedCache 세션은 비 잠금 기반 저장소입니다. 단일 사이트 및 다중 사이트 세션을 사용할 수 있습니다. 그것은 내부의 특정 기능입니다 NCache IDistributedCache에서는 사용할 수 없습니다. 하지만, NCache IDistributedCache 세션 공급자를 있는 그대로 지원합니다. IDistributedCache 위에 많은 이점을 제공하지만 IDistributedCache 세션을 다음과 비교할 때 NCache 그리고 당신은 알고 있습니다, NCache 다음을 사용하는 세션 저장소 공급자 NCache, 거기 NCache 공급자는 분명한 우위를 가지고 있습니다. 그런 다음 다른 응용 프로그램 간의 세션 공유와 같은 많은 기능이 있습니다. 지정할 수 있는 세션 앱 ID 속성이 있습니다. 귀하의 예외는 이벤트 로그에 기록될 수 있고, 캐시 로그가 생성될 수 있고, 클라이언트 로그가 생성될 수 있습니다. 따라서 이 둘 사이에는 다른 기능이 엄청나게 많습니다.

따라서 다음과 함께 세션 캐싱을 사용하는 경우 NCache, 그래서 나는 개인적으로 IDistributedCache 세션과 비교하여 세션 저장소 공급자를 검토하는 것이 좋습니다. NCache 많은 혜택을 받기 때문입니다.

질문 : 데이터를 그룹화하면 데이터 검색이 더 쉬워지는 방법은 무엇입니까?

오른쪽. 따라서 그룹을 여러 항목에 연결한 다음 그룹 데이터를 가져오고 모든 항목을 한 번에 가져오는 그룹 기반 API가 있습니다. 따라서 개별 개체의 키를 별도로 제공할 필요가 없습니다. 따라서 한 번의 API 호출로 모든 그룹 데이터를 검색할 수 있습니다. 하나의 API 호출로 데이터를 제거할 수 있습니다. 따라서 검색 및 업데이트 프로세스가 비교하기 쉬운 방법입니다.

 
© 저작권 Alachisoft 2002 - . 판권 소유. NCache 는 Diyatech Corp.의 등록상표입니다.