文章目录

  • 背景
    • 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层: 实现数据接口

出现的问题

  1. 面向表结构编程
    感觉这是最大的问题:项目设计时优先设计的表结构,拿传统的方法 用表结构倒推实体对象,把实体对象仅当成数据容器
    开发流程是 Mapper > Enitiy > Service > controller
    ddd要关注领域对象建模,可能先建领域对象再设计表会好点?

  2. 没有规划模块之间的调用。
    调用其他模块的domain层接口时 功能与参数偏差严重

例:新建企业接口,需要同时创建默认部门,默认角色,管理员账号。 默认的对象不可编辑删除
但部门,角色,账号模块只提供了普通的创建接口,不满足创建默认角色部门账号的要求

  1. 参数校验逻辑写在app层,domain层对其他模块提供接口时要重新校验参数
    这个问题属于 领域对象Entity没封装好。
    如果领域对象是普通的pojo,那对其他领域提供接口时还得在逻辑里加校验,防止调用入参不合法
    正确做法是:在领域对象 内包含自检逻辑,确保入参合法
  2. 业务逻辑分散,跨领域调用逻辑分散
    按ddd概念来说,跨领域对象的逻辑应该在 domainService。
    但对接时发现其他人逻辑没全写在domain层里,在app层的executor 校验参数时也耦合了一部分业务逻辑。。。难受
  3. 公共代码分散
    工具类,枚举类等分散在Adapter层、app层、domain层。出现下层(domain)调用上层(app)代码的情况, 最终决定统一迁移到domain层

总结、建议

  1. 优先领域对象建模,然后设计数据库对象
  2. 业务逻辑、公共类 写在domain层
  3. Entity 领域对象 包含自检逻辑

alibaba/COLA 4.0框架 使用记录相关推荐

  1. COLA 2.0架构应用

    最近公司准备启动一个新项目,需要用到COLA 2.0,于是就准备先学习一下COLA 2.0 框架.自己动手生成COLA应用,本文记录生成COLA应用过程.有关COLA 2.0 架构的介绍可以看 应用架 ...

  2. COLA 4.0 - DDD项目实践

    更多内容关注微信公众号:fullstack888 COLA分层架构 COLA 4.0 架构分成COLA架构和COLA组件两个部分: COLA架构:关注应用架构的定义和构建,提升应用质量. COLA组件 ...

  3. COLA 4.0:应用架构的最佳实践

    前几天和几个饿了么的同学聊天,一听说他们还在用COLA 1.0,我二话没说,90度鞠躬,赔礼道歉,虚心聆听他们的吐槽.COLA的初衷旨在控制复杂度,救码农于水火,惭愧的是,早期的思想不成熟,设计也多有 ...

  4. 应用架构COLA 2.0

    很多同学不止一次和我反馈,我们的系统很混乱,主要表现在: 应用的层次结构混乱:不知道应用应该如何分层.应该包含哪些组件.组件之间的关系是什么: 缺少规范的指导和约束:新加一段业务逻辑不知道放在什么地方 ...

  5. Ext2.0框架的Grid使用介绍(转)

     Ext2.0框架的Grid使用介绍 最近空闲时间在学习Ext2.0框架,只有一个字的感叹"强",我从未想到JS代码能够写出这么绚丽的Web页面出来,以前看到YUI,惊若天人,如今 ...

  6. 如何保证同事的代码不会腐烂?一文带你了解 Alibaba COLA 架构

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  7. rk3368 Android9.0 HIDL调试记录

    rk3368 Android9.0 HIDL调试记录 Platform: RK3368 OS: Android 9.0 Kernel: 4.4.194 文章目录 rk3368 Android9.0 H ...

  8. 基于HarmonyOS ArkUI 3.0 框架的木棉花扫雷(上)

    前言 HarmonyOS ArkUI 3.0 框架试玩初体验二来了||ヽ( ̄▽ ̄)ノミ|Ю,这一次相比上一次的 合成1024开发实战,多了部分内容:显示动画.页面跳转与数据传递.网格容器Grid.自定 ...

  9. pytest+yaml设计接口自动化框架过程记录(一步一步记录如何设计,完结撒花),源码提供,视频教程

    pytest+yaml设计接口自动化框架过程记录 第三代框架使用教程,该框架比现在这个完善了很多 框架简介 框架运行演示和功能介绍视频 pytest+yaml框架环境配置和使用教程 0.去年也写了一个 ...

最新文章

  1. 初学ssm框架的信息
  2. Keras创始人:过去6个月,深度学习岗位已崩溃
  3. 【翻译】Play框架入门教程一:建立项目
  4. Android Eclipse JNI 调用 .so文件加载问题
  5. 一些挺不错的visualstudio主题样式
  6. Redis的系统级命令
  7. 从CLR GC到CoreCLR GC看.NET Core为云而生
  8. UI素材|最全面的移动端 UI KIT 模板
  9. WEB打印分页类(JS)
  10. iPhone13系列售价曝光:4535元起售;微信暂停个人帐号新用户注册;Android 12 Beta 3.1发布|极客头条...
  11. 作为电磁波的 Wi-Fi 信号
  12. 4个你未必知道的内存小知识
  13. ArcEngine实现pagelayout中文本元素的属性对话框
  14. spark 类别特征_spark 机器学习基础 数据类型
  15. easyexcell导出专题
  16. 信息系统项目管理师之选择题、案例分析题备考
  17. 使用MediaRecorder录制音频和视频(Camera1)
  18. 96309245通讯异常工行_工商银行信息代码 96309245 是什么意思
  19. iPone实现快速切换表情输入法?
  20. websphere9静默式安装文档(简易版)

热门文章

  1. 到底linux下的管道是什么?
  2. uniapp父子组件传值
  3. SiamFC:用于目标跟踪的全卷积孪生网络 fully-convolutional siamese networks for object tracking
  4. 在西雅图华盛顿大学 (University of Washington) 就读是怎样一番体验?
  5. MongoDB勒索事件中,DBA们到底该学到什么?
  6. anchor机制讲解
  7. 世界杯流量大作战,来看各路品牌如何玩转世界杯营销?
  8. R 图表中的字体调整
  9. php药物,php药品进销存管理系统
  10. P7961 [NOIP2021] 数列