4


2

Managed Extensibility Frameworkを使用したサンドボックスプラグイン

サードパーティの開発者がプラグインを作成できるアプリケーションに取り組んでいます。 私はManaged Extensibility Frameworkを少し見てきましたが、それは正しい方法のようです。

ただし、プラグインがアプリケーションの残りの部分に自由にアクセスするのを防ぎたい(シングルトンなどを呼び出す)が、何らかのインターフェイスを介した通信に制限したい場合、理想的には、各プラグインは他のプラグインとユーザーデータ、これを達成する良い方法はありますか?

私がそうしなければ考えられることは、セキュリティ文字列を各メソッドに渡し、コードから地獄を難読化することだけですが、それはitい解決策のようです:P

1 Answer


4


必要なのは、プラグインのサンドボックスとなる新しいhttp://msdn.microsoft.com/en-us/library/system.appdomain.aspx [AppDomain]ですが、MEFはエクスポートの読み込みをサポートしていないと思いますこの時点で別の「AppDomain」に追加します(これが当てはまらない場合、誰かが私を修正すると確信しています)。

これが深刻な懸念事項である場合は、http://msdn.microsoft.com/en-us/library/bb384241.aspx [System.Addin]名前空間のビットを使用することを検討し、httpでこのセクションを参照してください。詳細については、// msdn.microsoft.com/en-us/magazine/cc163476.aspx#S3 [アクティベーション、分離、セキュリティ、およびサンドボックス]を参照してください。 これは、MEFよりもはるかに堅牢で安全な代替手段ですが、柔軟性がはるかに劣ります。

Update:Kent Boogaartにはhttp://kentb.blogspot.com/2009/02/maf-and-mef.html [ブログ投稿]があり、MEFとMAFを一緒に使用する方法を示しています。