分层开发,2个重要的基类

基于Nebula开发的项目应该尊守必要的 分层开发职责

本文主要介绍2个重要基类的核心功能。



BaseController核心功能

  • 用户身份识别
    • bool IsAuthenticated 属性
      • 判断当前请求是否为已登录用户
    • IUserInfo GetUserInfo()
      • 获取当前请求的用户身份信息
    • string GetTenantId()
      • 用于获取【当前用户】所属于的租户ID
      • 如果是未登录用户,则会抛出异常
  • 数据库连接管理
    • DbContext CreateMasterConnection()
      • 切换到主库
    • DbContext CreateAppDbConnection(string name)
      • 切换到应用库
    • DbContext CreateTenantConnection(string tenantId = null)
      • 切换到租户库,参数为null时调用GetTenantId()
  • 服务之间调用
    • Task<T> SendRequestAsync<T>(HttpOption httpOption)
      • 发送HTTP请求,并返回结果
    • Task TransferRequestAsync(string url, string method = null)
      • 将当前请求转发给一个内部服务来处理
  • HttpRequest/HttpResponse 方法封装
    • string GetHeader(string name)
    • void SetHeader(string name, string value)
    • string GetCookie(string name)
    • void SetCookie(string name, string value, TimeSpan? expiry = null)





BaseBLL核心功能

  • 用户身份识别
    • IUserInfo GetUserInfo()
    • string GetTenantId()
  • 数据库连接获取
    • DbContext tntContext 属性
      • 获取当前Controller中的【最近】打开的【租户库】连接对象
    • DbContext masterContext 属性
      • 获取当前Controller中的【最近】打开的【主库】连接对象
  • 通用 Insert/Update/Delete
    • Task<long> InsertAsync<T>(T entity, DbContext dbContext)
    • Task<int> UpdateAsync<T>(T entity, DbContext dbContext)
    • Task<int> DeleteAsync<T>(object key, DbContext dbContext)
    • Task<T> GetByKeyAsync<T>(object key, DbContext dbContext)