私は何百ものコンピュータにインストールされる私の組織のためのサービスを作成しています。その実装は時間の経過とともに変更する必要があるかもしれません。見て、MEFについて少し読んだ後、私はまだ少し失われています。もし私がdllをサービスフォルダにドロップして、そのサービスが変更を受け取るようにしたいのであれば、MEFは良い考えですか?管理された拡張性フレームワーク
答えて
私はMEFでかなりのことをしました。はい、MEFは警告で、あなたが探しているものでしょう...
- あなたランタイム
- で発見し、新しいDLLで負荷することができますしかし、それは同じアプリケーションドメインにロードしますメインアプリケーションので、
- あなたはないアンロードまたはアプリケーションその最後の点が問題となる場合は
を再起動せずにDLLを変更するには、MAFを考慮することができる(それははるかに重いのですが)。しかし、MAFでは、拡張機能を別のアプリドメインにロードします。
他のオプションは、要求を処理する別のプロセスを生成し、それにコマンドラインパラメータを渡すことです。
ありがとうございます。再起動は問題ではありません。 – Jesse
私はあなたがサービスロジックを別のクラスライブラリに持っていて、別のクラスライブラリに必要な契約インタフェースを持っているなら、これを行うことができると思います。その後、ディレクトリカタログを作成し、MEFを使用してサービス実装をインポートすることができます(契約インタフェースアセンブリのみを参照する必要があります)。変更された場合は、新しいDLL /サービスの実装を取得することができます。ディレクトリウォッチャー(FileSystemWatcher)が必要な場合は、ディレクトリウォッチャーが起動するときにカタログの更新メソッドを呼び出す必要があります。理論的にはうまくいくはずですが、単なるアイデアです。 :)とにかく、これが助けて欲しい。
私はMEFについて熟練していません。ドキュメンテーションによると、Mefはプラグインベースのシステムを作ることです。あなたのシステムはいくつかのインターフェースを期待しており、MEFはこれらのインターフェースをシステムに実装するためのクラスをインポートしやすくします。あなたのケースはこれに適しています。 MEFにはディレクトリカタログがあり、カタログを使用することにより、タイプ/ dllランタイムをインポートできます。
またPrismに見ることができます。私が理解していることから、彼らはほとんど同じことをするための2つの異なるフレームワークです。 Prismでは、IModuleインターフェイスを実装するdllクラスを持つことによって、モジュールを作成できます。 MEFのように、dllをフォルダにドラッグアンドドロップするだけです。静的または動的にモジュールをロードしたり、私が知らない他の多くのことを行うことができます。
プリズムには、Unity Dependency Injection Container(私は「The Magical Black Box」と呼ぶのが好きです)、きちんとしたイベントやコマンド体系などもあります。MEFには物事も。
VS2010を使用している場合は、まず1回クリックしてみることをおすすめします。 setup.exeが提供されますが、HTMLファイル(およびその他のファイル)、IISサーバーまたはFTPサイト、またはローカルネットワーク上の共有フォルダにアップロードすることもできます。つまり、デプロイメントを構成するときには、サイトから直接すべてのクライアントを自動的に更新するようにインストーラに指示できます(HTMLファイル、ftpまたはlan共有フォルダ)。ユーザーがアプリケーションを起動すると、サイトに接続し、存在する場合は更新を要求し、存在する場合は、アプリケーションが自己更新します。更新プログラムを展開する場合は、HTMLファイルとそのフォルダ内の他のすべてのファイルだけを再度アップロードする必要があります。
このリンクをチェックアウト:
http://msdn.microsoft.com/en-us/library/ms953320.aspx
コーディングハッピー;)
- 1. 管理された拡張性フレームワークとボットフレームワークの使用
- 2. .NETの管理拡張フレームワークはどちらですか?
- 3. バックパック管理の拡張ArticleCrudController
- 4. 拡張管理テンプレートdjangoで
- 5. 拡張Djangoの管理テンプレート
- 6. ニュース管理バックエンドモジュールを拡張する
- 7. djangoでのユーザー管理フォームの拡張
- 8. WordPress管理タグクラウド自動拡張
- 9. django:拡張クラスの管理インターフェース
- 10. プラグイン管理のWP_List_Table/handlingチェックボックスオプションの拡張
- 11. コアライブラリと拡張ライブラリのバージョン管理
- 12. django管理用テンプレートを拡張する
- 13. 拡張された拡張エラー
- 14. クラス拡張とフレームワーク
- 15. 管理されたC++/CLIからのC#拡張メソッドの使用
- 16. Joomla!拡張機能マネージャ:管理私は拡張マネージャの管理]セクションをロードしようと時間の
- 17. 管理パネル作成のためのYii拡張
- 18. Microsoft拡張フレームワーク - MEF CompositionContainer
- 19. Ajax.Net拡張フレームワークのIndexOutOfRangeException
- 20. PHPのYiiフレームワーク - プライベートメッセージング拡張
- 21. コンパクトなフレームワークから管理されたコールスタックを分析する
- 22. Magentoの管理者拡張がライブサーバーのメニューバーに表示されない
- 23. GWT/GIN/GUICEに基づくフレームワークの拡張性
- 24. VS2010拡張性:カスタムドキュメントフォーマット
- 25. WCF ServiceAuthenticationManager拡張性
- 26. 反応性拡張
- 27. イベントハンドラと拡張性
- 28. ユーザーを管理するためのフレームワーク
- 29. カスタムテーブルを管理するためのフレームワーク
- 30. auth.Userモデル、プロキシフィールド、およびDjango管理者を拡張する
あなたは、 "変更を拾う" ことで、正確に何を意味するのですか?モジュールを再コンパイルせずにアプリケーションに追加したいのですか?または、アプリケーションを再起動せずに変更しますか?または、他の何か? –
コンパイルせずにアプリケーションを変更したい場合は、サービスを削除して、サービスを再インストールしてください。 100以上のインストールでこれは必須です。 – Jesse