分层开发&职责

Controller层职责

  • 定义URL路由 [Route]
  • 定义业务功能描述 [ControllerTitle], [ActionTitle]
  • 创建 BLL 实例(只需要定义BLL属性即可)
  • 限制HTTP调用,例如:[HttpGet] / [HttpPost]
  • 权限检查,可以是 [Authorize]标记
  • 参数验证,可以是 [Required]标记
  • 切换数据库连接,控制连接范围
  • 调用BLL
    • 查询数据
    • 数据判断与结构转换
    • 数据导出

避免事项

  • 直接数据库操作
  • 编写大量业务逻辑
  • 校验Action参数失败不要抛出ArgumentException及子类,应该抛出ValidationException



代码示例

demo-code

代码说明

  • 14行,Controller 必须定义在 Controllers 目录下
  • 17,24行,[ControllerTitle], [ActionTitle] 用于描述当前Controller/Action是做的,它们将最终写入操作日志(什么人在什么时候执行了什么功能)
  • 18,25行,[Route] 定义 URL 路由
  • 19行,Controller 必须继承自 BaseController
  • 21行,业务逻辑类的实例采用私有属性的方式引用
  • 34行,数据库连接对象,必须使用 using(.............) 来管理连接范围,确保及时释放



BLL层职责

具体的业务逻辑实现

  • 数据库增删改查
  • 数据判断与结构转换
  • 其它数据源操作(例如OSS)

代码结构特点

  • 小方法
    • 利于复用
  • 职责单一
    • 数据查询
    • 数据加工
  • 不操作 Request/Response



代码示例

demo-code

代码说明

  • 10行,BLL类必须定义在 BLL 目录下
  • 12行,BLL类型必须继承于 BaseBLL