alibaba-COLA框架module分析
概览
COLA-framework的module如下:
cola-common
cola-core
cola-test
用maven-archetype生成的代码例子的module情况:
demo-app
demo-client
demo-controller
demo-domain
demo-infrastructure
start
各module介绍
按照数据流的顺序,分别介绍各moduel的作用,以及代码放置的地方:
xxx-controller:
容易理解,放置所有的`@RestController`;
一般的分包如下:
com.alibaba.xxx.controller
xxx-app:
主要负责获取输入,组装context,做输入校验,发送消息给领域层做业务处理,监听确认消息,如果需要的话使用MetaQ进行消息通知;
一般包含以下这些包:
com.alibaba.sample.command // CmdExe执行器
com.alibaba.sample.command.query // QryExe执行器
com.alibaba.sample.command.extensionpoint // 扩展点(接口)
com.alibaba.sample.command.extension // 扩展(实现)
com.alibaba.sample.command.interceptor // 各种拦截器@XxxInterceptor
com.alibaba.sample.convertor // ConvertorI实现
com.alibaba.sample.event.handler // 事件处理器@EventHandler
com.alibaba.sample.repository // repository,调用db tunnel
com.alibaba.sample.service // Service的实现
com.alibaba.sample.validator // ValidatorI实现
com.alibaba.sample.assembler // 参数装配器
CmdExe和QryExe依赖Repository;
Repository依赖Tunnel获取Domain数据,依赖Converter来做DO/CO等的转换,依赖DomainEventPublisher来发布事件;
xxx-client
xxx-client应该不是功能独立的层,而是作为COLA-framework中`cola-common`模块的第二方库,什么意思?查看cola-common源码和xxx-client的代码,它们的类型应该是平行对应的。即`xxx-client`包含的代码应该是常见的`Service`的接口Facade,上下文信息`Context`以及dto(`ClientObject`、`DomainObject`、`DomainEvent`、`Cmd`和`Qry`)等。
`xxx-client`的分包情况一般是:
com.alibaba.sample.api // Service接口
com.alibaba.sample.context // 一般在拦截器中,请求处理前初始化,上下文在一个请求中会被各层用到
com.alibaba.sample.dto // Cmd和Qry,一个Cmd就是客户的一个请求;Qry是一种特殊的Cmd,它直接操作Tunnel返回数据
com.alibaba.sample.dto.clientobject // 用于调用者(controller、RPC、MTop等)与APP之间的数据转换
com.alibaba.sample.dto.domainevent // 领域事件
xxx-domain
主要是通过领域服务(Domain Service),领域对象(Domain Object)的交互,对上层提供业务逻辑的处理,然后调用下层Repository做持久化处理;
一般包命名如下:
com.alibaba.sample.domain.xxxx // xxxx表示具体的领域对象名称
com.alibaba.sample.domain.xxxx.entity
com.alibaba.sample.domain.xxxx.factory
除了领域对象(属性和行为)外,还可以包含相关的枚举类、DomainFactory等;
xxx-infrastructure
主要包含Repository,Config,Common和message,Repository负责数据的CRUD操作,通过Tunnel的抽象概念来屏蔽具体的数据来源,来源可以是MySQL,NoSql,Search,甚至是HSF等;Config负责应用的配置;Common是一写工具类;负责message通信的也应该放在这一层。
可以包含如下一些包:
com.alibaba.sample.common // 如一些BizCode业务线代码
com.alibaba.sample.common.exception // 系统异常类,ErrorCodeI的实现
com.alibaba.sample.common.util // util
com.alibaba.sample.config // ColaConfig等
com.alibaba.craftsman.tunnel.database // 数据库tunnel,mybatis Mapper等
com.alibaba.sample.tunnel.database.dataobject // 数据库tunnel的DO
com.alibaba.craftsman.tunnel.rpc // rpc tunnel
start
SpringBoot的启动类,入口,读取ColaConfig启动COLA。
总结:各种代码类应该放到合适的位置,使其自明,符合他们所在的分层,各司其职,不能混淆。
alibaba-COLA框架module分析相关推荐
- alibaba/COLA 4.0框架 使用记录
文章目录 背景 COLA框架 开发情况 出现的问题 总结.建议 背景 简介:开发团队之前没用过DDD开发.第一次用https://github.com/alibaba/COLA框架试着做项目,记录一些 ...
- 如何保证同事的代码不会腐烂?一文带你了解 Alibaba COLA 架构
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...
- RPC调用框架比较分析--转载
原文地址:http://itindex.net/detail/52530-rpc-%E6%A1%86%E6%9E%B6-%E5%88%86%E6%9E%90 什么是RPC: RPC(Remote P ...
- RPC调用框架比较分析
什么是RPC: RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. 简言之,RPC ...
- jQuery框架总体分析
From:jQuery框架总体分析 jQuery的功能: 我们日常使用javascript干的最多的事情也就是 1.查找DOM节点 2.然后再对查找到的节点进行操作,例如修改样式 添加事件监听 修改内 ...
- 游戏服务器框架概括分析
游戏服务器框架概括分析 关注公众号 风色年代(itfantasycc) 500G游戏开发资料随便拿! 这篇blog题目涉及的范围真大!以至于在这里需要先写一篇前言把范围缩小.选择写这样一个系列的文章, ...
- Android以太网框架情景分析之启动简介
Android以太网框架情景分析之启动简介 Android网络框架分析系列文章目录: Android P适配以太网功能开发指南 Android以太网框架情景分析之启动简介 Androi ...
- ZK框架的分析与应用
ZK框架的分析与应用 1 ZK框架的引入 1.1 概述 ZK是一套以 AJAX/XUL/Java 为基础的网页应用程序开发框架,用于丰富网页应用程序的使用界面.最大的好处是,在设计AJAX网络应用程序 ...
- Android以太网框架情景分析之NetworkFactory与NetworkAgent深入分析
Android以太网框架情景分析之NetworkFactory与NetworkAgent深入分析 Android网络框架分析系列文章目录: Android P适配以太网功能开发指南 Android以太 ...
最新文章
- 计算机专业推荐表自我介绍,就业推荐表-自我介绍
- 强化学习核心文章一百篇
- 第7章 C控制语句:分支和跳转
- Elasticsearch(三) 使用kibana 操作ES
- python 编辑距离_python实现编辑距离edit distance
- TrueNAS SCALE是什么
- 卷积神经网络的前世今生
- ASP.NET AJAX的客户端框架是鸡肋?
- 智能硬件无线通信协议的那些事儿(一)
- 浅析百度搜索引擎白皮书
- 质心公式_卢瑟福散射公式
- 《电路》邱关源 思维导图 第二章 电阻电路的等效变换
- 云更新服务器更新不了最新游戏,云更新游戏更新自动/手动更新游戏教程
- 禁止spotlight索引外置硬盘或者网络硬盘
- 2021-08-16记一次无意发现正方教务系统的bug
- ‘∞‘ is not a valid numeric or approximate numeric value
- c语言 is函数,关于C语言回调函数的详解~
- Javascript(BOM)浏览器对象 2017-08-01
- 想要下载文章 但没有权限?——试试去文献对应的期刊官网碰碰运气
- rl滤波器原理_滤波电路基本原理
热门文章
- 物联网云平台都有哪些分类
- win10同步服务器文件夹在哪,win10系统一键同步win 10文件夹视图的操作方法
- 怎么用python编写程序计算标准差_自学生信Python(第五天)|如何计算标准差?...
- 个人总结-oracle查询锁表、解锁语句
- 嵌入式C语言编程规范
- JAVA常见的命名规则:见名知意
- M1 Mac安装 PS 2021 闪退、卡启动界面该怎么解决
- 很经典的十五句话,从别人的blog上看来的!
- zynq petalinux编译系统启动文件实战应用
- 004-如何用PS把彩色图片设置成黑白图片?