首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在用于微服务的数据库体系结构中,我应该将我的数据库客户端的单个实例放在哪里?

问在用于微服务的数据库体系结构中,我应该将我的数据库客户端的单个实例放在哪里?
EN

Stack Overflow用户
提问于 2021-01-14 15:58:00
回答 1查看 160关注 0票数 0

我有这样一个层的架构:

客户端UI (exe),

使用app处理来自客户端的请求的服务(.net核心应用程序),

应用程序执行操作,检查... (.net核心类库),

Models是一个映射类。(.net核心类库),

用于数据库处理的基础设施。(带有泛型存储库的.net核心类库)。

在更大的服务层,在启动时创建我的数据库的一个实例,然后这个实例被传递到下面的层到应用程序,然后从应用程序传递到基础架构层。这样做是出于IoC的原因,也是为了保留我的数据库客户端的单个连接实例。

现在我将数据库更改为MongoDb,我发现自己在保存数据库客户端实例的服务层和基础结构中使用的数据库技术之间建立了一些直接依赖关系,然后我需要修改我的基础结构和服务,这就是问题所在。

所以这一切都是关于架构的,我应该把我的数据库客户端实例放在哪里,在顶层,还是应该只由基础设施来处理?如果是这样,这意味着我每次都需要创建新的连接。

希望我说得够清楚了

EN

回答 1

Stack Overflow用户

发布于 2021-01-15 06:30:59

您绝对不应该在层之间传递数据库对象的实例。它应该停留在一个层上--数据层。这就是我的意思:

  • 你应该有一个data layer,它包含了通过抽象(接口)为上层建模的类。例如,类User、Profile以及setUserName、updateProfile等方法。
  • 数据层中的每个类都包含对实际数据库客户端(MySQL、MongoDB等)的引用。业务逻辑中的
  • 上层只依赖于您的数据层的类,它们不知道您的特定数据库服务。更确切地说,它们依赖于data layer
  • 公开的接口,这样,当您想要更改数据库时,只需更新数据层(因为您有特定的数据库客户端)。其他图层保持不变。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65715268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档