Entity Framework는 .NET용으로 검증된 Microsoft 객체-관계 매핑 프레임워크입니다. 도메인 객체를 통해 관계형 데이터를 다룰 수 있도록 지원합니다. 또한, 기존에 작성해야 했던 대부분의 데이터베이스 지속성 코드가 필요 없습니다.
Entity Framework는 성능과 확장성이 중요한 고트랜잭션 애플리케이션에 사용됩니다. 하지만 이러한 애플리케이션의 대부분에서 데이터베이스는 빠르게 병목 현상을 일으킵니다. 확장을 위해 필요에 따라 애플리케이션 서버를 추가할 수 있는 애플리케이션 계층과 달리, 데이터베이스 계층에서는 동일한 방식으로 확장할 수 없습니다.
이러한 확장성을 달성하는 유일한 방법은 분산 캐시와 같은 것입니다. NCache.NET 애플리케이션을 위한 매우 빠르고 확장 가능한 분산 캐시입니다. 애플리케이션 데이터를 캐시하고, 값비싼 데이터베이스 트립을 줄이며, 애플리케이션 성능과 확장성을 향상시킵니다.
Entity Framework 2차 캐시(L2 캐시)는 서로 다른 데이터베이스 컨텍스트와 사용자 세션 간에 데이터를 보존하는 캐싱 패턴입니다. Entity Framework 6.x(Classic)에서는 이 기능을 기본적으로 제공하지 않지만, NCache 이 플러그인은 사용자 지정 ADO.NET 공급자로 작동합니다. 이를 통해 쿼리를 분산 클러스터로 오프로드하여 코드 변경 없이 선형 확장성과 100% 가동 시간을 보장할 수 있습니다.
Entity Framework 애플리케이션이 다중 서버 환경에서 실행되는 경우 Entity Framework 2차 캐시(Second Level Cache)로 분산 캐시가 필요합니다. NCache 다중 서버 구성에 이상적인 옵션이며, 다음과 같은 이유로 사용해야 합니다.
사용에 관한 가장 좋은 점 NCache Entity Framework를 사용하면 별도의 프로그래밍이 필요하지 않습니다. 애플리케이션의 구성 파일에 인터셉터를 추가하여 간단히 수정할 수 있습니다. 섹션을 만들고 invariantName 및 type 구성을 덮어씁니다. 다음은 그 예입니다. 앱 구성 변경 :
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
<interceptors>
<interceptor type="Alachisoft.NCache.Integrations.EntityFramework.Caching.EFCommandInterceptor, Alachisoft.Integrations.EntityFramework.CachingProvider"/>
</interceptors>
</entityFramework>
The NCache Entity Framework 2차 캐시 공급자는 사용자 지정 ADO.NET 공급자로 플러그인됩니다. 이 공급자를 사용하면 분석 모드에서 애플리케이션을 실행할 수 있으며, 애플리케이션에서 Entity Framework에 실행하는 모든 쿼리를 기록합니다. 이러한 쿼리는 분석 모드에서 호출된 횟수와 함께 파일에 기록됩니다. 아래는 예시입니다.
<analysis-report>
<query>
<!--Call count = 12-->
<cache-query query-text="SELECT [Extent1].[ProductID] AS [ProductID],
[Extent1].[ProductName] AS [ProductName],
[Extent1].[SupplierID] AS [SupplierID],
[Extent1].[CategoryID] AS [CategoryID],
[Extent1].[QuantityPerUnit] AS [QuantityPerUnit],
[Extent1].[UnitPrice] AS [UnitPrice],
[Extent1].[UnitsInStock] AS [UnitsInStock],
[Extent1].[UnitsOnOrder] AS [UnitsOnOrder],
[Extent1].[ReorderLevel] AS [ReorderLevel],
[Extent1].[Discontinued] AS [Discontinued] FROM
[dbo].[Products] AS [Extent1]
WHERE 5 = [Extent1].[ProductID]"/>
<cache-policy vary-by-cache-param=""
expiration-type="Absolute"
enabled="True"
expiration-time="30sec"
dbsyncdependency="False"
resyncProviderName="EFResync"/>
</query>
</analysis-report>
이렇게 하면 캐시할 쿼리와 기간을 결정할 수 있습니다. 일부 또는 모든 쿼리에 대해 데이터베이스 동기화를 지정할 수도 있습니다.
연결하여 NCache Entity Framework 2차 캐시 제공자(app.config 변경)를 사용하면 애플리케이션에 엔터프라이즈급 분산 캐시를 사용할 수 있습니다. 다음은 몇 가지 기능입니다. NCache Entity Framework 앱을 제공합니다.
비록, 사용 NCache Entity Framework Second Level Cache는 매우 빠르고 쉽기 때문에 제한된 세트만 제공합니다. NCache 특징. 그 이유는 다음과 같습니다. NCache 사용자 지정 ADO.NET 공급자로 플러그인되어 SQL 쿼리 수준을 처리해야 한다는 사실에 제약을 받습니다. NCache Entity Framework 2차 캐시 공급자로 사용하기로 결정한 경우 사용할 수 없는 기능입니다.
당신을위한 대안은 사용하는 것입니다 NCache Entity Framework 애플리케이션 내에서 직접 NCache API 다른 모든 비-Entity Framework .NET 애플리케이션과 마찬가지로 호출합니다. 이 방식을 사용하려면 약간의 프로그래밍 작업이 필요하지만, 추가적인 프로그래밍 작업보다 이점이 더 크다고 판단할 수도 있습니다.
다음은 Entity Framework Second Level Cache로 사용했을 때와 사용했을 때 놓칠 수 있는 기능 목록입니다. NCache 귀하의 응용 프로그램에서 직접.
| 기능 카테고리 | 제품 특장점 | EF 캐싱 공급자 (코드 필요 없음) | NCache 직접 API |
|---|---|---|---|
| 고급 작업 | 대량 작업 | 사용할 수 없음 | 유효한 |
| 그룹화 및 검색 | 태그 명명된 태그 | 사용할 수 없음 | 유효한 |
| 쿼리 | SQL 및 LINQ 검색 | 사용할 수 없음 | 유효한 |
| 동시성 | 잠금 그리고 아이템 잠금 해제 | 사용할 수 없음 | 유효한 |
| 진실성 | 캐시 항목 버전 관리 | 사용할 수 없음 | 유효한 |
| 데이터 소스 | 전체 읽기 / 연속 기입 / 후기 쓰기 | 사용할 수 없음 | 유효한 |
| 메시징 | 이벤트 알림 (품목, 일반, 사용자 지정) | 사용할 수 없음 | 유효한 |
| 유지보수 | 캐시 로더 및 리프레셔 | 사용할 수 없음 | 유효한 |