Eclipse プラグイン フレームワークに匹敵するプラグイン ベースのアプリケーション フレームワークを探しています。
- コアプラグイン管理フレームワーク(Equinox / OSGI)。拡張エンドポイントを宣言し、それらのエンドポイントにサービスを提供するプラグインを検出してロードする機能を提供します。(これは Dependency Injection とは異なりますが、確かに違いは微妙です。構成は高度に分散化されており、バージョン管理の問題があり、オンライン プラグイン リポジトリが含まれる可能性があります。私にとって最も重要なことは、ユーザーが簡単に追加できることです。基礎となるアーキテクチャ/構成ファイルについて何も知る必要のないプラグイン)
- 同時実行サポート、コマンド、設定シート、メニュー、ツールバー、キーバインディングなど を備えた基本的なワークベンチシェルを提供するプラグインの多くのレイヤー。
これは RCP の表面をなぞっただけであり、それ自体がアプリケーションの基盤として機能することを意図しており、さらに多くのプラグインを作成/アセンブルして構築します。
ここ数日、ネットで拾ってきた情報…
私の知る限り、Java 用の Eclipse RCP の堅牢性と成熟度に遠く及ばないものは .NET の世界にはありませんが、1 番または 2 番のいずれかをうまくこなす候補がいくつかあります。
(WinForms と WPF のどちらを選択するかについて最終的な決定を下していないことにも言及しておく必要があります。そのため、候補となるフレームワークでの UI 結合のレベルも理解しようとしています。プラットフォームの結合とソース コードのライセンスについても疑問に思っています)。
オープンソースのものは一般に文書化されていませんが理解しやすいと言わざるを得ませんが、MS のものは通常より多くの文書がありますがアクセスしにくいため、MS テクノロジの多くでは、それらが実際に何をしているのか疑問に思っています。 、実用的な意味で。
これらは私が見つけたライブラリです:
SharpDevelop
私が最初に見たのは、#1 と #2 の両方を基本的な方法で実行する SharpDevelop でした (立派な SharpDevelop への侮辱ではありません - Eclipse RCPよりも基本的なことを意味します)。ただし、SharpDevelop はフレームワーク以上のアプリケーションであり、そこには基本的な仮定と制限があります (つまり、WinForms にある程度結合されています)。それでも、アプリケーションの基盤として CodeProject を使用する方法を説明する CodeProject に関する記事がいくつかあります。
System.Addins
System.Addins は、堅牢なアドイン読み込みフレームワークを提供することを意図しているようです。さまざまなレベルの信頼でアセンブリを読み込み、さらにはアウト プロセスを実行するための洗練されたオプションがいくつかあります。それは主にコードベースで、バージョン管理の問題から隔離するのに役立つ多くのアセンブリがあり、かなりコードが多いようです.Guidance Automationを使用して大量のコードを生成します.
これまでのところ、System.AddIns を使用して Eclipse RCP のようなものを構築する方法を説明している記事はあまり見つかりませんでした。また、多くの人がその複雑さに首を傾げているようです。
Mono.Addins
Mono.Addins は、System.Addins、SharpDevelop、MonoDevelop の影響を受けたようです。System.Addins の基本を提供しているように見えますが、プラグインの読み込みにはあまり洗練されていませんが、属性ベースの登録、XML マニフェスト、およびオンライン プラグイン リポジトリのインフラストラクチャにより、よりシンプルになっています。
これには、非常に優れた FAQ とドキュメントがあり、SharpDevelop や Eclipse のようなアーキテクチャを開発する方法を実際に描くのに役立つ、かなり堅牢な例のセットもあります。サンプルでは UI に GTK を使用していますが、フレームワーク自体は GTK に結合されていません。したがって、#1 (アドインのロード) はうまく機能しているように見え、#2 (ワークベンチ フレームワーク) への道を示しています。Mono.Addins は MonoDevelop から派生したように見えますが、MonoDevelop が優れたコア ワークベンチ フレームワークを提供するかどうかは実際には調べていません。
管理された拡張性フレームワーク
これは現時点で誰もが話していることであり、それが何をするのかが徐々に明らかになってきていますが、SOに関するいくつかの投稿を読んだ後でも、私はまだかなりあいまいです. System.Addins と "共存できる" というのが公式の言葉です。ただし、それを参照しておらず、その機能の一部を再現しているようです。したがって、これは System.Addins に代わる、よりシンプルでアクセスしやすい代替手段のように思えます。
属性ベースの配線を提供するという点で、Mono.Addins に似ているように見えます。属性ベースまたはディレクトリベースの「カタログ」を提供します。XML またはマニフェスト ベースのワイヤリングを提供していないようです。MEFはDIコンテナではないという明確化にもかかわらず、これまでのところ私は多くのドキュメントを見つけていません.
そのライセンスは公開されたばかりですが、WindowsBase を参照しています。それが Windows に結合されていることを意味するかどうかはわかりません。
アクロポリス
これが何であるかわかりません。それは MEF ですか、それともまだ来ているものですか?
複合アプリケーション ブロック
より多くのワークベンチ フレームワークを提供するように見える WPF および Winforms Composite Application ブロックがあります。私はこれらの経験がほとんどありませんが、ガイダンスオートメーションにかなり依存しているようで、明らかにUIレイヤーと結合しています. MEF をこれらのアプリケーション ブロックと組み合わせた例がいくつかあります。
ここで自分の質問に答えるために最善を尽くしましたが、実際には表面をなぞっただけであり、これらのフレームワークの経験はありません。うまくいけば、経験のあるフレームワークについてさらに詳細を追加できる人もいます。なんらかの比較マトリックスが得られれば素晴らしいと思います。