我想为可以在一个平台下集成各种第三方软件(可执行文件)的软件进行架构设计。
默认情况下,标准项目类型将添加到平台。项目类型定义了执行不同软件的方式及其输入和输出文件。
用户可以自定义可用的标准项目类型,并将其作为定义新自定义执行流程的新项目类型添加到平台。
此外,它还应支持轻松扩展和自定义功能。我读到基于插件的架构支持两者。
基于插件的架构有哪些优缺点?我们有更好的架构可以用于这种场景吗?
提前致谢:)
答案 0 :(得分:45)
可插拔系统的好处是
但其中一些优势也是弱点:
设计一个好的插件环境与设计一个好的库有许多相同的挑战。如果您自己同时生成环境和插件,那么它就不会那么糟糕,因为您可以随着环境的发展更新所有插件,但如果插件api对所有人开放,则需要仔细规划和执行才能获得设计随着环境的发展,有权避免过多的插件重写。
Fred Brooks所描述的“Second-system syndrome”提倡所开发的第二个系统通常过于通用,旨在获得最大的灵活性,有时会产生“平台内的平台”/“inner platform effect”。当需求不存在或未指定时,可插拔设计通常被视为一种出路。为了补偿,软件尽可能灵活,以尝试处理“随之而来的”。如果它描绘了沉闷的画面,那么可插拔的系统可以很棒并提供很多优势,但它们的价格却很高。在深入了解可插拔系统之前,谨慎地制定满足所需功能所需的所有插件的要求。这将帮助您确定可插拔设计是否值得付出努力,或者一些更简单的方法同样适用。
答案 1 :(得分:5)
插件架构的优势显然是灵活性的提高。这允许其他开发人员以首先没有预料到的方式扩展您的应用程序。请注意,有各种插件架构,从灵活到极端灵活。最灵活的一种称为完全插件架构,在eclipse中使用。
缺点是要真正灵活,你必须开发一个结合插件之间的加载,卸载和通信的可靠框架。插件之间的通信也会有轻微的性能开销。
有关如何创建插件架构的讨论,请查看this问题。
答案 2 :(得分:3)
虽然它不容易维护基于插件的架构,但为什么人们会以这种方式发展呢?因为它仍然比其他“固定”方法更好。如果您的要求一个接一个地改变并且设计需要修复,那么想想如何处理其他方法?
关于它的最好的事情是并行开发。当客户端尽快想要某些功能时,开发人员可以并行工作并将其代码作为插件/组件插入。基本上,即插即用架构提供了复杂性的灵活性,但复杂性是第一次。一旦您的团队熟悉它,它们就很容易处理代码,错误等......
如果您想要集成不同的第三方应用程序,如您所述,最好将其开发为基于插件或组件/服务。 (我不想让你感到困惑,但 SOA 可能会引起人们的兴趣。)这样你可以在不需要时打开/关闭服务/插件。即使您想要执行 SAAS (软件即服务)模型,您也可以从中获益,您可以获得每种不同服务/功能的收入:)。
作为参考,您可以查看以下JAVA框架。有许多ESB可用,它们提供基于组件/服务的即插即用架构。
我希望这会有所帮助。
感谢。
答案 3 :(得分:1)
您可以在link text
找到优势和小插件框架