From 59ef538dc3f5ba73aab8421bb445a7fca2e7eda8 Mon Sep 17 00:00:00 2001 From: Michael Li Date: Mon, 21 Nov 2022 12:02:13 +0800 Subject: [PATCH] mir: add initial proposal document --- ...05-引入go-mir优化后端架构设计.md | 28 +++++++++++++++++++ docs/proposal/README.md | 3 +- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 docs/proposal/005-引入go-mir优化后端架构设计.md diff --git a/docs/proposal/005-引入go-mir优化后端架构设计.md b/docs/proposal/005-引入go-mir优化后端架构设计.md new file mode 100644 index 00000000..f446bf5d --- /dev/null +++ b/docs/proposal/005-引入go-mir优化后端架构设计.md @@ -0,0 +1,28 @@ +| 编号 | 作者 | 发表时间 | 变更时间 | 版本 | 状态 | +| ----- | ----- | ----- | ----- | ----- | ----- | +| 005| 北野 | 2022-11-21 | 2022-11-21 | v0.0 | 提议 | + +### 引入go-mir优化后端架构设计 + 引入[github.com/alimy/mir/v3](https://github.com/alimy/mir)优化后端的架构设计,使得后端代码更具扩展型。 + +### 需求 +* 更方便添加后端功能项的实现; +* 优化代码结构,模块化、清晰化代码布局,使得更具扩展性; +* 兼容RESTful/gRPC 服务代码,RESTful API是服务于Web/Admin,gRPC API是提供给移动端(iOS/Android)的服务; + +### 方案 + +依赖库: +* [go-mir](https://github.com/alimy/mir) + +### 疑问 + +1. 为什么引入go-mir? +TODO; +1. 为什么要兼容RESTful/gRPC服务? +RESTful API是提供给Web端使用的,包括paopao-ce web端以及后期的运维端admin; gRPC API是提供给移动端(iOS/Android)使用的服务。RESTful API天然对web端浏览器友好,而gRPC生态对后端、移动端天然友好,可以根据google-protocol-buffers DSL定义服务API自动生成服务端、客户端代码,非常利于开发,特别是移动端开发,省去了编写客户端网络数据服务相关的业务逻辑,只需要专注于页面逻辑编写,后端数据获取的网络数据访问逻辑直接调用自动生成的gRPC API客户端代码即可,大大的减轻移动端开发的心智负担。后端引入gRPC主要就是考虑到移动端(iOS/Android)开发的开发效率,在减轻移动端开发网络数据获取业务逻辑的心智负担上,gRPC生态与RESTful生态相比优势明显,因此强力引入。再一个就是[go-mir](https://github.com/alimy/mir) v3为RESTful服务的开发提供类似gRPC服务的开发体验,也为后端兼容RESTful/gRPC服务创造了很好的条件,只要代码结构组织清晰,将会有很好的后端开发体验。 + >*目前移动端 iOS/Android APP还在规划中,这里后续的后端gRPC API服务也是为此做准备,敬请期待~* + +### 更新记录 +#### v0.0(2022-11-21) - 北野 +* 初始文档 \ No newline at end of file diff --git a/docs/proposal/README.md b/docs/proposal/README.md index 8301b365..42a4dda0 100644 --- a/docs/proposal/README.md +++ b/docs/proposal/README.md @@ -1,4 +1,5 @@ ## Draft * [001-关于paopao-ce的设计定位](001-关于paopao-ce的设计定位.md "关于paopao-ce的设计定位") * [002-关于Friendship功能项的设计](002-关于Friendship功能项的设计.md "关于Friendship功能项的设计") -* [003-关于Followship功能项的设计](003-关于Followship功能项的设计.md "关于Followship功能项的设计") \ No newline at end of file +* [003-关于Followship功能项的设计](003-关于Followship功能项的设计.md "关于Followship功能项的设计") +* [005-引入go-mir优化后端架构设计](005-引入go-mir优化后端架构设计.md "引入go-mir优化后端架构设计") \ No newline at end of file