7

Eclipse プラグイン フレームワークに匹敵するプラグイン ベースのアプリケーション フレームワークを探しています。

  1. コアプラグイン管理フレームワーク(Equinox / OSGI)。拡張エンドポイントを宣言し、それらのエンドポイントにサービスを提供するプラグインを検出してロードする機能を提供します。(これは Dependency Injection とは異なりますが、確かに違いは微妙です。構成は高度に分散化されており、バージョン管理の問題があり、オンライン プラグイン リポジトリが含まれる可能性があります。私にとって最も重要なことは、ユーザーが簡単に追加できることです。基礎となるアーキテクチャ/構成ファイルについて何も知る必要のないプラグイン)
  2. 同時実行サポート、コマンド、設定シート、メニュー、ツールバー、キーバインディングなど を備えた基本的なワークベンチシェルを提供するプラグインの多くのレイヤー。

これは 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 をこれらのアプリケーション ブロックと組み合わせた例がいくつかあります。


ここで自分の質問に答えるために最善を尽くしましたが、実際には表面をなぞっただけであり、これらのフレームワークの経験はありません。うまくいけば、経験のあるフレームワークについてさらに詳細を追加できる人もいます。なんらかの比較マトリックスが得られれば素晴らしいと思います。

4

5 に答える 5

1

考慮することが出来る...

WPFとSilverlightの複合アプリケーションガイダンス

VisualStudio2008シェル

于 2008-10-24T04:12:30.400 に答える
1

+1 SharpDevelop. ライブラリは適切に作成されており、簡単に拡張できます。私は実際に、SharpDevelop Core とそのアドイン インフラストラクチャを使用して、独自のコード リファクタリング アプリケーションを作成しています。

非常に素晴らしい。

-ダグ

于 2010-04-22T21:39:23.503 に答える
1

Visual Studio Shell を実際に見てみる必要があります。これは、アプリケーションがアドインとして Visual Studio と一緒に存在する統合モードと、シェルが Eclipse シェルと同様にアプリケーション単独の基本フレームワークとして機能する分離モードでシェルを使用することができます。このウェブページをご覧ください。

Visual Studio シェルは堅牢で機能が豊富で無料です。私はまだ開発を行っていませんが、今後のプロジェクトに向けて検討しています。Eclipse と同じくらい強力なプラグイン フレームワークのようです。

于 2008-11-12T18:16:33.410 に答える
0

私はRCPの詳細に精通していませんが、DxCoreはおそらくマネージコードでVisualStudioを拡張するための最も完全なフレームワークになると思います。プラグインベースのアーキテクチャを使用しており、ツールウィンドウ(必要なコードをホストする)から「アクション」(キーボードショートカットやコンテキストメニューに関連付けることができるアイテム)やリファクタリングまで、非常に豊富な機能を備えています。コンテキストシステム、および言語に依存しないコード生成エンジン。Visual Studioのかなり恐ろしい下腹の上に、非常に優れた抽象化レイヤーを提供します。また、バージョンに依存しないように記述されているため、DxCoreに対して記述されたプラグインはVS2005およびVS2008で機能します。

それは無料ですが、オープンソースではなく、悲しいことに、ドキュメントはほとんどありません。提供されたサンプルがあります。これは良いスタートですが、役立つ可能性のある他のリソースを次に示します。

  • MarkMillerはDxCore/CodeRush / Refactor Pro!のアーキテクトであり、彼のブログ(およびDNR TVエピソード)にDxCoreプラグインの作成に関する投稿がいくつかあります。
  • 質問を投稿できるコミュニティフォーラムがあります。これに続いて、Markと他のDxCore開発者の何人か、そしてコミュニティの何人かの人々が続きます
  • GoogleCodeのDxCoreプラグイン。コミュニティによって作成されたプラグインを1か所に集める試み。これはツールとリファクタリングの素晴らしい組み合わせですが、一部は古くなっています。

うまくいけば、これはあなたに役立つでしょう。私がそれについて言わなければならない唯一の本当に悪いこと、そしてそれがおそらくもっと広く利用されていない理由は、それがほとんどドキュメントがないような大きなライブラリであるということです、あなたはいくつかを利用する方法を見つけるために進んで掘る必要がありますクーラー機能の。

幸運を!

于 2008-10-24T04:34:50.090 に答える
0

SoapBox Coreをオープン ソースとしてリリースし、 CodeProject に関する紹介記事を書きました。それは基本的にあなたが探しているものです。拡張性のために MEF を使用し、SharpDevelop から多くのアイデアを得ました。それは真新しく、まだ急速に進化していることに注意してください。

于 2009-11-11T18:14:16.140 に答える