项目介绍
获取指定的数据源内容,通过相关规则进行数据提取,再写入数据库中。
战略设计
领域划分
子域划分(下载领域)
核心子域(下载)
获取对应数据源的内容为当前领域的目标
通用领域(代理)
代理服务不仅可以给当前领域用,也可以对外提供服务给他人用
支撑子域(过滤、校验)
辅助获取内容功能
聚合划分(下载领域)
- 由httpEntity(http网页内容下载)、HttpCommandValObj(下载规则)、FilterEntity(过滤规则)、ProxyEntity(代理)、HttpCheckEntity(http内容校验)组合成http下载的聚合, 整个实体方法调用流程编排,由HttpAggregate统一处理,对外提供领域服务即可。
- 聚合和子域是从两个角度来划分领域,子域是垂直划分、聚合是水平(流程调用)划分。
- 实体是有状态的,他们靠id来保证唯一,由值对象进行属性描述,他们对外提供的方法可以改变自身内容。值对象是无状态的,靠属性保证唯一,他们是不可变的,对外提供方法只是数据加工提取,可以通过新建值对象来替换原来对象达到改变他们自身内容的效果。
战略设计
代码结构
interfaces # 接口层
http # http接口
assembler # 转换器 dto -> do
dto
controller
mq
...
application # 应用层
service # 向上供接口层调用,参数为do, 向下封装领域服务
domain # 领域层
entity # 实体
valobj # 值对象
factory # 创建实体的工厂
service # 领域服务
infrastructure # 基础层
config # 配置代码
util # 通用工具
数据传输过程
- 客户端与接口层交互,他们通过dto进行数据传输
- 接口层通过适配器将dto转成do,传输给应用层
- 应用层接收do,这里我认为应用层应该以某一领域为主,或者以流程中第一个领域为主,所以他接收的参数就可以是主领域的value object,领域间的value object转换,可以在应用层添加相关适配器, 适配器推荐使用 MapStruct
- 领域层通过领域服务与应用层交互,他们之间传输的是value object
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。