2009-08-07 7 views
4

IIS에 두 개의 ASP.NET 2.0 응용 프로그램이 있습니다. 공공 예약 시스템 및 가격을 관리하는 관리 시스템을 제공합니다. 두 응용 프로그램에서 사용하는 데이터베이스에 액세스하는 공유 DLL 프로젝트가 있습니다.두 IIS 응용 프로그램간에 HttpRuntime.Cache 공유

성능을 향상시키기 위해 가격은 DLL 코드에 캐시되어 모든 요청시 데이터베이스에 저장됩니다. 그러나 관리자가 가격을 변경하면 관리 응용 프로그램에서 캐시가 새로 고쳐집니다 (공개 응용 프로그램에서는 캐시가 새로 고쳐지지 않습니다).

그래서 질문에. 이 두 응용 프로그램이 HttpRuntime.Cache를 공유하도록 IIS를 구성 할 수 있습니까? 그렇다면 어떻게 설정해야합니까?

답변

2

두 가지 응용 프로그램이 필요하다는 점을 감안하면 동일한 DLL 메모리 힙을 공유하면 안됩니다. 당신이 필요로하는 것은 두 사람 사이의 통신 채널이며, 관리자 웹 페이지에서 캐시 변경 사항을 알리면 새로 고침이 발생합니다.

간단한 내용 일 수도 있지만 캐시에 업데이트가 있는지 확인하는 간단한 페이지 일 수도 있습니다. 또는 - 응용 프로그램에서 시간 스탬프를 기준으로 현재 및 현재의 업데이트를 확인하도록합니다.

는 (또 다른 옵션은 캐시가있는 서비스를 만드는 것입니다,하지만 난 그 간단한 솔루션의 범위를 벗어난 생각)

+0

감사합니다. 그게 내가 의심했던 것이다. 관리 사이트에서 호출하는 공용 사이트에 제네릭 처리기를 이미 추가했지만 더 멋진 방법이 있는지 궁금합니다. – harriyott

0

없음; 경험에 의해 이것은 작동하지 않을 것입니다 (.NET 4.6, IIS 8.5, 2 응용 프로그램은 동일한 응용 프로그램 풀을 사용하는 공통 DLL입니다). ("cache items are stored in memory" 넘어서) 문서는 매우 어렵습니다. 사실 유일한 설명 부분은 what @Thies stated above이었습니다. 그러나 그는 캐시가 DLL의 할당 된 메모리에 저장되어 있기 때문에 이것이라고 생각합니다 (따라서 우리는 여전히 one process but two app domains을 가지고 있습니다). DLL은 두 응용 프로그램 도메인에 별도로로드되며 DLL의 메모리는 공유되지 않습니다.

관련 문제