什么插件/工作台框架是 Eclipse RCP 的最佳 .NET 替代品?

2024-04-28

我正在寻找一个与 Eclipse 插件框架相当的基于插件的应用程序框架,在我看来,它包括:

  1. a core 插件管理框架(Equinox / OSGI),它提供了声明扩展端点,然后发现并加载为这些端点提供服务的插件的能力。 (这与依赖注入不同,但不可否认,区别是微妙的 - 配置高度分散,存在版本控制问题,它可能涉及在线插件存储库,最重要的是对我来说,它应该很容易user添加插件而不需要了解任何有关底层架构/配置文件的信息)
  2. 许多层插件提供了基本工作台外壳具有并发支持、命令、首选项表、菜单、工具栏、键绑定等。

这只是 RCP 的皮毛,它本身就是作为应用程序的基础,您可以通过编写/组装甚至more插件。


这是我这两天从网上搜集到的信息……

据我所知,.NET 世界中没有任何东西可以远远接近 Eclipse RCP for Java 的稳健性和成熟度,但有几个竞争者在#1 或#2 方面做得很好。

(我还应该提到,我还没有对 WinForms 与 WPF 做出最终决定,所以我也在尝试了解任何候选框架中的 UI 耦合程度。我还想知道平台耦合和源代码许可)

我必须说,开源的东西通常文档较少,但更容易理解,而 MS 的东西通常有更多文档,但不易访问,因此对于许多 MS 技术,我想知道它们实际上是做什么的,在实际意义上。

这些是我找到的库:

夏普开发

我首先看到的是 SharpDevelop,它以基本方式同时实现了 #1 和 #2(没有侮辱 SharpDevelop,这是令人钦佩的 - 我只是说更基本的比 Eclipse RCP)。然而,SharpDevelop 与其说是一个框架,不如说是一个应用程序,并且存在基本的假设和限制(即在某种程度上与 WinForms 耦合)。尽管如此,CodeProject 上还是有一些文章解释了如何使用它作为应用程序的基础。

系统插件

看来 System.Addins 旨在提供一个强大的加载项加载框架,并提供一些复杂的选项来加载具有不同信任级别的程序集,甚至运行进程外。它似乎主要是基于代码的,并且代码量很大,有很多程序集可以防止版本控制问题。使用指导自动化生成大量代码。

到目前为止,我还没有找到很多 System.AddIns 文章来说明如何使用它来构建 Eclipse RCP 之类的东西,而且许多人似乎对其复杂性感到绞尽脑汁。

Mono插件

Mono.Addins 似乎受到 System.Addins、SharpDevelop 和 MonoDevelop 的影响。它似乎提供了 System.Addins 的基础知识,具有不太复杂的插件加载选项,但更加简单,具有基于属性的注册、XML 清单和在线插件存储库的基础结构。

它有一个非常好的常见问题解答和文档,以及一组相当强大的示例,这些示例确实有助于描绘如何开发像 SharpDevelop 或 Eclipse 这样的架构。这些示例使用 GTK 作为 UI,但框架本身并未与 GTK 耦合。因此,它似乎很好地完成了#1(加载项加载),并为#2(工作台框架)指明了方向。看起来Mono.Addins是从MonoDevelop派生出来的,但我实际上并没有研究过MonoDevelop是否提供了一个很好的核心工作台框架。

托管可扩展性框架

这是目前每个人都在谈论的内容,它的作用正在慢慢变得清晰,但即使在阅读了几篇关于 SO 的文章之后,我仍然很模糊。官方说法是它“可以与 System.Addins 并存”。但是,它没有引用它,并且似乎重现了它的一些功能。那么,在我看来,它是 System.Addins 的一个更简单、更易于访问的替代方案。

它看起来更像 Mono.Addins,因为它提供基于属性的连接。它提供可以基于属性或基于目录的“目录”。它似乎没有提供任何 XML 或基于清单的连接。到目前为止,我还没有找到太多文档,尽管有说明 MEF 不是 DI 容器,但这些示例似乎有点“神奇”,更让人想起基于属性的 DI。

它的许可证刚刚开放,但它确实引用了 WindowsBase——不确定这是否意味着它与 Windows 耦合。

雅典卫城

我不确定这是什么。是MEF,还是即将推出的东西?

复合应用块

WPF 和 Winforms 复合应用程序块似乎提供了更多的工作台框架。我对这些方面的经验很少,但它们似乎在很大程度上依赖于指导自动化,并且显然与 UI 层相结合。有一些将 MEF 与这些应用程序块相结合的示例。


我已经尽我所能来回答我自己的问题,但我实际上只是触及了表面,而且我对这些框架都没有经验。希望你们中的一些人能够添加有关您使用过的框架的更多详细信息。如果我们最终能得到某种比较矩阵,那就太好了。


可以考虑...

WPF 和 Silverlight 的复合应用程序指南 http://www.codeplex.com/CompositeWPF

Visual Studio 2008 外壳 http://msdn.microsoft.com/en-us/vstudio/bb510103.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么插件/工作台框架是 Eclipse RCP 的最佳 .NET 替代品? 的相关文章

随机推荐

  • 根据 rowversion 值更新记录?

    我最近实现了SQLrowversion以防止我的系统中出现并发问题 我用rowversion更新表中的单行时在 where 子句中 到目前为止 我已经测试过 似乎是一个很好的解决方案 现在我正在寻找一种简单的方法来在我的系统中实现此功能 这
  • 如何在java应用程序中检测FIN - tcp标志?

    我在两台计算机之间有持久的 TCP 连接 第二台计算机不受我的控制 第二台计算机可以随时发送FIN标志 并且首先必须关闭当前连接 将FIN标志发送回第二台计算机 我如何知道第二台计算机正在发送 FIN 标志 以及何时必须调用 Java 应用
  • Qt 捕获按下的键

    我想到写原始蛇 我有一个窗口 程序可以在其中绘制随机线条 但我想不出如何捕捉按下的键来改变画线的方向 class QUpdatingPathIte public QGraphicsPathItem void advance int phas
  • 有没有办法在 Xcode 4 中为 ARM 而不是 Thumb 进行编译?

    如果有很多浮点运算正在进行 Apple 建议针对 ARM 进行编译 而不是针对拇指进行编译 我的整个应用程序几乎是一个大型浮点运算 iOS 应用程序开发工作流程指南中是这样说的 iOS 设备支持两种指令集 ARM 和 Thumb Xcode
  • 无需使用私有 API 即可获取当前第一响应者

    我在一个多星期前提交了我的应用程序 今天收到了可怕的拒绝电子邮件 它告诉我 我的应用程序无法被接受 因为我使用的是非公共 API 具体来说 它说 您的应用程序中包含的非公共 API 是firstResponder 现在 有问题的 API 调
  • @interface中的实例变量;标头与实现

    在标头中声明私有实例变量与在实现中声明它有什么区别吗 在 TestObj h 中 interface TestObj NSObject int test end 与 TestObj m 中的比较 interface TestObj int
  • ASP.NET Core 部署到 IIS 错误:不应在已部署的应用程序中启用开发环境

    我跟着本文 https weblog west wind com posts 2016 Jun 06 Publishing and Running ASPNET Core Applications with IIS将我的 ASP NET M
  • 集合推导式在 Pydev (Python) 上不起作用

    x for x in range 10 在 IDLE 上完美运行 但是当我在 eclipse 中尝试 使用 Pydev 插件 时 出现语法错误 未定义的变量 x 是因为 Pydev 不支持集合理解什么的吗 我该怎么做才能使这项工作成功 这只
  • Postgresql存储过程返回表所有列

    创建了一个函数 该函数有一个输入参数 我可以返回一列 但我想返回所有表列 另外我想做的是 如果结果为零 函数只返回 0 我该怎么做 这里是错误结果 错误 查询没有结果数据的目标 提示 如果您想放弃 SELECT 的结果 请使用 PERFOR
  • 部署应用程序时无需取消部署前一个应用程序并且无需停机?

    我在 Web 应用程序中使用 Glassfish Java 和 JSP over MySQL 许多在线用户使用此网络应用程序 该网站不应关闭 当我想要部署一个新的 war 文件时 我应该在服务器上为我的应用程序取消部署并部署新的战争文件 我
  • 参数化测试也取决于 pytest 中的参数化值

    我有一个测试 我有一个设置方法 应该收到一个dataset和一个测试函数 应该为每个运行data in dataset 基本上我需要类似的东西 datasetA data1 a data2 a data3 a datasetB data1
  • 如何向 ionic 2 警报添加禁用按钮

    我创建了一个 ionic2 警报 我必须根据条件禁用按钮 这是我的代码的简单结构 import AlertController from ionic angular export class MyPage constructor publi
  • 将子域重定向到新域

    大家好 尝试让 301 重定向正常工作但遇到了麻烦 我需要将 sub domain1 com 重定向到 www domain2 com 并确保所有文件名或参数都随之发送 这就是我正在尝试的 RewriteCond HTTP HOST dom
  • Maven + Surefire/Failsafe - forkMode="perthread" 不起作用...解决方法?

    我们正在开发一个基于嵌入式 Infinispan 数据网格集群的应用程序 在我们应用程序的目标环境中 数据网格的每个成员将在独立的 JVM 中运行并使用jgroup集群将会形成 这实际上是由 Infinispan 完成的 为了对我们正在使用
  • 代理模式和装饰者模式的区别

    你能给出任何好的解释吗 Proxy and 装饰者 我看到的主要区别是 当我们假设Proxy uses 作品 and 装饰者 uses 聚合那么似乎很清楚 通过使用多个 一个或多个 装饰器您可以修改 添加功能到预先存在的实例 装饰 而Pro
  • JDK 8 中的默认值是 Java 中多重继承的一种形式吗?

    JDK 8 中的一项新功能允许您添加到现有接口 同时保留二进制兼容性 语法就像 public interface SomeInterface void existingInterface void newInterface default
  • 在 xhtml 页面中显示版本和构建日期

    我想在 JSF 应用程序的页脚上显示构建版本和构建日期 这些页面是 XHTML 我正在寻找从 pom xml 或其他工件获取信息的方法 我发现以下使用 maven replace 插件 http www vineetmanohar com
  • 颜色“透明”不起作用

    我的 IE 有问题 还有什么问题 我使用 CSS 生成内容 其中也有一个背景图像 我看起来是这样的 nav ul li after content position relative z index 99 background transp
  • 对 Azure Functions 和 .csx 文件进行单元测试

    Azure Functions 抽象了大量依赖项 例如队列库和 Azure 表 因此 从单元测试依赖项模拟的角度来看 编码工作量较少 因此维护也较少 假设我们使用 Visual Studio 2015 进行本地开发 如何对单个 Azure
  • 什么插件/工作台框架是 Eclipse RCP 的最佳 .NET 替代品?

    我正在寻找一个与 Eclipse 插件框架相当的基于插件的应用程序框架 在我看来 它包括 a core 插件管理框架 Equinox OSGI 它提供了声明扩展端点 然后发现并加载为这些端点提供服务的插件的能力 这与依赖注入不同 但不可否认