ORM을 사용하기 전에 우리는 항상 서비스 계층에서 객체 캐싱을 수행했습니다. 이로 인해 캐싱 구현을 변경하지 않고도 서로 다른 데이터 레이어간에 전환 할 수있었습니다.엔티티 프레임 워크와 NHibernate - 여전히 서비스 계층 책임을 캐시하고 있습니까?
요즘 우리는 Entity Framework (주로 코드 우선)와 NHibernate를 모두 사용합니다. NHibernate는 이용 가능한 몇몇 2 차 레벨 캐시 제공자들과 함께 훨씬 더 나은 캐싱 기능들을 가진 것으로 보인다.
내가 직면 한 또 다른 문제는 위의 두 ORM 모두에서 지연로드 속성을 사용한다는 것입니다. 따라서 캐시에서 객체를 가져 오는 경우 일반적으로 현재 ObjectContext/ISession에 다시 첨부해야합니다. 서비스 계층에서는 실제로 할 수 없습니다.
그럼 실제로 리포지토리/데이터 레이어에서 캐싱을 구현해야합니다. EF와 NH의 공통적 인 해결책을 찾을 수 있을까요?
감사 벤
안녕하세요 크레이그, 링크 해 주셔서 감사합니다. Udi의 비디오 덕분에이 문제를 해결할 수있었습니다 (http://bit.ly/d29jZU). CQRS는 웹/전자 상거래 응용 프로그램에 적합합니다. 특히 "부실한"(제품 정보), 개인화 된 (카트, 프로필) 및 라이브 (가능한 한 많이 살 수있는 주식 레벨) 데이터. Udi는 문제가 발생하면 명령을 전달하고 비동기 응답을 발행하는 방법에 대해서도 이야기합니다. 일반적으로 웹 응용 프로그램에서 구현하기 쉽지 않은 문제입니다. –
음, amazon.com은 이러한 것들 ("결국 일관성")을 개척했기 때문에 그렇습니다. 전자 상거래에서는 괜찮습니다. 분명히, 당신은 오래 될 수있는 것과 그렇지 못할 수있는 것을 선택해야합니다. 하지만 요점은 기술적 고려 사항이 아니라 사업이라는 점입니다. –
기존 응용 프로그램에 추가 할 수있는 것이거나 코드 작성을 시작하기 전에 실제로 그러한 아키텍처상의 결정을 내려야합니까? 분명히 중요한 의미없이 언제든지 http 캐싱과 같은 기능을 추가 할 수 있습니다. –