문제

우리가 만든 공통 비즈니스 객체를 사용하는 ASP.NET 응용 프로그램이 있습니다. 이러한 비즈니스 객체는 몇 가지 다른 Windows 서비스 또는 콘솔 응용 프로그램에서도 사용됩니다.

내가 실행중인 문제는 클래스 "foo"와 클래스 "bar"가 있고 각각 함수 loadclient ()가있는 경우 foo.loadclient () 및 bar.loadclient ()를 호출하면 각 요청이 적용된다는 것입니다. 데이터베이스. 나는 일종의 캐시를 구현하면 DB 로의 불필요한 라운드 트립을 줄일 수 있다고 생각합니다.

여기에 캐치가 있습니다. 캐시가 ASP.NET 앱에 들어있는 각 HTTP 요청에 따라 특정하기를 원합니다. 즉, 새로운 요청은 새로운 캐시를 얻습니다. 캐시는 90%가 유틸리티이기 때문에 다른 콘솔 애플리케이션의 수명 동안 존재할 수 있습니다.

System.web.cache를 사용할 수는 있지만 System.Web 라이브러리에 내 미들웨어가 연결되어 싶지는 않습니다.

설명하기를 바랍니다. 누구든지 나를 올바른 방향으로 가리킬 수 있습니까? 감사!

도움이 되었습니까?

해결책

요청의 수명 동안 개체를 재사용하고 있습니까? 그렇지 않다면, 당신이 가진 모델은 각 postback이 캐시의 필요성을 없애는 새로운 객체 세트를 생성 할 것을 제안합니다. 일반적으로 캐시는 요청에 따라 개체가 공유 될 때 값이 있습니다.

비 웹 특정 캐싱 솔루션을 사용하는 한 Microsoft 캐싱 애플리케이션 블록은 매우 강력하고 사용하기 쉽습니다.

다른 팁

Velocity Project에서 전리품을 가져갈 수 있다고 생각합니다.

http://msdn.microsoft.com/en-us/data/cc655792.aspx - 간단한 기사가 있습니다

귀하가 간행물 캐싱을 찾고 있다면 어렵습니다.

그러나 미들웨어가 System.Web에 연결되기를 원하지 않으면 미들웨어와 System.Web 사이의 브리지 역할을하는 하나의 인터페이스 라이브러리를 작성할 수 있습니다.

미래에 다른 캐시 관리자와 연결하려면 Bridge Interface 라이브러리를 다시 작성하여 미들웨어를 실제 캐시 관리자와는 완전히 독립적으로 유지할 수 있습니다.

System.Runtime.Caching.MemoryCache는 System.Web.Caching 대신 Microsoft에서 권장합니다. Abhijeet Patel이 제안한 MS 캐싱 애플리케이션 블록의 맥락에서 사용할 수 있습니다.

보다:

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top