2011-03-04 2 views
4

저는 수백 대의 컴퓨터에 설치할 조직 용 서비스를 만들고 있습니다. 구현은 시간이 지나면 변경해야 할 수도 있습니다. MEF에 관해 조금이라도보고 보았던 후에 나는 아직도 조금 길을 잃는다. dll을 서비스 폴더에 넣고 해당 서비스가 변경 사항을 선택하도록하려면 MEF가 좋은 방법일까요?Managed Extensibility Framework

+0

는 "변경 사항을 선택"에 의해 정확히 무엇을 의미합니까? 모듈을 다시 컴파일하지 않고 응용 프로그램에 모듈을 추가 하시겠습니까? 또는 다시 시작하지 않고 응용 프로그램을 변경 하시겠습니까? 또는 다른 것? –

+0

컴파일하지 않고 서비스를 제거하고 서비스를 다시 설치하여 응용 프로그램을 변경하고 싶습니다. 100 개 이상의 설치가 필요합니다. – Jesse

답변

3

나는 MEF를 꽤 많이했다. 예, MEF는 발견 할 수 있으며

  • 그러나 런타임에 새 DLL에 부하가,이 같은 응용 프로그램 도메인으로로로드 ... 당신이주의해야 할 점으로, 무엇을 찾고 있는지

    • 당신을 할 것입니다 주요 응용 프로그램 때문에,
    • 당신은 하지 언로드하거나 응용 프로그램이 마지막 지점이 문제가 될 경우에는

    를 다시 시작하지 않고 DLL을 변경할 수는 MAF를 고려할 수 있습니다 (이 훨씬 무거워 있지만). 그러나 MAF에서는 확장 프로그램을 별도의 앱 도메인에로드합니다.

    다른 옵션은 요청을 처리 할 다른 프로세스를 생성하고 명령 줄 매개 변수를 전달하는 것입니다.

  • +0

    Clarifying을 가져 주셔서 감사합니다. 다시 시작하는 것이 문제가되지 않아야합니다. – Jesse

    0

    분리 된 클래스 라이브러리에 서비스 논리가 있고 다른 클래스 라이브러리에 필요한 계약 인터페이스가있는 경우이 작업을 수행 할 수 있다고 생각합니다. 그런 다음 디렉토리 카탈로그를 만들고 MEF를 사용하여 서비스 구현을 가져올 수 있습니다 (계약 인터페이스 어셈블리 만 참조하면됩니다). 변경된 경우 새 dll/service 구현을 선택할 수 있습니다. 디렉토리 워처 (FileSystemWatcher) 만 필요하면 디렉토리 워처가 실행될 때 카탈로그의 새로 고침 메소드를 호출해야합니다. 이론적으로는 효과가 있지만 아이디어 일뿐입니다. :) 어쨌든, 이것이 도움이되기를 바랍니다.

    0

    저는 MEF에 대해 전문가가 아닙니다. 설명서에 따르면 Mef는 플러그인 기반 시스템을 만드는 것입니다. 따라서 시스템에서 일부 인터페이스를 예상하고 MEF는 이러한 인터페이스를 시스템에 구현하는 가져 오기 클래스를 쉽게 만듭니다.이 경우에는 적절한 것으로 보입니다. MEF에는 디렉토리 카탈로그가 있으며 카탈로그를 사용하여 유형/dll 런타임을 가져올 수 있습니다.

    How do I get a MEF Directory catalog looking at the same directory for both the Servicelayer and DAL?

    0

    는 또한 Prism에 볼 수 있었다. 내가 이해하는 것으로부터, 그들은 똑같은 일을하는 두 가지 틀입니다. Prism을 사용하면 IModule 인터페이스를 구현하는 dll 클래스를 사용하여 모듈을 만들 수 있습니다. MEF 에서처럼 dll을 폴더로 드래그 앤 드롭 할 수 있습니다. 정적으로 또는 동적으로 모듈을로드하고 내가 모르는 다른 많은 작업을 수행 할 수 있습니다.

    프리즘에는 또한 Unity Dependency Injection 컨테이너 (필자는 "The Magical Black Box"라고 부름), 깔끔한 이벤트 및 명령 시스템 등이 번들로 포함되어 있습니다. MEF에는이 모든 것이 있습니다. 너무.

    1

    VS2010을 사용하는 경우 먼저 한 번 클릭하는 것이 좋습니다. setup.exe를 제공하지만 IIS 서버 나 FTP 사이트 또는 로컬 네트워크의 공유 폴더에도 업로드 할 수있는 HTML 파일 (및 기타 파일)을 제공합니다. 즉, 배포를 구성 할 때 설치 프로그램이 사이트 (HTML 파일, ftp 또는 lan 공유 폴더)에서 직접 모든 클라이언트를 자동 업데이트하도록 지시 할 수 있습니다. 사용자가 응용 프로그램을 시작하면 사이트에 연결하여 업데이트가 있는지 묻고, 업데이트가 있으면 업데이트를 자동으로 업데이트합니다. 업데이트를 배포하려면 HTML 파일과 폴더의 다른 모든 파일 만 다시 업로드하면됩니다.

    체크 아웃이 링크를 :

    http://msdn.microsoft.com/en-us/library/ms953320.aspx

    http://weblogs.asp.net/shahar/archive/2008/01/29/how-to-use-clickonce-to-deploy-your-applications.aspx

    해피 코딩)

    관련 문제