alibaba/COLA 4.0框架 使用记录
文章目录
- 背景
- COLA框架
- 开发情况
- 出现的问题
- 总结、建议
背景
简介:开发团队之前没用过DDD开发。第一次用https://github.com/alibaba/COLA框架试着做项目,记录一些遇到的问题
https://github.com/alibaba/COLA
COLA框架
COLA 4.0 简介
https://blog.csdn.net/significantfrank/article/details/110934799梳理项目结构与调用流程
开发情况
- 项目目标
组织权限中心(新增企业/部门/员工,赋予角色,关联权限) - 拆分模块
企业,部门,员工,账号,角色,权限 - 开发人员任务分配
一人负责一个模块的逻辑开发 - 开发流程
Adapter层: 写对前端暴露接口
app层: 校验处理参数,调用其他模块的服务
Domain层: 写业务处理逻辑
Domain-Gatway: 定义数据接口
infra层: 实现数据接口
出现的问题
面向表结构编程
感觉这是最大的问题:项目设计时优先设计的表结构,拿传统的方法 用表结构倒推实体对象,把实体对象仅当成数据容器
开发流程是 Mapper > Enitiy > Service > controller
ddd要关注领域对象建模,可能先建领域对象再设计表会好点?没有规划模块之间的调用。
调用其他模块的domain层接口时 功能与参数偏差严重
例:新建企业接口,需要同时创建默认部门,默认角色,管理员账号。 默认的对象不可编辑删除
但部门,角色,账号模块只提供了普通的创建接口,不满足创建默认角色部门账号的要求
- 参数校验逻辑写在app层,domain层对其他模块提供接口时要重新校验参数
这个问题属于 领域对象Entity没封装好。
如果领域对象是普通的pojo,那对其他领域提供接口时还得在逻辑里加校验,防止调用入参不合法
正确做法是:在领域对象 内包含自检逻辑,确保入参合法 - 业务逻辑分散,跨领域调用逻辑分散
按ddd概念来说,跨领域对象的逻辑应该在 domainService。
但对接时发现其他人逻辑没全写在domain层里,在app层的executor 校验参数时也耦合了一部分业务逻辑。。。难受 - 公共代码分散
工具类,枚举类等分散在Adapter层、app层、domain层。出现下层(domain)调用上层(app)代码的情况, 最终决定统一迁移到domain层
总结、建议
- 优先领域对象建模,然后设计数据库对象
- 业务逻辑、公共类 写在domain层
- Entity 领域对象 包含自检逻辑
alibaba/COLA 4.0框架 使用记录相关推荐
- COLA 2.0架构应用
最近公司准备启动一个新项目,需要用到COLA 2.0,于是就准备先学习一下COLA 2.0 框架.自己动手生成COLA应用,本文记录生成COLA应用过程.有关COLA 2.0 架构的介绍可以看 应用架 ...
- COLA 4.0 - DDD项目实践
更多内容关注微信公众号:fullstack888 COLA分层架构 COLA 4.0 架构分成COLA架构和COLA组件两个部分: COLA架构:关注应用架构的定义和构建,提升应用质量. COLA组件 ...
- COLA 4.0:应用架构的最佳实践
前几天和几个饿了么的同学聊天,一听说他们还在用COLA 1.0,我二话没说,90度鞠躬,赔礼道歉,虚心聆听他们的吐槽.COLA的初衷旨在控制复杂度,救码农于水火,惭愧的是,早期的思想不成熟,设计也多有 ...
- 应用架构COLA 2.0
很多同学不止一次和我反馈,我们的系统很混乱,主要表现在: 应用的层次结构混乱:不知道应用应该如何分层.应该包含哪些组件.组件之间的关系是什么: 缺少规范的指导和约束:新加一段业务逻辑不知道放在什么地方 ...
- Ext2.0框架的Grid使用介绍(转)
Ext2.0框架的Grid使用介绍 最近空闲时间在学习Ext2.0框架,只有一个字的感叹"强",我从未想到JS代码能够写出这么绚丽的Web页面出来,以前看到YUI,惊若天人,如今 ...
- 如何保证同事的代码不会腐烂?一文带你了解 Alibaba COLA 架构
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...
- rk3368 Android9.0 HIDL调试记录
rk3368 Android9.0 HIDL调试记录 Platform: RK3368 OS: Android 9.0 Kernel: 4.4.194 文章目录 rk3368 Android9.0 H ...
- 基于HarmonyOS ArkUI 3.0 框架的木棉花扫雷(上)
前言 HarmonyOS ArkUI 3.0 框架试玩初体验二来了||ヽ( ̄▽ ̄)ノミ|Ю,这一次相比上一次的 合成1024开发实战,多了部分内容:显示动画.页面跳转与数据传递.网格容器Grid.自定 ...
- pytest+yaml设计接口自动化框架过程记录(一步一步记录如何设计,完结撒花),源码提供,视频教程
pytest+yaml设计接口自动化框架过程记录 第三代框架使用教程,该框架比现在这个完善了很多 框架简介 框架运行演示和功能介绍视频 pytest+yaml框架环境配置和使用教程 0.去年也写了一个 ...
最新文章
- 初学ssm框架的信息
- Keras创始人:过去6个月,深度学习岗位已崩溃
- 【翻译】Play框架入门教程一:建立项目
- Android Eclipse JNI 调用 .so文件加载问题
- 一些挺不错的visualstudio主题样式
- Redis的系统级命令
- 从CLR GC到CoreCLR GC看.NET Core为云而生
- UI素材|最全面的移动端 UI KIT 模板
- WEB打印分页类(JS)
- iPhone13系列售价曝光:4535元起售;微信暂停个人帐号新用户注册;Android 12 Beta 3.1发布|极客头条...
- 作为电磁波的 Wi-Fi 信号
- 4个你未必知道的内存小知识
- ArcEngine实现pagelayout中文本元素的属性对话框
- spark 类别特征_spark 机器学习基础 数据类型
- easyexcell导出专题
- 信息系统项目管理师之选择题、案例分析题备考
- 使用MediaRecorder录制音频和视频(Camera1)
- 96309245通讯异常工行_工商银行信息代码 96309245 是什么意思
- iPone实现快速切换表情输入法?
- websphere9静默式安装文档(简易版)