0

영어로 죄송합니다. 나는이에 대한 몇 가지 조사를 한 후 Multiple ViewModels request same domain object, should I give them the same/different instance(s)?여러 개의 ViewModels가 동일한 도메인 객체를 수정합니다.

, 내 앞의 질문이 너무 혼란 깨달았다, 그래서 나는이 새로운 질문을 게시 :로

나는 이전에이 질문을 기록했다.

10 억 명의 사람들의 정보를 관리하기 위해 WPF 데스크톱 응용 프로그램을 만들고 싶습니다. 최종 사용자 (me)는 하나 뿐이며 모든 데이터는 로컬 컴퓨터 (SQL Server/MySQL)에 저장됩니다. Visual Studio, Autofac, NHibernate를 사용하고 MVVM, DI, DDD 패턴을 구현하려고합니다.

동일한 사람이 여러 개의 창, 탭, 목록, 콤보 상자, 텍스트 블록 등 여러 위치에 동시에 표시 될 수 있습니다 ... 각 목록에는 수천 명이 포함될 수 있으며 전체 응용 프로그램에는 10-100 개의 목록이있을 수 있습니다. 목록의 내용 (사람)이 자주 업데이트됩니다. 목록의 설정을 변경할 때마다 목록이 비우고 다른 수천 명의 새로운 사람이 가득합니다..

문제는 : 하나의 목록에서 사람 (예 : 이름 변경)을 수정하면 다른 모든 목록에 변경 사항을 적용하는 방법은 무엇입니까? 각 사람에 대한

  1. 전체 응용 프로그램을 통해 단일 인스턴스를 사용

    나는이 문제를 해결하는 두 가지 방법이 있다고 생각합니다. 이를 구현하기 위해 응용 프로그램을 통해 단일 UnitOfWork를 사용할 수 있지만이 접근 방식이 메모리 누수의 원인이 될 것 같습니다.

  2. 각 사람마다 여러 인스턴스를 사용하십시오 (목록 당 하나의 인스턴스). 이를 구현하기 위해서는 각 목록마다 하나의 UnitOfWork를 사용해야한다고 생각합니다. 모든 사람 인스턴스를 동기화하는 방법을 찾아야합니다. Berryl 언급 이벤트 수집기. 누가 이벤트를 발표하고 등록해야합니까?

나는 here에서 매우 비슷한 질문을 발견하고, 또한 다음과 같은 기사를 읽고,하지만, 난 여전히 혼란 느낌 :

감사합니다!

답변

2

세션간에 엔티티 인스턴스를 공유하지 마시고 데스크톱 앱에 대해 단일 세션을 사용하지 마십시오.

보통 ViewModels는 개별 비즈니스 대화의 일부이므로 VM 당 하나의 세션이있을 수 있습니다.

각 ViewModel은 받아들이는 이벤트를 등록해야하며 생성 된 이벤트를 게시해야합니다. 대안은 서비스/비즈니스 계층 수준에서 게시하는 것입니다. 아키텍처에 가장 적합한 아키텍처가 무엇인지 확인해야합니다.

관련 문제