breeze.js의 문서 (훌륭한 문서)를 읽었지만 EntityManager에 대한 의문점이 있습니다.breezejs의 EntityManager는 어떻게 작동합니까?
가정하자 나는이 다음과 같은 공장 방법 : 전화
em1.saveChanges();
이 너무 변경 사항을 저장 em2
않는 경우
em1 = createManager();
em2 = createManager();
:
var createManager = function() {
return new breeze.EntityManager({
serviceName: serviceName,
metadataStore: store
});
};
가 그럼 난 두의 EntityManager의 인스턴스를 정의?
em1
과 em2
은 동일한 캐시를 공유합니까?
그렇지 않으면 싱글 톤 EntityManager를 만들어야합니까? 내 프로젝트에서 여러 장소에서 EntityManager에 액세스하고 엔티티를 교환하므로 가장 적합한 (또는 올바른) 아키텍처가 무엇인지 잘 모르겠습니다.
존 감사합니다! 나는 너의 충고를 따를 것이다. 당신이 말한대로, "라비 올리를 분리하라"! –
당신이 맞습니다, 존. 두 관리자는 독립적이며 자체 캐시를 가지고 있습니다. 그들이 공유하는 것은 (a) 동일한 서비스에 대한 대화이며 (b) 동일한 메타 데이터 저장소를 공유하는 것입니다. 저장소를 공유한다는 것은 메타 데이터에 대해 서버를 한 번만 방문한다는 것을 의미합니다. 별도의 관리자는 변경 사항을 분리 할 때 유용합니다 (예 : em1에서 고객의 "샌드 박스"편집). 그 변경 사항은 em2의 엔티티에 바인드 된 UI에는 표시되지 않습니다. 그것은 또 다른 날을위한 주제입니다. – Ward
@BernardoPacheco - 나는 당신의 의도를 간과했다. 존의 제안은 좋은 것입니다. 많은 앱 (아마도 여러분의 앱)은 하나의 관리자 만 필요합니다. 모든 ViewModel이 모듈 패턴을 사용하여 찾을 수있는 관리자를 지정하십시오. 더 나아가 John이 "datacontext"모듈에 해당 관리자를 제안하고 캡슐화하고 필요로하는 다른 모듈에서 해당 모듈을 사용할 수 있도록하십시오. John은 Pluralsight 과정에서 모듈성의 좋은 예를 보여줍니다. – Ward