【发布时间】:2021-04-19 06:04:35
【问题描述】:
我有这种分层架构:
客户端用户界面 (exe),
使用 ASP .net web api 处理来自客户端(.net 核心应用)的请求的服务,
应用程序做操作,检查...(.net核心类库),
Models 是一个映射类。 (.net核心类库),
数据库处理的基础设施。 (具有通用存储库的 .net 核心类库)。
在服务层的扩展中,在启动时创建我的数据库的一个实例,然后这个实例被传递到下面的层到应用程序,然后从应用程序传递到基础设施层。 这样做是出于 IoC 的原因并保留我的数据库客户端的单个连接实例。
现在我将我的数据库更改为 MongoDb,我发现自己在保存我的数据库客户端实例的服务层和基础设施中使用的数据库技术之间建立了一些直接依赖关系,然后我需要修改我的基础设施和我的服务,这就是问题。
所以一切都与架构有关,我应该将我的数据库客户端实例保存在顶层还是应该只有基础架构来处理?如果是这样意味着我每次都需要创建新的连接。
希望我足够清楚
【问题讨论】:
-
每次调用所述客户端将新实例注入到 REST API 控制器的每个服务中会有什么问题?
-
听起来像:SOLID - 依赖倒置...
-
嗨 nvoigt,注入新实例的问题是服务层知道用于数据库的技术,我的意思是服务必须创建 MongoClient client = new MongoClient("connectionString") 将其传递给我不想要的基础设施,必须有某种抽象来避免这种依赖。
标签: c# architecture microservices domain-driven-design repository-pattern