2009-09-25 7 views
1

우리가 만든 공통 비즈니스 개체를 사용하는 ASP.net 응용 프로그램이 있습니다. 이러한 비즈니스 개체는 다른 Windows 서비스 또는 콘솔 응용 프로그램에도 사용됩니다.C#에서 미들웨어 캐싱을위한 솔루션이 필요합니다.

나는 foo.loadClient() 및 bar.loadClient()를 호출하면 "foo"클래스와 "bar"클래스가 있고 각각 loadClient() 함수가있는 문제는, 각 요청은 데이터베이스에 도달합니다. 나는 일종의 캐시를 구현하는 것이 불필요한 왕복 여행을 줄이는 것이라고 생각합니다.

다음은 catch입니다. ASP.net App에서 제공되는 각 HTTP 요청에 대해 캐시를 지정해야합니다. 즉, 새로운 요청은 새로운 캐시를 얻습니다. 캐시는 90 %가 유틸리티이기 때문에 다른 콘솔 응용 프로그램의 수명 동안 존재할 수 있습니다.

저는 System.Web.Cache를 사용할 수 있지만 System.Web 라이브러리에 연결된 미들웨어는 원하지 않습니다.

희망 사항. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까? 감사합니다.

답변

1

요청이 지속되는 동안 개체를 재사용 하시겠습니까? 그렇지 않은 경우, 각 포스트 백이 사실상 캐시의 필요성을 없애는 새로운 객체 세트를 생성 할 것이라고 제안하는 모델이 있습니다. 일반적으로 캐시는 요청간에 객체가 공유 될 때 가치가 있습니다.

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

+0

감사합니다. MS Caching Application Block에 대해 살펴 보겠습니다. 우리는 System.Web.Cache의 일부 사용을 가능하게합니다. 그러나 각 요청, 특히 미들 티어에서 DB로부터 끌어낼 물건이 있습니다. 하나의 요청이 5 개의 다른 액션을 수행하고 각각의 액션이 DB에서 동일한 객체를로드하면 DB에서 객체를 한 번로드해야합니다. 우리는로드 밸런싱 된 웹 서버를 가지고 있기 때문에 한 요청에서 DB의 개체를 여러 번로드하면 일치하지 않는 데이터가로드 될 수 있습니다. – Jonathan

0

프로세스 간 캐싱을 찾고 있다면 어렵습니다.

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

향후 다른 캐시 관리자와 연결하려는 경우 미들웨어를 실제 캐시 관리자와 완전히 독립적으로 유지하면서 브리지 인터페이스 라이브러리를 다시 작성할 수 있습니다.

1

Velocity 프로젝트에서 전리품을 가져갈 수 있다고 생각합니다.

http://msdn.microsoft.com/en-us/data/cc655792.aspx 일 - System.Runtime.Caching.MemoryCache은 System.Web.Caching 대신에 마이크로 소프트에 의해 추천 된 간단한 기사

관련 문제