开发者中心 开发者中心
  • 简体中文
  • English
视频教程
敢为云网站
  • 6.0版本
  • 6.1 版本
视频教程
敢为云网站
  • 平台概述
  • 平台功能
  • 平台安装
  • 开发者指南
    • 协议插件开发
    • 扩展插件开发
    • 报警插件开发
    • 应用插件开发
      • 前端Web界面开发
      • 前端H5界面开发
      • 后端接口开发
        • 模板引擎
        • 基础开发
          • 上下文操作说明
          • 接口定义及调用
          • 扩展插件安装
        • 内置特性
        • 常见FAQ
      • 工作流程开发
      • 插件打包和发布
      • IoTCenter产品插件化模块单元测试
    • Web可视化开发
    • 3D可视化开发
    • 桌面可视化开发
    • 小程序开发
    • 应用模块接口
  • 项目实战
  • 附录

基础开发

# 后端插件开发

# 上下文操作说明

# 模型映射规范

  1. 禁止定义联合主键,也不推荐使用外键
  2. 鉴于不同数据库对于大小写敏感,强烈建议统一映射为小写
  3. 若无特殊情况,强烈建议使用EF Core注解方式即DataAnnotation

# 上下文命名规范

约定规范:插件名称后缀+DbContext,例如我们创建的Ganweisoft.IoTCenter.Module.UserDemo插件,则上下文名称定义为UserDemoDbContext。

# 上下文基本说明

  1. 请勿删除GwDbContext,保持默认继承GwDbContext,该上下文里面包含操作底层数据模型,比如产品表、设备表、遥测表、遥信等。

  2. 重写OnModelCreating方法,请勿删除base.OnModelCreating(modelBuilder)。

# 跨插件模型操作说明

因我们保持模型独立于插件,如此插件与插件之间完全解耦而无依赖,但我们仍存在需操作其他插件模型的可能,故提供此场景解决方案。将需跨插件操作的模型放于Dto文件夹,且命名规范约定:[类名]+Dto,我们增加了对插件上下文的扩展方法来直接操作跨插件模型。

  1. 查询IoTDbSet<T>。
  2. 新增(IoTAdd、IoTAddAsync、IoTAddRange、IoTAddRangeAsync。
  3. 修改(IoTUpdate、IoTUpdateAsync、IoTUpdateRange、IoTUpdateRangeAsync)。
  4. 删除(IoTRemove、IoTRemoveAsync、IoTRemoveRange、IoTRemoveRangeAsync)。

注意

  1. 模型根据规范约定命名后必须加上所操作映射表即表特性,例如

  1. 新增、修改、删除扩展方法内部直接会SaveChanges或SaveChangesAsync,返回的结果为受影响的行

# 接口定义及调用

# 服务接口定义

响应数据结构必须通过底层暴露的OperateResult包裹并返回,将操作实体进行DTO映射转换,DTO模型存放于Models目录,命名规范约定:[类名]+Model。

# 服务接口实现

通过构造函数注入的上下文直接操作数据库模型。

添加、删除、查询、更新常规基本操作,比如如下添加,AddAsync方法在基类中已有实现。

# 服务接口实现

在Startup类文件中注册服务以及EntityFramework Core上下文。

# 控制器继承

IoT平台使用JWT或Cookie认证授权,所有定义控制器必须继承DefaultController,否则当访问接口时会抛异常或401,通过构造函数使用注册的服务接口,另外请求方式建议遵循RESTful风格。

注意

  1. 本地调试需要切换为非安全模式
  2. 将生成的dll以项目名为文件夹(具体内容请参考plugins文件夹下的内容)放置到指定目录:./IoTCenterWeb/publish/plugins/

重启服务使插件生效

# 本地调试接口

将插件附加到Web API服务进程(单网关启动需附加到GWHost1服务进程),然后通过UI界面操作即可断点调试具体接口

# 接口调试工具

通过正确的账号和密码成功登录IoTCenter平台,浏览器F12查看任意非匿名接口,然后复制请求头中的Cookie信息。

比如我们测试添加用户接口

# 扩展插件安装

提供VisualStudio扩展插件自动解析依赖并发布,具体请下载 (opens new window)并参看扩展插件安装使用说明。

上次更新: 2025/4/14 10:15:09

← 模板引擎 内置特性→

目录
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式