Design patterns 端口和适配器是否应该抽象出HTTP堆栈?

Design patterns 端口和适配器是否应该抽象出HTTP堆栈?,design-patterns,architecture,hexagonal-architecture,Design Patterns,Architecture,Hexagonal Architecture,在考虑端口和适配器体系结构时,我担心过度设计代码 系统与外部世界联系的两个非常常见的例子是myHTTP堆栈和本地文件系统。当应用程序与外界接触时,这些情况很明显,测试需要一定程度的控制和/或模拟 我的第一个想法是:“也许我应该有一个中央服务或singleton,并确保任何HTTP调用都能通过它。” 对于测试来说,这将是令人惊讶的,因为如果对外部世界的意外调用在没有开发人员的模拟或至少是显式协调的情况下完成,我可以强制任何测试崩溃。这还标准化了模拟HTTP调用的单一方法 另一方面,我感觉自己在重新

在考虑端口和适配器体系结构时,我担心过度设计代码

系统与外部世界联系的两个非常常见的例子是myHTTP堆栈和本地文件系统。当应用程序与外界接触时,这些情况很明显,测试需要一定程度的控制和/或模拟

我的第一个想法是:“也许我应该有一个中央服务或singleton,并确保任何HTTP调用都能通过它。”

对于测试来说,这将是令人惊讶的,因为如果对外部世界的意外调用在没有开发人员的模拟或至少是显式协调的情况下完成,我可以强制任何测试崩溃。这还标准化了模拟HTTP调用的单一方法

另一方面,我感觉自己在重新发明轮子。我是一名Javascript开发人员,本机库不太好。大多数人使用第三方库,它将在整个项目中作为依赖项传播

我目前的做法是重新发明轮子。我确实创建了抽象层(服务单例),但使用第三方库使其保持轻量级。目标是使用一个薄的自制外观,试图“遏制”第三方库代码在项目中的传播。显然,范围更大的事情是个例外。例如,抽象数据库访问往往会带来更多的痛苦而不是荣耀

HTTP本地文件系统访问的自制抽象是端口/适配器的明显例子还是过度工程?

这个难题(为HTTP访问创建自己的“网关”)与可重用性和DRY比六边形体系结构更相关

Hexagon架构说“在你的应用程序中放置一个与技术无关的端口,用于与外部世界项目对话,然后在你的应用程序外放置一个http适配器,用于翻译”


关键是。。。你有很多应用程序使用http适配器吗?在这种情况下,将http适配器抽象为某种自定义网关可能是值得的。

没有“红线”WRT过度工程。在一条大的、模糊的、灰色的线和大量的意见之上。我认为询问“http调用”和“本地文件系统”的具体案例就足以确定一个反模式或断言“这两个都是六边形体系结构的明显案例”这是对您问题的直接回答:“HTTP和本地文件系统访问的自制抽象是端口/适配器的明显例子还是过度工程?”是“否。它不是端口/适配器的明显例子,也不是过度工程的明显例子。”。这是一个解决一系列问题的可能方法的例子。“业务逻辑不应该与HTTP协议或文件系统耦合。我不确定这是否回答了您的问题;但基于六边形体系结构,这是一个很容易的说法。