2016-08-18 4 views
0

매우 큰 C# 웹 사이트가 별도의 응용 프로그램과 동일한 서버에서 실행되는 별도의 응용 프로그램 풀로 구분되어 있습니다. (배경은입니다.) .net 4.6.x 프레임 워크를 사용하고 있습니다. ASP.NET 웹폼 & MVC. 일부 응용 프로그램 풀은 여전히 ​​"클래식"을 사용하고 MVC 응용 프로그램은 "통합"을 사용합니다.동일한 서버에있는 여러 응용 프로그램 풀의 메모리 캐시 단일 인스턴스

서로 다른 응용 프로그램간에 특정 캐시 된 항목을 공유하려고합니다. 나는 각 애플리케이션이 캐시의 자체 복사본을 가지기를 원하지 않는다. 캐시의 공유 인스턴스 하나만 있으면됩니다. 여기

내가 같은 서버에 MemeroyCache 내 모든 응용 프로그램 풀에서의 단일 인스턴스를 공유하려면 어떻게 ...

내 질문의 핵심입니다? 한 응용 프로그램 풀이 다른 응용 프로그램/풀에서 캐시를 검색 할 수 있기를 원한다면 이것이 가능합니까 아니면 다른 기술을 볼 필요가 있습니까? 모든 예제 또는 제안은 훌륭합니다. :)

미리 감사드립니다.

답변

1

별도의 웹 API 프로젝트를 만들고 거기에 MemoryCache 구현을 호스팅 할 수 있습니다. 그런 다음 모든 앱에서 사용할 수있는 캐시의 항목을 가져 오거나 설정하는 API를 노출합니다.

비록이 접근법에 대한 경고가 있습니다. 예를 들어, MemoryCache.Default를 사용하는 경우 캐시는 응용 프로그램 풀이있는 한 계속 실행됩니다. 기본 응용 프로그램 풀 유휴 시간 제한은 1 시간 미만인 20 분입니다. 내가 얻고 자하는 것은 많은 앱 풀 설정을 동기화 상태로 유지해야하며 이것이 문제로 이어질 것이라고 생각합니다.

더 나은 방법은 분산 캐시를 구현하는 것입니다. 및 StackExchange.Redis 클라이언트를 사용하는 것이 좋습니다. memcached과 같은 다른 대안이 있습니다.

+0

예 실제로 웹 API 접근 방식을 고려하고있었습니다. 어떤 이유로 나는 MemoryCache가 애플 리케이션 풀이 재활용 된 후에 주위에 걸릴 것이라고 생각했다. 더 나은 접근법은 당신이 언급 한 것처럼 Redis와 같은 분산 캐시 일 것입니다. 응답 해 주셔서 감사합니다. – Zooly57

관련 문제