2010-08-11 2 views
17

ASP.NET MVC 응용 프로그램 웹 팜을 준비하는 가장 효율적인 방법은 무엇입니까?ASP.NET MVC 응용 프로그램 만들기 웹 팜 준비

가장 중요한 것은 조회 항목 (주, 거리 유형, 카운티 등)과 같은 현재 사용자의 정보 (컨텍스트)와 캐시되지 않은 개체를 공유하는 것입니다.

MemCache에 대해 들어 보았습니다 만 구현하고 테스트하는 방법에 대한 간단한 적용 방법 (문서)을 보지 못했습니다.

답변

21

요청 컨텍스트
웹 팜에 요청하는 요청은 사용 가능한 IIS 서버에서 처리합니다. 컨텍스트가 생성되고 전체 요청이 동일한 서버에 의해 처리됩니다. 따라서 문맥이 문제가되어서는 안됩니다. 요청은 상태 비 저장 실행 파이프 라인이므로 모양이나 형식에 관계없이 다른 서버와 데이터를 공유 할 필요가 없습니다. 그것은 동일한 기계에 의해 처음부터 끝까지 제공 될 것입니다.
사용자 정보가 쿠키에서 읽히고 요청을 처리하는 서버에서 처리됩니다. 그것은 당신이 어딘가에 완전한 사용자 객체를 캐시한다면 그때에 달려있다.

세션
당신이 TempData 사전을 사용하는 경우가 Session 사전 내부에 저장되어 있음을 알고 있어야합니다. 서버 팜에서는 InProc 세션 이외의 다른 수단을 사용해야 함을 의미합니다. 이는 팜 전체에서 IIS 서버간에 공유되지 않기 때문입니다. DB 나 다른 서버 (State server 등)를 사용하는 다른 세션 관리자를 구성해야합니다.

캐시
캐시와 관련해서는 다른 이야기입니다. 가능한 한 효율적으로 처리하려면 캐시도 제공해야합니다. 기본적으로 그렇지 않습니다. 그러나 캐시를 살펴보면 캐시가 없을 때이를 캐시에 저장해야한다는 것을 의미합니다. 따라서 특정 서버 팜 서버에 캐시 개체가 없으면 캐시 서버가 만들어집니다. 시간이 지남에 따라 모두 공개적으로 사용되는 공유 데이터를 캐시합니다.
또는 ... memcached (언급했듯이)과 같은 라이브러리를 사용할 수 있으며 공유 캐시를 이용할 수 있습니다. 그물을 사용하는 방법에 대한 몇 가지 예가 있습니다.

그러나 이러한 솔루션은 다른 경우 아무것도없는 경우 네트워크 및 세 번째 프로세스 처리 및 데이터 가져 오기 등 여러 가지 추가 오버 헤드가 발생합니다. 따라서 기본 캐시가 가장 빠르며 명시 적으로 공유 캐시가 필요하다면 하나를 결정하십시오. 필요하지 않으면 캐시를 공유하지 마십시오.

관련 문제