Logo

确定架构风格

了解应为你的项目选择哪种架构风格。

概念

确定架构风格

了解应为你的项目选择哪种架构风格。

截至目前,本课程介绍了一种以六边形架构风格构建 Web 应用程序的特定方法。从代码组织到采用捷径,我们已经回答了这种架构风格提出的许多问题。

本书中的部分答案可应用于传统的分层架构风格;有些答案则只能在像本书所提倡的这种以领域为中心的方法中实现;而还有一些答案你可能并不认同,因为在你的实际经验中它们未必有效。

我们最终希望回答的问题是:究竟在什么情况下应该使用六边形架构风格?又在何时应坚持使用传统的分层架构风格(或其他任何架构风格)?

领域为王

通过前面章节的内容,你应该已经清楚:六边形架构风格最主要的特点在于,我们可以不受持久化问题或外部系统依赖等干扰,独立地开发领域代码。

能够脱离外部影响而持续演进的领域代码,是采用六边形架构风格最核心的理由。

正因如此,这种架构风格与领域驱动设计(DDD)实践非常契合。显而易见,在 DDD 中,开发是由领域主导的。当我们无需同时考虑持久化或其他技术细节时,才能更专注、更有效地对领域进行建模和推理。

也可以说,像六边形架构这类以领域为中心的架构风格,是实现 DDD 的必要支撑。如果没有一种将领域置于核心位置的架构,没有将依赖关系反转指向领域代码,那么我们就不可能真正践行领域驱动设计——此时的设计必然会被其他非领域因素所主导。

因此,决定是否采用本书所介绍的架构风格的第一个关键因素是:如果你的应用中领域代码并非最重要的部分,那么你很可能并不需要这种架构风格。

经验为后

人类习惯于依赖习惯行事。习惯能帮我们自动做出决策,从而节省时间和精力。如果有狮子朝我们冲来,我们会本能地逃跑;当我们开发新的 Web 应用时,也会自然而然地选择分层架构风格。因为我们过去反复使用这种方式,它已经成为一种惯性。

这本身未必是错误的选择。我们只是倾向于使用自己熟悉且擅长的方式而已。

唯一能够让我们在架构风格上做出明智决策的方法,就是亲身经历过多种不同的架构风格。如果你对六边形架构尚存疑虑,不妨在当前项目中挑选一个小型模块进行尝试。逐步熟悉其概念,建立信心。应用本书中的思想,加以调整和扩展,发展出适合自己的架构方式。

这样的实践经验,终将指导你下一次的架构决策。

视情况而定

我其实很希望能列出一些选择题,帮助你像做“你是哪种性格类型?”或“你像哪种狗?”这类社交媒体测试一样,轻松选定一种架构风格。
但现实并没有那么简单。对于“该选哪种架构风格”这个问题,我的回答依然是专业顾问常说的那一句:“视情况而定。”

它取决于所构建软件的类型,取决于领域代码在其中扮演的角色,取决于团队的技术经验,最终还取决于团队对某种方案的接受程度和舒适感。

我希望本课程已为你思考架构问题提供了某些方向性的指引。

分层架构有什么问题?

反转依赖关系