分层架构要理解端口和适配器,旨在将您的应用程序与细节解耦

端口和适配器是一种架构模式,旨在将您的应用程序与细节分离。

我的经验证实了这一说法。在最近的一个项目中,我们的团队决定从端口和适配器架构开始,随着我们团队的成长,它得到了回报。我们的团队正在构建一些需要集成的服务。端口和适配器允许我们进行一些集成并将我们的域模型与我们的数据库模式解耦,这为我们的团队提供了灵活性并将我们的应用程序与这些细节隔离开来。

但这是有代价的。我们的架构选择意味着加入我们项目的人员面临学习曲线。大多数人不熟悉这种模式。或者可能听说过,但还没有实际经验。

我自己理解端口和适配器的道路是曲折的。我在网上看到了很多使用六边形来可视化模式的图表,但是很难找到一个具体的例子来帮助我形成自己的心智模型。

如果您有类似的经历并放弃了,或者目前正在尝试了解端口和适配器,我提供这篇文章:

分层架构

为了理解端口和适配器,我认为将它们与更常见的 Web 应用程序架构模式(例如分层架构)结合起来会很有帮助。MVC 模式的控制器与您的业务逻辑交互,而业务逻辑与数据库交互。这是一个很好的模式。这很简单,它可以让您快速启动并运行!但分层架构可能并不总是最合适的。例如,在我们的项目中,分层架构对于新手来说可能更容易上手适配器有什么用,但我们失去了敏捷性。

端口和适配器

端口和适配器类似于分层架构,但它插入端口以反转依赖关系的方向。它插入控制器和应用程序之间、应用程序和数据库适配器或 ORM 之间的端口。

端口是操作系统端口的隐喻。在此示例中,端口是接口。

图片[1]-分层架构要理解端口和适配器,旨在将您的应用程序与细节解耦-4747i站长资讯

图中的端口是红色和黄色框。这里的颜色差异是故意的,因为有两种端口:输入端口和输出端口。

传入端口将是您的应用程序实现的接口。出站端口是您的应用程序所依赖的接口。“传入”和“传出”是我们团队使用的术语。“驱动程序端口”和“驱动程序端口”是您可能在文献其他地方找到的术语。

这给我们留下了适配器。就像端口一样,有两种适配器:传入适配器有什么用,用蓝色表示;和传出,以紫色表示。这里的区别在于传入适配器依赖于传入端口,而传出适配器实现传出端口。

端口和适配器不仅适用于 Web 框架。传入适配器和传出适配器不限于由控制器和数据库适配器实现。它们可以由任何类型的适配器实现。

例如,命令行界面可以满足您的传入适配器,而 HTTP 客户端可以满足您的传出端口。我的示例仅描述了传入和传出端的一个适配器和端口,但您可以拥有任意数量的端口!

示例应用程序

让我们看一下关于端口和适配器的博客文章中引用的一个受启发的具体示例。

假设我们有一个 Web 应用程序,它将接受一个数字并对其应用一个比率。我根据它们在端口和适配器图中的角色对组件进行了颜色编码。

图片[2]-分层架构要理解端口和适配器,旨在将您的应用程序与细节解耦-4747i站长资讯

组件分解如下:

源代码可以在这里找到。

最后,如果我们稍微移动我们的框并在端口和应用程序周围添加一个六边形,我们就会开始看到一个熟悉的图表。

这类似于原始端口和适配器博客文章中的图表以及“六边形架构”的图像搜索中显示的数百张图像。在这篇文章中,我使用“端口和适配器”而不是“六边形架构”,但它们是相同的。它们都是有趣的名字,但该模式的本质是通过依赖抽象来反转你的依赖。

完整的可运行版本的源代码可以在这里找到。

文章来源:http://www.toutiao.com/a6968396828127625736/

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享