如何设计可扩展的软件(插件架构)? [关闭]

2024-03-06

我需要一些资源来讨论如何设计可扩展的软件,即以便其他人可以编写为其添加功能的附加组件/插件。

你有什么建议吗?有没有讨论这个主题的书?
我更喜欢简短而切题的内容;一些理论和一堆具体例子。

我不针对特定的语言,我希望能够理解核心思想,以便我可以用任何语言实现它。

出于同样的原因,我不喜欢使用其他人构建的框架来执行此操作(除非该框架不是非常高级,即不隐藏too很多),目前我只想在这个主题上进行自我教育并尝试各种方法来实现它。另外,框架通常假设用户了解该主题。

UPDATE

我不是在询问 OOP 或允许继承我的类。我正在谈论设计一个将部署在系统上的应用程序,以便在部署后可以通过第三方附加组件对其进行扩展。

例如,Notepad++ 有一个插件架构,您可以将 .dll 文件放置在插件文件夹中,并且它向应用程序添加了不存在的功能,例如颜色选择、代码片段插入或许多其他功能(广泛的功能)。


如果我们谈论 .NET,请尝试使用 VBScript 编写 .NET 应用程序脚本 http://www.codeproject.com/KB/system/mScriptable.aspx在 CodeProject 上。那里有很多具体的例子。

以下是实施各种应用程序扩展技术的站点

  • ClearScript - 使 V8、VBScript 和 JScript 可用于 .NET 应用程序 http://clearscript.codeplex.com
  • CS-Script - C# 脚本引擎 http://www.csscript.net/
  • 使用 C# 的插件架构 http://www.codeproject.com/KB/cs/c__plugin_architecture.aspx
  • Opinio 插件架构 http://objectplanet.com/opinio/userguide/index.htm?page=plugin_architecture.html
  • 关于 Eclipse 插件架构的注释 http://www.eclipse.org/articles/Article-Plug-in-architecture/plugin_architecture.html
  • 适合初学者的插件架构框架 http://www.codeguru.com/cpp/misc/misc/plug-insadd-ins/article.php/c3879
  • Gecko 插件架构 https://developer.mozilla.org/en/Plugin_Architecture
  • Fungimol 插件架构 http://www.fungible.com/fungimol/plugin.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设计可扩展的软件(插件架构)? [关闭] 的相关文章

  • 对于简单的数据库/爱好者设置来说,什么是好的报告服务? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我的 PC 上运行着一个微薄的生产环境 用于我在业余时间开发的一个小应用程序 此时我已经完成了基础设置
  • 有没有适用于 IE 的 websocket 插件?

    有没有适用于 IE 的插件 我可以在 IE 7 8 9 中使用 Websockets 我还没找到 socket io 使用的后备方案之一是 flash gimite web socket js https github com gimite
  • 有人还在使用客户端服务器架构吗[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我编写软件已有几十年了 现在一切都是网络 在网络出现之前 我们拥有的客户端服务器应用程序基本上是直接与数据库对话的胖客户端应用程序 它
  • 用eclipse测试java程序的内存消耗[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我可以通过什么方式混合 jQuery 和 vanilla JavaScript

    我有一个用普通 JavaScript 编写的 Web 应用程序 我想用 jQuery 动画来增强它 并使用我在各种 jQuery 插件中找到的一些功能 例如上传 http www uploadify com 可以通过什么方式将 jQuery
  • Android:进程已死亡 - 资源不足?

    我编写的简单 HTTP GET 请求有一个小问题 该请求每 X 分钟请求一个 URL 我每天都会遇到一两次进程在 GET 请求期间停止的情况 这是调试日志的示例 12 07 16 29 22 650 V TAG 11655 Executin
  • 像 ActiveInbox 这样的程序是用什么语言编写的?

    我想写一些类似的东西活动收件箱 http www activeinboxhq com 除了原始的 ActiveInbox 之外 我还需要添加对收到的电子邮件执行一些操作的逻辑 像 ActiveInbox 这样的程序是用什么语言编写的 谢谢
  • 只能加载NetBeans中的一些gradle项目

    非常类似于 无法在 NetBeans 中加载 gradle 项目 https stackoverflow com q 17698135 262852但我认为并不完全相同 即使只是因为这个问题的年龄 我看到了 gradle 消息after h
  • jQuery - 检测鼠标是否静止?

    我想知道是否有一种方法可以检测 jQuery 中鼠标是否空闲了 3 秒 是否有我不知道的插件 因为我不相信有一个原生的 jQuery 方法 任何帮助将非常感激 您可以收听mousemove事件 每当发生时启动超时并取消任何现有超时 var
  • 有向无环图的人类可读文本表示

    一棵树有一堆人类和机器可读的文本表示 例如嵌套列表 以各种表示形式 例如 JSON 和 YAML 和 XML 与缩进相结合 它们使我们很容易想象得到的结构 但我没有看到任何具有相同水平可读性的东西有向无环图 https en wikiped
  • 安全网络登录示例/教程[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 为 Web 应用程序创建登录表单的方法有很多种 但大多数方法都存在这样或那样的缺陷 密码以明文形式传输
  • 有人真正有效地实现了斐波那契堆吗?

    你们中有人曾经实施过斐波那契堆 http en wikipedia org wiki Fibonacci heap 几年前我就这样做了 但它比使用基于数组的 BinHeaps 慢了几个数量级 当时 我认为这是一个宝贵的教训 告诉我们研究并不
  • 如果数据库可访问,加盐和散列有什么意义?

    我刚刚学习了散列的概念 嘿 不要忘记盐 并使用盐来确保密码安全 散列它是一种单向加密 实际上不是加密而是散列 因此无法对其进行逆向工程 加盐是在散列之前在密码上添加随机创建的值的前缀或附加值 因为散列 只是散列 的问题是 一些天才提供了字典
  • Maven:如何使用不同的属性值多次过滤同一资源?

    我们的项目使用 Log4J 通过 log4j properties 文件进行配置 我们有多个生产服务器 将日志记录到不同的日志文件中 这样可以区分日志 因此节点 1 的 log4j properties 如下所示 log4j appende
  • 什么是 NOR 逻辑运算符?

    Is nor a 或 b a 或 b a 和 b 还有什么吗 a 或 b see http en wikipedia org wiki Logical NOR http en wikipedia org wiki Logical NOR了解
  • 如何通过groovy动态更新ReadyAPI/SoapUI中的Resource值?

    我的资源采用这种格式 testing 101 getCustomer 99 这里我需要通过 groovy 动态更改 101 和 99 部分 以便我可以在同一测试用例中运行多个值 我研究了 ReadyAPI 的内置功能 但没有那么有帮助 我也
  • Eclipse:在类路径上查找资源

    eclipse 有没有办法在类路径中搜索任意资源文件名 或模式 我知道我可以使用 Navigate gt Open Type 这将扫描类路径中的类 或 Navigate gt Open Resource 它将搜索任何资源类型 但仅在我的项目
  • 自动跟踪算法

    我正在尝试写一个simple跟踪例程来跟踪电影中的某些点 本质上我有一系列 100 帧长的电影 在黑暗背景上显示一些亮点 我每帧有大约 100 150 个点 它们在电影的过程中移动 我想跟踪它们 所以我正在寻找一些有效的 但可能不会过度实施
  • 如何在 Highcharts / Highstock 上显示 x 轴上的十字线选定值和 y 轴上选定的日期?

    我正在研究这个项目 其中包括在交互式图表上显示历史数据 我得出的结论是 Highcharts Highstock 是最好的选择 因为它提供了最多的定制选项 我想要实现的目标是 当我将鼠标悬停在一个点上时 分别在 x 轴和 y 轴上显示所选值
  • 评估 CRC-32 实现中的差异

    我见过相同基本 CRC 32 算法的许多不同实现 如下所示 int remain int sbox SIZESBOX int dividend int bit for dividend 0 dividend lt SIZESBOX divi

随机推荐