我有一个应用程序,包含以下几层:
- Web API -提供外部调用进入应用程序的访问点。
- 基础结构-提供允许访问数据库的存储库。
- 服务层-负责不同的用例(例如“将项目添加到购物车”)。
- 域-包含具有业务逻辑的域对象。
您可以在下图中看到它们是如何相互参照的。
我想添加一个类型化的http客户端,以便从外部API获取某些信息。
应在哪个层/项目中创建类型化客户端?
- 我目前的推理 *
我首先想到的是基础设施项目。但是由于基础设施指向服务层(需要来自API的数据),这意味着在API之上引入一个接口。这也意味着来自类型化客户端的响应对象必须在基础设施层中定义(这是它开始变得混乱的地方)。
如果是这种情况,则意味着必须满足以下两个条件之一:
A)服务层直接依赖于API响应,或者
B)类型化客户端必须将响应Map到服务层中定义的对象。
这意味着我可以引入一个依赖项,在这种情况下,我可能会把它全部放在服务层;或者我使类型化的客户端比类型化的客户端更重要,这真的感觉像是代码的味道。
1条答案
按热度按时间nbewdwxp1#
关于分层的一些想法
根据您的定义:
基础结构-提供允许访问数据库的存储库。
服务层-负责不同的用例(例如“将项目添加到购物车”)。
它们都没有与第一方和/或第三方服务通信的责任。看起来你的基础设施层是一个 * 数据访问层 *(在其他传统的分层架构命名中),而服务层是 * 业务逻辑层 *。
放置位置
在这个小的迂回之后,让我们把注意力集中在你的问题上,在哪里放置类型化的客户端。你可以推理出任何一个层都可以是类型化客户端的好家。我建议根据以下几点来做决定:
我希望我的指导也能适用于你的特殊情况:)