问题标签 [plugin-architecture]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
31765 浏览

java - 如何创建可插入的 Java 程序?

我想创建一个可以用插件扩展的 Java 程序。我该怎么做,我应该在哪里寻找?

我有一组插件必须实现的接口,它应该在一个 jar 中。该程序应该在相对(程序)文件夹中监视新的 jar,并以某种方式注册它们。


虽然我确实喜欢 Eclipse RCP,但我认为它对于我的简单需求来说太过分了。

Spring也是如此,但既然我还是要看它,我不妨试试看。

但是,我仍然希望找到一种方法来尽可能简单地创建我自己的插件“框架”。

0 投票
5 回答
1323 浏览

java - 向 J2SE 应用程序添加插件支持的最佳技术?

我正在编写一个 J2SE 桌面应用程序,它需要它的一个组件是可插入的。我已经为这个插件定义了 Java 接口。用户应该能够在运行时(通过 GUI)选择他们想要使用该接口的哪个实现(例如在初始化对话框中)。我设想每个插件都被打包为一个 JAR 文件,其中包含实现类以及它可能需要的任何辅助类。

在桌面 Java 应用程序中做这类事情的最佳技术是什么?

0 投票
4 回答
3854 浏览

flash - 使用 Adob​​e AIR 构建插件架构

我正在考虑选择 Adob​​e AIR 作为即将到来的项目的客户端实施技术。(之前的选择是 C# 和 WPF,但最近我对 Flash/Flex/AIR 印象深刻。)

但我的产品最重要的特性之一将是它的插件架构,它允许第三方开发人员以有趣的方式扩展功能和 GUI。

我知道如何在 C# 中设计架构:插件加载器将枚举本地“app/plugins/”目录中的所有程序集。对于每个程序集,它会枚举所有类,寻找“IPluginFactory”接口的实现。对于工厂创建的每个插件,我会询问它的 MVC 类,并将其 GUI 元素(菜单项、面板等)插入现有 GUI 布局中的适当插槽中。

我想在 AIR 中完成同样的事情(从本地文件系统加载插件,而不是从网络加载插件)。阅读本文后,我的理解是这是可能的,并且基本架构(将 SWF 加载到沙盒应用程序域等)与您在 .NET 中执行的方式非常相似。

但我对这些问题很好奇。

如果你们中的任何人使用 flash 播放器进行了任何动态类加载(最好在混合 flash/flex 应用程序中,特别是在 AIR 主机中),我很想听听您构建插件框架的经验以及遇到棘手情况的地方使用 flash 播放器,以及使用 flash、flex 和 AIR API。

例如,如果有人问我同样的问题,但考虑到 Java 平台,我肯定会提到 JVM 没有“模块”或“程序集”的概念。最高级别的聚合是“类”,因此很难在插件系统中创建组织结构来管理大型项目。我还将讨论多个类加载器的问题,以及每个类加载器如何维护自己的加载类的单独实例(具有自己的单独静态变量)。


以下是一些对我来说仍然没有答案的具体问题:

1) 动作脚本“Loader”类可以将 SWF 加载到 ApplicationDomain。但是那个 appdomain 到底包含什么?模块?上课?MXML 组件是如何表示的?如何找到所有实现我的插件接口的类?

2)如果您已将插件加载到与主应用程序不同的 ApplicationDomain 中,那么从该其他应用程序域中调用代码是否会更加复杂?对于可以通过跨应用程序域编组层的数据类型是否有任何重要限制?编组是不是非常昂贵?

3) 理想情况下,我想将我自己的大部分主代码开发为插件(主应用程序只不过是一个插件加载外壳),并使用插件架构将该功能提升到应用程序中。是不是让你心里产生了恐惧?

0 投票
8 回答
102106 浏览

java - 使用 Java 构建插件系统的最佳方法

您将如何为您的 Java 应用程序实现插件系统?

是否有可能拥有一个易于使用(对于开发人员)的系统,它可以实现以下目标:

  • 用户将他们的插件放入应用程序的子目录中
  • 该插件可以提供一个配置屏幕
  • 如果使用框架,许可证是否与商业开发兼容?
0 投票
1 回答
786 浏览

java - 支持 JAR 的 Java 插件框架

更具体地说,是否有任何 Java 插件框架具有以下所有功能:

  • 支持多个 JAR 文件
  • JAR 可以签名和/或密封
  • 可以在实例化之前对每个 JAR 执行许可证检查
  • 可以使用多个线程加载多个 JAR
0 投票
2 回答
892 浏览

java - 如何制作 Java 插件?

我需要将我的 Java 程序作为 OME 的插件 - 具有 Java API 的基于 Web 的图像处理软件

www.openmicroscopy

0 投票
2 回答
315 浏览

java - 限制插件中的某些 Java 代码

我正在创建一个应用程序,它使用Java 插件框架来加载插件并将它们集成到程序中。

我的问题是:有没有办法限制插件中的某些操作(例如启动新进程)?我想到的是Java WebStart 之类的东西,即当应用程序想要访问FileSytem 时,会提示用户是否允许该操作。

我正在考虑创建一个安全管理器,如果是这样,我该怎么做?

0 投票
2 回答
1660 浏览

c# - 带接口的插件架构;接口检查不起作用

我正在应用程序中实现一个简单的插件架构。插件要求是使用应用程序和插件引用的 *.dll 中的接口 (IPlugin) 定义的。该应用程序有一个插件管理器(也在同一个 *.dll 中),它通过在插件文件夹中查找所有 *.dll 来加载插件,加载它们,然后检查插件是否实现了接口。我已经通过两种不同的方式进行了此检查[以前通过简单的 if (plugin is IPlugin)],但是当插件实现接口时,没有人会识别。这是代码:

我曾经测试一个特定的类名(“插件”),但后来我让它循环遍历程序集中的所有类,但无济于事。(下面是我在其他地方找到的一个示例。)为了使这个更复杂一点,有两个接口,每个接口都实现了原始接口(IPluginA,IPluginB)。该插件实际上实现了更具体的接口之一(IPluginB)。但是,我已经尝试使用仅实现更通用接口(IPlugin)的插件,但这仍然不起作用。

[编辑:针对我第一次收到的两个回复] 是的,我尝试过使用 IsAssignableFrom。请参阅以下内容:

0 投票
2 回答
2217 浏览

ruby-on-rails - 如何在 Ruby on Rails 中拥有插件架构?

我必须在 Ruby on Rails 上建立一个社交网站。网站中的功能可能会不时更改;所以我们需要轻松添加/删除功能。此外,我们可能正在建立另一个社交网站。由于这些原因,我们正在考虑为 RoR 中的社交网站构建一个基本框架,该框架具有安装或卸载框架扩展的功能。

我以前在 Joomla 工作过!CMS 及其用于添加/删除扩展的架构是我所关注的。在 Joomla 中!安装通常有一个管理端,您可以从中添加/删除/自定义扩展。

我是 RoR 的新手,发现很难决定如何做到这一点。任何帮助将不胜感激。

0 投票
3 回答
2675 浏览

java - java:是否有允许动态加载和卸载 jars(但不是 osgi)的框架?

我想要一种允许动态加载和卸载 jar 以及在 jar 中调用激活器类的机制。由于繁琐的导入/导出机制,我不想使用 OSGi。