요즘 웹 응용 프로그램에서 처음부터 새로운 응용 프로그램을 빌드합니다.
(기술은 Asp.Net
하고 내가 사용하고있어 ORM은 Entity Framework
이다.이 중요한 경우) 요청 당 널리 사용되는 패턴 세션이 정말 좋은 경우"요청 당 세션"패턴이 캐시를 활용합니까? ("세션 당 세션"또는 "요청 당 세션")
내가 불확실 해요.
이 패턴의 장점은 데이터베이스 세션이 너무 크고 비효율적 일 때까지 캐시가 증가하지 않는다는 것입니다.
그러나 모든 요청마다 새로운 세션이 너무 많지 않습니까? 즉, 모든 서버 호출이 캐시를 재설정한다는 것을 의미합니다. 자동 완성과 같은 간단한 아약스 요청에도 새로운 캐시가 있습니다. 사실 캐시가 재설정되는 모든 키 스트로크에 해당합니다.
한 요청에서 동일한 object-entity-row를 쿼리 할 가능성이 적습니다.
아니요 세션 당 세션은 더 나은 패턴입니까? 두 장점을 모두 가지고 있습니다.
- 캐시가 영원히 성장하지 않습니다. 캐시가 실제로 사용할 수 있습니다
- ...
그래서 ... 왜 요청 당 세션이 널리 사용되며, 세션 당 세션이 아닌가요?
부연 설명 : 내가 ORM 세션을 썼을 때
- 은 모두
NHibernate's session
및EntityFramework's DbContext
에 적용됩니다. - 각 요청마다 세션 \ dbcontext의 플러시 - 커밋 - SaveChanges를 의미합니다.
1. 예 ** EntityFramework ** -'DbContext' ** NHibernate ** - _session_을 쓸 때의 세션; 마지막 응용 프로그램은 Nhibernate를 사용합니다 ... 2. 더티 데이터에 관해서는 각 요청마다 세션 \ dbcontext의 플러시 - 커밋 - SaveChanges를 의미합니다. – gdoron
예기치 않은 저장 관련 - 이전 요청이 실행 중일 때 - 데이터가 수정되었지만 아직 제출되지 않은 경우 다른 요청이 표시 될 수 있으며 첫 번째 요청 전에 제출을 호출 할 수 있습니다. 그러나 ORM이 세션 인스턴스에 대한 동시 및 스레드 안전 액세스를 지원하는 경우 세션 당 일반 세션에서 솔루션이 될 수 있습니다. 하지만 성능이 훨씬 좋아질 것이라고는 생각하지 않습니다. – STO