分层开发&职责
Controller层职责
- 定义URL路由 [Route]
- 定义业务功能描述 [ControllerTitle], [ActionTitle]
- 创建 BLL 实例(只需要定义BLL属性即可)
- 限制HTTP调用,例如:[HttpGet] / [HttpPost]
- 权限检查,可以是 [Authorize]标记
- 参数验证,可以是 [Required]标记
- 切换数据库连接,控制连接范围
- 调用BLL
- 查询数据
- 数据判断与结构转换
- 数据导出
避免事项
- 直接数据库操作
- 编写大量业务逻辑
- 校验Action参数失败不要抛出ArgumentException及子类,应该抛出ValidationException
代码示例
代码说明
- 14行,Controller 必须定义在 Controllers 目录下
- 17,24行,[ControllerTitle], [ActionTitle] 用于描述当前Controller/Action是做的,它们将最终写入操作日志(什么人在什么时候执行了什么功能)
- 18,25行,[Route] 定义 URL 路由
- 19行,Controller 必须继承自 BaseController
- 21行,业务逻辑类的实例采用私有属性的方式引用
- 34行,数据库连接对象,必须使用 using(.............) 来管理连接范围,确保及时释放
BLL层职责
具体的业务逻辑实现
- 数据库增删改查
- 数据判断与结构转换
- 其它数据源操作(例如OSS)
代码结构特点
- 小方法
- 利于复用
- 职责单一
- 数据查询
- 数据加工
- 不操作 Request/Response
代码示例
代码说明
- 10行,BLL类必须定义在 BLL 目录下
- 12行,BLL类型必须继承于 BaseBLL