Home - marmot-cn/marmot-framework GitHub Wiki
README
概述
信用体系框架是基于公司特定业务(信用体系网站)而设计的一套框架. 主要方向是应对客户私有云体系以及网络分层而设计区分:
- 后端服务层
- 提供业务
- 提供SDK
- 提供标准的
RESTful
和application/vnd.api+json
模式接口
- 前端服务层
- 基于SDK和页面开发特定网站功能
- 业务网关
- 基于SDK开发特定业务数据接口
- 接口以满足特定业务功能而开发
框架简介
该框架主要是基于DDD,CQRS,六边形模型的思路去架构.基于DDD领域驱动的微服务架构,我们可以更好的和用户方来分析项目需求(可以配合使用四色原型),大家可以使用通用的领域语言来讨论领域对象.使用composer做第三方package管理.
采取事件驱动模式开发:
Command -> CommandBus -> CommandHandler -> Event
.
特点
更多是想把基于数据库编程(一个表单为一个对象,ORM模式)的思路,解耦为领域对象和存储层.数据库的表只是作为一个存储层来考虑.领域对象是我们通用讨论的对象. 你是不是也在开发中经常遇见如下问题:
- 几乎没有使用过
interface
,abstract
和trait
. - 没有深入理解过什么是面向抽象.
- 在日常开发中几乎很难真正使用上设计模式.
- 无法构建脱离于数据库的单元测试.
- 构建的
model
其实就是一张数据库表的映射, 没有任何业务逻辑, 只有一些对表的操作方法. - 针对
MySQL
的三星索引模式约束SQL
语句的使用. - 针对接口实现
HTTP
模式的一些特性, 如- gzip
- etag(前端自定义是否使用缓存)
- ...
- 在后端接口调用上重新封装实现并行接口请求.
难点
- 没有固定开发模式, 在应用开发模式下只是大致遵循
CQRS
模式, 内部领域模型, 领域服务以及抽象层的制定都是遵循对面向对象的理解. - 需要理解
SOLID
原则重要.
DDD
简单来说DDD专注的是业务实现, 而不是技术实现本身. 推荐一些读物方便大家理解:
CQRS
其实这里我想关注的视角是Command
模式, 我把所有对业务的动作都会提炼成一个命令来体现.
查询方面我们暂时实现的是使用ES
, 来提供查询. 至于数据同步可以使用消息队列来实现, 我们目前使用的是RabbitMQ
六边形模型
我么基于领域模型做核心封装, 适配器和不同的翻译器应对不同使用场景.
后续会有实际场景介绍
checklist
- 版本
- 更新文档
- 升级手册
- Getting Started
- 安装
- 配置文件使用
- 目录结构
- 框架目录结构 not done
- 应用目录结构
- 文档
- 项目字典
- 控件规范
- 错误规范
- 接口文档
- 一步开发网站 not done
- 一步开发api not done @晓莉
- 部署
- 前端环境
- 后端环境
- 开发环境
- 自动化
- 容器镜像包
- 数据卷容器
- 数据卷容器slim
- 代码设计
- SOLID
- 单一职责
- 开放封闭
- 依赖倒置
- 里氏替换 not done
- 接口隔离 not done
- 设计模式
- 模板模式
- 策略模式
- 命令模式
- 工厂模式
- 代理模式
- 门面模式
- 观察者模式
- 六边形模型 not done
- CQRS not done
- SOLID
- 基本
- 路由
- 前端路由
- 后端路由
- 日志
- 验证
- 路由
- 开发概念
- 领域模型
- 领域服务
- 命令
- 命令处理器
- 翻译器(六边形模型)
- 适配器
- 仓库
- 错误规范
- 控件规范
- 接口请求
- Query
- RowQuery
- RowCacheQuery
- FragmentCacheQuery
- DataCacheQuery
- Guzzle
- 单条请求
- 并行多条请求
- 缓存
- Etag
- Period
- 模板
smarty
插件说明- widget
- marmotencode
- csrf not done
- 样例代码
- 前端服务层
- 通用模式 not done
- sdk模式
- 后端服务层
- 前端服务层
- 安全 not done
- 测试 not done
- 单元测试 not done
其他
- 代码命名规范?