在阅读了有关端口和适配器架构的不同来源(包括 Alistair Cockburn 的原始文章)之后,我仍然不确定术语“端口”和“适配器”的明确含义——尤其是在将这些概念映射到实现工件时。
一些消息来源(例如这篇文章)暗示这种架构模式中的端口是最外部的工件,然后是中间层中的适配器,它们在端口和核心应用程序之间进行转换。
然而,在 Cockburn 的原始文章中,端口出现在适配器层的外部和内部,具体取决于通信方向:
- 入站通信:“当事件从外部世界到达端口时,特定于技术的适配器将其转换为可用的过程调用或消息,并将其传递给应用程序。 ”
- 出站通信:“当应用程序有东西要发送时,它会通过端口将其发送到适配器,适配器会创建接收技术(人工或自动)所需的适当信号。 ”
实际上,对我来说,“所有外部”方法和“内部和外部”方法都没有意义 - 我将端口视为始终放置在应用程序旁边的工件,无论通信方向如何。Imo 这也与端口和适配器的隐喻一致:例如。有一个带串口的设备,要将另一个没有串口的设备连接到这个设备上,我需要一个适配器,从我的设备的角度来适应入站和出站通信。
谈到这个架构的实现,我会看到端口的定义,而不是我的应用程序的一部分,我会看到不同的适配器在我的应用程序“外部”。例如。单个端口的实现可以由一个facade
(由适配器调用以进行入站通信)和一个interface
(由适配器实现以进行出站通信)组成。
术语端口和适配器的正确含义是什么?如何将这些概念映射到实现工件?
更新:
发现这篇文章与我的理解相似。问题仍然存在,是否存在某种共同协议。