请问这个repo 目录用途是什么?

来源:2-3 为工程设计合理的目录结构(二)

慕斯5059536

2022-08-26

http://img.mukewang.com/szimg/6307a6bb093c63e607170452.jpg

1、请问这个repo 目录用途是什么?

2、为什么是repo字眼

写回答

1回答

少林码僧

2022-08-26

1.  repo存放的是数据库操作类,数据库 CRUD 都在这个目录里,它不包含任何的业务逻辑代码,我们使用的是gorm,这里放的是 ORM 操作相关的代码;如果服务不直接请求数据库,也可以放其他服务请求的代码.

2. repo的分层理念来自The Clean Architecture,简洁架构的方法论.

下面我们简单了解下The Clean Architecture.

The Clean Architecture是业界基本达成共识的一套架构设计的方法论,这里所说的架构不仅仅指我们的服务设计的架构,比如微服务架构,单体架构这些,它不与具体的语言相关联,也不与具体的技术方向相关联.它适用于所有语言.

简洁架构提供了一些分层和依赖原则

//img.mukewang.com/szimg/6308a87208f9157207720567.jpg

简洁架构分为了四层

  1. Entities:实体

  2. Usecase:表达应用业务规则,对应的是应用层,它封装和实现系统的所有用例;

  3. Interface Adapters:这一层的软件基本都是一些适配器,主要用于将用例和实体中的数据转换为外部系统如数据库或 Web 使用的数据;

  4. Framework & Driver:最外面一圈通常是由一些框架和工具组成,如数据库 Database, Web 框架等;

不管从事哪方面的开发,上面的一些原则都可以在编码过程中作为参考.

repo就是根据上面的分层思想来设计的,在项目设计上我们参考上面的分层思想将项目分为四层:

  1. models

  2. repo

  3. service

  4. api

//img.mukewang.com/szimg/6308aa7509533f1f06020542.jpg

models

封装了各种实体类对象,与数据库交互的、与 UI 交互的等等,任何的实体类都应该放在这里

repo

这里存放的是数据库操作类,数据库 CRUD 都是在这一层

service

这里是业务逻辑层,所有的业务逻辑代码都在这一层

api

这里是接收外部请求的代码,比如gin 对应的 handler、gRPC、其他 REST API 框架接入层等


1
0

海量数据高并发场景,构建Go+ES8企业级搜索微服务

全新 ES8 配合技术组件,实现高性能搜索

267 学习 · 54 问题

查看课程