この質問を書いている間:AppDomain, handling the exceptions私はまた別の質問を考えました。AppDomain、アセンブリ.exeまたは.dllを実行していますか?
上記のようなプラグインアプリを作成する場合は、あなたは、実行ファイルまたはライブラリとしてプラグインを書くことに行きますか?
AppDomain.ExecuteAssembly(String)
メソッドで実行される動的にロードされた実行可能ファイルに対して、どのくらいの制御がありますか? AppDomain.CreateInstanceAndUnwrap(String, String)
を使用してオブジェクトのインスタンスを作成するのではなく、
私は現在、CreateInstanceAndUnwrap
の後に呼び出されるStart/Run + Stop + Initメソッドを備えたインターフェイスを持っています。実行されたアセンブリバージョンと同じタイプのコントロールを使用しますか?後者を使用する場合、どうすればそのプラグインを動的に停止することができますか?
まったく間違った方向に考えていますか?
[編集後の質問]
Basicly我々は '1' のアプリケーション、および複数の機能を得ました。 (映像)DVD)写真/ビデオカメラから
- POS
- ストレージサーバ、バックアップ/ configsettings /画像+動画として機能 レポジトリ
- 複数のディスプレイ上に写真/ビデオを表示する
- などが、これらは主要な「機能」であり、
コンピュータは複数のタスク/プラグインを実行できます。たとえば、画像ダウンロード/表示/印刷システム全体を1台のコンピュータで処理することができます。または、複数のダウンロード/表示システムを備えた1台の集中型印刷コンピュータを使用することもできます。それを再起動する必要があり、メールがオフィスに送信されなければならない何らかの理由でプラグインがクラッシュした場合
すべてが
をソケットを介して通信されます。同じクラッシュが短い時間枠で複数回発生する場合は、何らかの緊急メールを送信し、そのプラグインをシャットダウンしてオペレータに通知する必要があります。
これらの関数の中にはthirdpartyアンマネージドコードを使用するものがあり、C++ /ネイティブで書かれたものとC++/CLIで書かれたものがあり、C#で書かれたものもあればC#で書かれたものもあります。
edit2 さらに、この追加機能をシステムに追加します。そのプラグインの新しいバージョンが利用可能になるとすぐにプラグインを自動的に更新することです。親AppDomain/threadは定期的に更新をチェックし、更新が見つかった場合はそのプラグインをアンロードし、新しいバージョンをダウンロードして再度起動する必要があります。この具体的な理由から私はAppDomainを使う必要があると思う。
IIRC .NET Exeファイルは、ブートストラップ(C++)を持つ.NET DLLであり、エントリポイントがどこにあるかをブートストラップに伝えるマニフェストです。「管理者権限で私を実行してください」 – Aren
これは、この「プラグイン」が行う必要があります。もう少し私たちを啓発するためのケア? –
あなたのリクエストに追加情報を追加しました。@ csharptest.net –