# 代码结构

# 解决方案约定

单个服务在解决方案里面体现为5+1的模式

由于在大量服务存在的情况下,普通项目的3层结构已经无法支持该行为,需要细化到5层,分别为

1. 服务启动层
2. 接口服务层
3. 业务领域层
4. 实体模型层
5. 数据仓储层

另外,由于各个服务之间存在公共代码,例如工具类等,所以需要一个公共库来进行解耦:

1. 公共库

注意

公共库只能被引用,不可以主动引用任何接口服务层,因为这将会导致引用的接口在多个服务中一并出现

关于服务的5层,可以根据情况适当的减少你的层数,比如服务接口较少或者不与任何其他业务存在连接的情况下,可以将所有的代码除了公共库之外都编写在服务启动层

例如: 文件上传服务

# 命名规范

客户名.系统名.服务名.作用标识

作用标识:

Class Description
Entry 启动类库(Web API)
Service 服务接口(类库)
Model 实体模型(类库)
Domain 业务领域(类库)
Repository 数据仓储(类库)

假如有个客户公司 [SANSHI] 需要做一个项目 [WUYE]

系统管理服务:

SANSHI.WUYE.System.Entry-----启动WebApi
SANSHI.WUYE.System.Service-----接口服务
SANSHI.WUYE.System.Model-----实体模型
SANSHI.WUYE.System.Domain-----业务领域
SANSHI.WUYE.System.Repository-----数据仓储

工作流服务:

SANSHI.WUYE.Workflow.Entry-----启动WebApi
SANSHI.WUYE.Workflow.Service-----接口服务
SANSHI.WUYE.Workflow.Model-----实体模型
SANSHI.WUYE.Workflow.Domain-----业务领域
SANSHI.WUYE.Workflow.Repository-----数据仓储

提示

对于多服务的场景下,你可能需要一个common类库来解耦各个服务之间的共性, 我们可以定义一个公共类库

例如: SANSHI.WUYE.Common