Golang Go语言中 service 与 model 最佳实践是什么
service 与 model 大家都是用的
想请问下大家
Golang Go语言中 service 与 model 最佳实践是什么
可以看看 kratos 框架
更多关于Golang Go语言中 service 与 model 最佳实践是什么的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
我的分层是这样的:
handler -> service -> dao/repository -> model
handler: 负责接收数据、校验数据、调用逻辑层(service), 返回数据
service:负责逻辑编排,不会操作数据库、api 之类的
dao/repo: 数据调用层,不管是 三方接口、db 、cache 、MongoDB 、ES 等都在这里
model: db 层,仅有数据表结构体和表名的定义
可以参考: https://github.com/go-microservice/moment-service
同想知道~ 写 go 以来一直是自由发挥,项目逻辑分层都不清晰。有什么好的开源项目学习吗?
你发的代码连接地址我看了。增加了 repo 层,我看看 kratos 框架。
Kratos 一套轻量级 Go 微服务框架,包含大量微服务相关功能及工具。 我刚看了下项目结构,和我需要的不太相符。
怎么爽怎么写
我们是 route -> controller -> proxy -> contract -> repository
model 用来传递数据,除了 route ,其它层都会用到它。
我遇到过和你一样的问题,如何更好的组织数据访问层和核心领域模型的代码。
相比 Java 构建的系统,代码组织方式、分层等最佳实践已经固化在 Sprint Boot 、Sofa Boot 等框架中,Golang 缺乏这种标准化的最佳实践。
这个时候我想到领域驱动设计( DDD ),结合 DDD 中的思想组织代码结构。
最终我在项目中抽象了这三层:仓储层 => 领域层 => 表现层,基本上可以解决中小型项目的代码组织问题。