我想遵循Sander Mak的这篇文章的建议,该文章主张使用传统的单片架构,使用模块而不是微服务,这在许多情况下不是一个好的选择: https://www.oreilly.com/ideas/modules-vs-microservices
我对单片与微服务进行了大量研究,并得出了相同的结论,即Monolithic在许多情况下仍然是最好的选择,并且可以以更简单的方式实现相同的目标。微服务应该用于极端和特殊的情况。
当然,良好的模块化架构的实现在每种语言中都是不同的。构架。作者正在谈论Java 9以及它如何完全重新定义实现这种模块化架构的方式。
但是Symfony 4怎么样?在版本4之前,似乎正确的方法是使用Bundles。但是从版本4开始,官方文档显然建议不再这样做了: https://symfony.com/doc/current/bundles.html
在4.0之前的Symfony版本中,建议组织您的 使用bundle自己的应用程序代码。这不再推荐了 bundle只应该用于共享代码和功能 多个应用程序。
但我在文档中看不出现在正确的方法是什么!如果无法使用Bundles,那么实现Sander Mak文章中定义的模块化架构的最佳实践是什么?
答案 0 :(得分:0)
我是来自Java环境的自己,但我选择在SF4 / PHP-7.x环境中编写我当前的应用程序。很长一段时间列举的原因让我在Laravel 5.x之后选择了SF4。
不要被Symfony 4和5移动犯罪......我承认我并不总是理解他们所有的进化计划和营销策略,而且我在开始时对新捆绑包感到沮丧申请方向宣布。但本能地,也许是因为我没有其他选择,我努力尝试使用SF4环境中强有力的应用程序模块化战略来确定SF4。
感谢Sander Mak关于模块与微服务的文章,因为它确认了我对模块化支持框架的需求,而不仅仅是微服务模块化功能。这里真正的重点是正确评估您希望作为模块实现的组织概念的类型和规模。模块化的微服务肯定可用于实现复杂的硬件,业务活动和详细的组织基础架构。但是代价高昂,并且有很多资源来处理依赖关系和内部联系。
使用SF4,虽然他们通常谈到微内核,或者构建自己的微服务框架,但我认为他们提供的是一个很好的单片平台,用于构建模块化业务应用程序。我承认与Java环境相比,PHP OOP限制,使一些实现比预期更难,但最后,对于常规业务应用程序要求,SF4框架和组件提供了良好的应用程序基础。
在深入探讨将SF4用于模块化应用开发之前,我将在接下来的两年中分享我对SF4领导者愿景/路线图的理解:
从SF4 bundle less环境开始,Symfony领导者决定放弃AppBundle,因为根据经验,他们知道创建捆绑包与组件模块的开销。所以,应用程序'默认组件应用程序现在是向应用程序架构师提供许多解决方案的基础环境:
我对内部模块优先级的建议:
当时机成熟,并且您想要与社区共享特定模块时,请检查发送回模块,外部环境中所需的最小配置/参数。