첫 번째 WCF 서비스를 만들려고하고 있는데 응용 프로그램 데이터를 저장하려고합니다.WCF 서비스에 응용 프로그램 수준 데이터 저장
ServiceContracts 및 DataContracts를 만들고 서비스가 작동 중입니다.
이제는 데이터베이스에서 일부 구성 데이터를 읽고이 데이터를 응용 프로그램 범위에 저장하여 서비스가 살아있는 한 모든 후속 요청에서 데이터를 사용할 수있게하려고합니다. 그렇게하면 요청을 처리 할 때마다 데이터베이스에 연결할 필요가 없습니다. 나는 설정 파일에 데이터를 저장하고 싶지 않다. 데이터는 이미 DB에 있고 나는 그것을 복제하고 싶지 않다.
다음과 같이 구현되어 작동합니다.
참고 1 : 샘플을 간단하게 유지하기 위해 데이터베이스 코드를 제거했습니다.
참고 2 : MemoryCache 클래스는 System.Runtime.Caching 네임 스페이스 내에 있습니다.
private void LoadConfigData()
{
if (!MemoryCache.Default.Contains("ConfigData"))
{
CacheItemPolicy cachePolicy = new CacheItemPolicy() {
AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(5) };
MemoryCache.Default.Add(
"ConfigData",
"ImagineThereIsDBDataHere",
cachePolicy);
}
}
이 방법을 사용하는 것이 올바른 방법입니까?
이 포스트가 응용 프로그램 클래스와 HttpContext를 사용하여 언급 :
Read Global Application property from WCF Service
을하지만 나는 현재 내 프로젝트에이 가능한 중 어느 것도 있습니다.
이 스레드는 안전합니까? 내 서비스에 대한 요청이 여러 개 있고 캐시가 비어 있으면 경합 조건이 생깁니 까?
이것은 내 첫 번째 질문이기 때문에 세부 사항을 놓친 경우 알려 주시면 업데이트하겠습니다.
감사합니다.