2012-03-26 5 views
0

플러그인을로드 할 수있는 애플리케이션을 작성해야합니다. PRISM 4 문서를 읽고 프레임 워크의 "지역"개념을 좋아합니다. 그러나 모든 모듈은 첫 번째 AppDomain에로드됩니다.하지만 타사 플러그인이 전체 앱을 손상시키지 않고 충돌 할 수있는 응용 프로그램을 구축해야합니다. (여러 응용 프로그램 도메인이 최상의 솔루션이라고 생각합니까?)자신의 AppDomain에있는 WPF 모듈/플러그인 - 프레임 워크 지원?

아무도 경험이 없습니다. 그 화제? 내가 직접 MVVM 라이트 위에 빌드해야합니까? PRISM 4는 내가 찾는 도구입니까?

감사와 안부

본인이 아는

답변

1

가 인기 MVVM 프레임 워크 (프리즘, Caliburn, 칼슘 등) 중 어느 것도 마찬가지로 중요한 것은, 크로스 응용 프로그램 도메인 모듈의 수명주기를 지원하지 않으며, 상호 응용 프로그램 도메인 메시징 상자 밖으로. 이것은 그들 중 하나를 사용자 정의하는 것은 불가능이 아니다 말했다 : 모듈이 아마도 일부 구성 옵션에 대한 기반으로, 다른 응용 프로그램 도메인에로드 할 수 있도록

  • ;
  • 메시지가 다른 appdomain으로 직렬화되도록 메시징 구성 요소 (예 : Prism의 이벤트 수집기)에 대한 원격 프록시를 만듭니다. 하나

는 Prism4 너무 너무 열심히하지 않는 DLL을로드하고 다른 응용 프로그램 도메인에 자신의 진입 점을 initalising 그 부트 스트 래퍼, 모듈 카탈로그 및 서비스 로케이터 구성 요소에 대한 여러 확장 포인트를 할 수 있습니다. 이벤트 수집기의 원격 프록시를 만드는 것은 좀 더 복잡합니다.

저는 개인적으로 동일한 프로세스 도메인 에서뿐만 아니라 동일한 appdomain 내에서 작동하는 다른 메시지 브로커를 만드는 데 의존해 왔지만 처음부터 작성해야했습니다.

+0

IPC를 메시지 프로토콜로 사용 했습니까? WPF와 MAF를 사용하기가 어렵습니까? – damike

+0

Inter-Process에 Memory Mapped Files를 사용했습니다. 읽기/쓰기 액세스를 동기화하고 마지막으로 기록 된 바이트 (4 또는 8 바이트)의 인덱스를 저장하는 전용 메모리 영역을 유지하려면 약간 더 많은 코딩이 필요합니다. –

+0

WPF 및 MEF 사용 : 그리 어렵지 않습니다. Prism과 Caliburn 모두 MEF와의 통합을 제공합니다. [MEFContrib] (http://mefcontrib.codeplex.com/)는 두드러진 노력입니다. Google "Caliburn Micro MEF"를 통해 Caliburn에서 유사한 프로젝트를 얻을 수 있습니다. –