ASP.NET Core 더 깨끗하고 가벼운 아키텍처와 교차 플랫폼 지원으로 인해 웹 응용 프로그램 개발에 인기를 얻고 있습니다. 이러한 ASP.NET Core 애플리케이션은 트래픽이 많고 부하 분산된 다중 서버 배포에서 실행됩니다. 실제로 10-20개의 서버 웹 팜과 이보다 더 큰 몇 개를 보는 것이 일반적입니다.
다중 서버 부하 분산 배포를 사용하면 트랜잭션 부하가 증가함에 따라 더 많은 서버를 추가할 수 있으므로 응용 프로그램 계층의 확장성이 매우 높아집니다. 이렇게 하면 ASP가.NET Core 무거운 트랜잭션 부하를 쉽게 처리할 수 있는 애플리케이션입니다. 여전히 존재하는 성능 병목 현상이 있으며 이로 인해 ASP가 느려집니다..NET Core 응용 프로그램.
그리고 이 ASP.NET Core 성능 병목 현상은 ASP 방식으로 과중한 로드를 처리할 수 없는 데이터베이스 및 데이터 저장소에 있습니다..NET Core 애플리케이션 계층은 할 수 있습니다. 애플리케이션 계층 웹 팜에 더 많은 서버를 추가할 수 있지만 데이터베이스 계층에서는 동일하게 수행할 수 없습니다. 다음은 ASP의 성능 병목 현상이 되는 두 가지 유형의 데이터 저장소입니다..NET Core 분야의 다양한 어플리케이션에서 사용됩니다.
- 데이터베이스 서버(SQL 서버)
- ASP.NET Core 세션
NCache 세부 정보 NCache 기술 문서 NCache 클라이언트 API
솔루션: 분산 캐시
이러한 데이터 저장소를 제거하려면 성능 병목 현상, 가장 좋은 방법은 다음과 같은 분산 캐시를 사용하는 것입니다. NCache. NCache 데이터베이스보다 훨씬 빠른 .NET, 오픈 소스 메모리 내 분산 캐시입니다. 데이터베이스와 달리 NCache is 선형 확장 가능 캐시 서버 클러스터를 구축하고 트랜잭션 로드가 증가함에 따라 클러스터에 더 많은 서버를 추가할 수 있기 때문입니다.
NCache 애플리케이션 데이터를 캐시할 수 있으므로 비용이 많이 드는 데이터베이스 이동을 거의 80%까지 줄일 수 있습니다. 이렇게 하면 데이터베이스의 로드가 줄어들어 더 이상 성능 병목 현상이 발생하지 않고 훨씬 더 빠르게 읽기와 쓰기를 수행할 수 있습니다.
NCache 또한 확장 가능한 분산 저장소입니다. ASP.NET Core 세션. 또한, NCache ASP 복제.NET Core 캐시 서버가 다운될 경우 데이터 손실을 방지하기 위해 여러 서버에 세션을 연결합니다. ASP용.NET Core 세션, 이것은 런타임에 세션을 잃을 여유가 없기 때문에 매우 중요합니다. 다음은 분산 캐시가 다음과 같은 방식을 보여주는 다이어그램입니다. NCache 애플리케이션 배포에 적합합니다.
NCache 세부 정보 NCache 기술 문서 NCache 클라이언트 API
ASP를 통한 앱 데이터 캐싱.NET Core IDistributedCache
ASP 이전.NET Core, 이전 ASP.NET은 독립 실행형을 제공했습니다. ASP.NET 캐시 다중 서버 환경의 요구 사항을 충족하지 못했습니다. 이제 ASP.NET Core 소개했다 IDistributedCache 상당히 기본적인 분산 캐싱 표준 API로 인터페이스를 프로그래밍한 다음 타사 분산 캐시를 원활하게 연결할 수 있습니다.
다음은 사용 방법의 예입니다. IDistributedCache
인터페이스 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
IDistributedCache _cache; ... private byte[] LoadCustomer(string custId) { string key = "Customers:CustomerID:" + custId; // is the customer in the cache? byte[] customer = _cache.Get(key); if (customer == null) { // the cache doesn't have it. so load from DB customer = LoadFromDB(key); // And, cache it for next time _cache.Set(key, customer); } return customer; } |
NCache 에 대한 공급자도 구현했습니다. IDistributedCache
ASP에 연결할 수 있습니다..NET Core 응용 프로그램. 이렇게 하면 특정 코드를 변경할 필요가 없습니다. NCache.
여기에 무엇입니까 IDistributedCache
인터페이스는 다음과 같습니다(이러한 각 메서드에는 비동기 오버로드도 있습니다).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
namespace Microsoft.Extensions.Caching.Distributed { public interface IDistributedCache { // Each of these methods also has an “Async” overload byte[] Get(string key); void Refresh(string key); void Remove(string key); // Specify absolute & sliding expiration through options void Set(string key, byte[] value, DistributedCacheEntryOptions options); } } |
구성 NCache IDistributedCache 공급자로
구성하는 방법은 다음과 같습니다. NCache 너처럼 IDistributedCache
ASP의 공급자.NET Core Startup
클래스입니다.
1 2 3 4 5 6 7 8 9 10 11 |
public class Startup { ... public void ConfigureServices (IServiceCollection services) { ... services.AddNCacheDistributedCache(); ... } ... } |
NCache 세부 정보 ASP.NET Core 캐싱 ASP.NET Core 세션 제공자
왜 선택 하는가? NCache IDistributedCache를 통한 API?
캐싱 요구 사항이 상당히 기본적이고 분산 캐싱 공급업체를 원활하게 변경할 수 있는 유연성을 원하는 경우 계속해서 다음을 사용해야 합니다. IDistributedCache 상호 작용. 캐싱 공급업체를 원활하게 변경할 수 있습니다. 그러나 고급 캐싱 기능이 많지 않은 비용과 비교해 보십시오.
또 다른 옵션은 NCache ASP에서 직접 API.NET Core 응용 프로그램. NCache API는 레거시 ASP.NET Cache API와 매우 유사합니다. 여기에는 엔터프라이즈급 분산 캐시를 최대한 활용할 수 있는 무료 기능이 많이 포함되어 있습니다.
캐시할 수 있는 데이터가 많을수록 애플리케이션에 대한 성능 및 확장성 이점이 커집니다. 또한 고급 캐싱 기능이 없으면 읽기 전용 또는 단순 데이터 캐싱으로 제한되는 경우가 많습니다. 모든 다른에 대해 자세히 알아보기 NCache 캐싱 기능 당신이 놓친 IDistributedCache
공급자.
ASP 저장.NET Core 분산 캐시의 세션
ASP 이전.NET Core, 이전 ASP.NET은 타사 세션 저장소 공급자가 플러그인할 수 있는 ASP.NET 세션 상태 공급자 프레임워크를 제공했습니다. ASP.NET Core 세션은 타사 저장소 공급자를 연결하기 위한 유사한 메커니즘을 제공합니다. 다음은 두 가지 사용 방법입니다. NCache ASP로.NET Core 세션 스토리지:
NCache ASP용.NET Core IDistributedCache를 통한 세션
구성하자마자 NCache as IDistributedCache
ASP용 공급자.NET Core, NCache 자동으로 ASP의 기본 저장 옵션이 됩니다..NET Core 다른 작업을 수행할 필요가 없습니다. 그러나 이 구현은 이전 버전(ASP 이전.NET Core) ASP.NET 세션 상태.
다음은 기본 ASP에 대한 몇 가지 사항입니다..NET Core 세션 구현이 부족합니다.
- 세션 잠금: ASP.NET Core 세션 잠금을 제공하지 않습니다. 이것은 이전의 ASP.NET 세션 상태에서도 제공되었던 것입니다.
byte[]
사용자 정의 개체에 대한 배열: ASP.NET Core 세션에 저장할 수 있기 전에 모든 사용자 정의 개체를 바이트 배열로 변환해야 합니다. 이전 ASP.NET 세션 상태도 사용자 지정 개체를 지원합니다.
NCache ASP로.NET Core 세션 제공자
기본 ASP를 해결하려면.NET Core 통해 세션 구현 IDistributedCache
공급자, NCache 자체 ASP를 구현했습니다..NET Core 세션 제공자. 이 구현에는 기본 구현보다 훨씬 더 많은 기능이 있습니다.
다음은 귀하의 계정에서 구성하는 방법입니다. Startup
클래스입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class Startup { ... public void Configure(IApplicationBuilder app, IHostingEnvironment env) { ... app.UseNCacheSession(); ... } ... } |
ASP를 지정할 수 있습니다..NET Core 위의 세션 구성 appsettings.json
다음과 같이 파일:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
{ ... "NCacheSessions": { ... "CacheName": "demoCache", "EnableLogs": "True", "RequestTimeout": "90", "EnableDetailLogs": "False", "ExceptionsEnabled": "True", "WriteExceptionsToEventLog": "False" } ... } |
NCache 세부 정보 NCache 기술 문서 구성 NCache IDistributedCache 제공자
결론
Microsoft는 다음과 같은 두 가지 옵션을 제공합니다. IDistributedCache
공급자. 하나는 SQL Server이고 두 번째는 Redis. NCache 두 옵션보다 낫습니다. SQL Server와 비교하여, NCache 훨씬 빠르고 확장 가능합니다. 또한, NCache 도 보다는 낫다 Redis 다음과 같은 이유로 :
- 기본 .NET: NCache 100% 네이티브 .NET이므로 .NET 애플리케이션 스택에 아주 잘 맞습니다. 반면에, Redis Linux 배경에서 제공되며 기본 .NET 캐시가 아닙니다.
- 보다 빠른 Redis: NCache 실제로는 Redis as NCache 클라이언트 캐시 기능은 NCache 상당한 성능 향상.
- 더 많은 기능 : NCache 여러 가지 매우 중요한 분산 캐시 기능을 제공합니다. Redis 하지 않습니다. 자세한 내용은 여기를 참조하세요. Redis vs NCache.