我正在开发一个框架来创建各种规模的高效应用程序。应用程序由模块组成(应用程序也是一个模块),性能对我来说很重要。我知道有用于模块化等的现有框架,但我需要实现自己的。尽管我过度考虑了各个模块的性能并对其进行了优化,但对象之间(以及线程之间)的通信是我无法决定如何实现的。以下是我考虑的一些选项:
- 蔚来管道
- 事件(注册监听器)
- 应用程序上下文中的事务队列
我的问题是,其中哪一个更适合避免瓶颈和锁定?或者你有什么替代方案可以建议吗?
我正在开发一个框架来创建各种规模的高效应用程序。应用程序由模块组成(应用程序也是一个模块),性能对我来说很重要。我知道有用于模块化等的现有框架,但我需要实现自己的。尽管我过度考虑了各个模块的性能并对其进行了优化,但对象之间(以及线程之间)的通信是我无法决定如何实现的。以下是我考虑的一些选项:
我的问题是,其中哪一个更适合避免瓶颈和锁定?或者你有什么替代方案可以建议吗?
我唯一的建议是不要那样做。正如Bill K 已经说过的,大多数实现会明显更快、更完整。更重要的是,有优秀的资源可以实现您想要做的事情:例如 OSGi,它拥有 Eclipse 和 Glassfish v3。
就我个人而言,我实现了与您的描述类似的东西,在运行时加载插件而无需重新启动容器。维护和调试是一场噩梦。更重要的是,虽然实现新模块对我来说相对容易(毕竟是我设计的),但编程却非常困难。我最终学到了很多关于类加载器的知识,但仅此而已。
变量太多了。唯一知道的方法是以可插入的方式编写您的消息传递系统,以便您可以以不同的方式编写它并在编写代码时进行测量。
可惜你已经抛弃了使用框架,大多数会比你自己编写的任何东西都要快得多、更完整、更有用。无论是谁提出了这个要求,都应该面对并可能被解雇。
i am developing a framework for creating efficient applications in all sizes
为了给出一个非常笼统的建议,我建议您深入研究 jboss 的源代码,以了解当它们应该工作时是如何制作的(可能是您可以获得的最旧版本,作为起点)
如果这是一个旨在产生生产质量代码的项目,我强烈建议您不要实现自己的框架。
首先,很明显,您对您的应用程序对框架的要求,或者您可以用来实现这样一个框架的各种技术了解得不够多。不要低估您缺乏知识,以及在开始时不知道自己在做什么的项目的风险。
其次,你实现自己的框架的动机是错误的。如果您发现现有框架对于您的需求来说太大且太复杂,要么选择一个更简单的框架,要么只学习完成工作所需的子集......而忽略其余部分。
第三,设计和构建一个半体面的框架需要大量的工作。这可能是您应该花时间构建实际应用程序的时间。当然这很有趣,但你的老板可能对结果更感兴趣。
第四,不要低估使用许多其他人使用的框架的内在优势;例如,一个提出问题的社区(比如关于 SO),一个改进框架的社区,在他们的简历上使用框架的可雇用人员。
最后,通过实施您自己的框架,您很可能会为团队/公司创造大量额外的未来维护工作。你弄错了,你的同事会在接下来的 10 年里到处骂你。即使您的框架 100% 正确,您组织中的某些人仍然必须在依赖它的应用程序的整个生命周期内维护它。