다음을 통해 공유


프로그래밍 모델(AppFabric 1.1 캐싱)

이제 Windows Server용 Microsoft AppFabric 1.1에 사용할 수 있는 프로그래밍 모델에는 두 가지가 있습니다.

  • 캐시 제외 프로그래밍 패턴. 즉, 캐시에 데이터가 없는 경우 AppFabric 분산 캐시가 아니라 응용 프로그램이 원래 데이터 원본에서 캐시로 데이터를 다시 로드해야 합니다.

  • Read-through/Write-behind 프로그래밍 패턴. 이 모델에서는 사용자 지정 공급자를 만들어 백 엔드 데이터 저장소에 액세스합니다. 항목이 캐시에 없는 경우 공급자가 백 엔드에서 해당 항목을 검색합니다. 항목이 캐시에 기록되면 기록된 항목이 주기적으로 백 엔드에 비동기식으로 기록됩니다. 이 모델에 대한 자세한 내용은 Read-Through 및 Write-Behind(AppFabric 1.1 캐싱)를 참조하십시오.

캐싱 전략

응용 프로그램 코드가 캐시와 관계없이 작동할 수 있고 캐시된 데이터를 항상 사용할 필요가 없도록 응용 프로그램 코드를 디자인해야 합니다. 캐시의 데이터는 영구적으로 지속되지 않으므로 캐시의 데이터를 사용하지 못할 수 있습니다.

고가용성 기능을 통해 클러스터가 실행되는 동안 개별 캐시 호스트에서 컴퓨터 및 프로세스 오류를 방지할 수 있습니다. 그러나 전체 클러스터가 중단되는 경우가 발생할 수 있습니다. 예를 들어, 너무 많은 리드 호스트가 중단되는 경우에는 전체 클러스터가 종료됩니다. 자세한 내용은 리드 호스트 및 클러스터 관리(AppFabric 1.1 캐싱)를 참조하십시오.

코드에서 캐시 누락이 발생할 수 있는 다른 원인은 다음과 같습니다. 캐시 항목이 만료 또는 제거되었거나, 캐시 서버가 다시 부팅되었거나, 캐시 서비스가 다시 시작되었거나, 캐시 클러스터가 실수로 다시 시작되었을 수 있습니다. 원인과 관계없이 응용 프로그램 코드는 캐시된 개체를 사용할 수 없는 경우 데이터베이스나 다른 데이터 원본에 액세스할 수 있어야 합니다.

캐시 클라이언트

데이터를 캐시에 저장하려면 GetCache 메서드 또는 GetDefaultCache 메서드를 사용하여 DataCache 개체를 반환합니다. 이 DataCache 개체는 인스턴스화된 후 캐시 클라이언트라고 합니다.

참고

성능을 위해 캐시 사용 응용 프로그램에서 만드는 DataCacheFactory 개체 수를 최소화하는 것이 좋습니다. 캐시 클라이언트를 사용하는 응용 프로그램의 모든 부분에 사용할 수 있는 변수에 DataCacheFactory 개체를 저장합니다.

캐시 클라이언트의 동작을 구성할 수 있는 다양한 옵션을 사용할 수 있습니다. 이러한 구성 설정을 프로그래밍 방식 또는 응용 프로그램 구성 파일을 통해 지정하거나 두 방법을 모두 사용하여 지정할 수 있습니다. 캐시 클라이언트 및 사용 가능한 응용 프로그램 구성 설정에 대한 자세한 내용은 캐시 클라이언트 및 로컬 캐시(AppFabric 1.1 캐싱)응용 프로그램 구성 설정(AppFabric 1.1 캐싱)을 참조하십시오.

둘 이상의 캐시 클라이언트가 동시에 단일 캐시에 액세스할 수 있습니다. 서로 다른 컴퓨터에서 실행되는 응용 프로그램은 동일한 캐시를 사용하도록 구성된 캐시 클라이언트를 인스턴스화하여 이 작업을 수행할 수 있습니다. 다음 코드 예제에서 이 개념을 보여 줍니다. 서로 다른 캐시 클라이언트 인스턴스에서 실행되는 코드를 식별하기 위해 설명을 사용합니다.

'Each application has a similar GetCache method call
Dim myCacheFactory As DataCacheFactory = New DataCacheFactory()
Dim catalog As DataCache = myCacheFactory.GetCache("catalog")

'One cache client saves an object to the catalog named "toy101"
Call catalog.Put("toy101", New ToyObject("toy101", "Playschool"))

'The same or different cache client retrieves the object
Dim toy As ToyObject = CType(catalog.Get("toy101"), ToyObject)

'The same or a different cache client removes the object
catalog.Remove("toy101")
//Each application has a similar GetCache method call
DataCacheFactory myCacheFactory = new DataCacheFactory();
DataCache catalog = myCacheFactory.GetCache("catalog");

//One cache client saves an object to the catalog named "toy101"
catalog.Put("toy101", new ToyObject("toy101", "Playschool"));

//The same or different cache client retrieves the object
ToyObject toy = (ToyObject)catalog.Get("toy101");

//The same or a different cache client removes the object
catalog.Remove("toy101");

참고 항목

개념

AppFabric 캐싱 실제 아키텍처 다이어그램(AppFabric 1.1 캐싱)
AppFabric 캐싱 논리 아키텍처 다이어그램(AppFabric 1.1 캐싱)
캐시 클라이언트 개발

  2012-03-05