• 基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET 插件接口IModule


      我们知道,要基于平台(容器)+插件的这种模式进行开发,我们必须定义一组契约,用于约束模块插件开发,也就是说,模块插件需要遵守一定的标准进行开发,才能正常被容器调用,这就是IModule所定义的内容。

    IModule

      IModule定义了模块名称及模块被调用的方法Run(),以及被平台加载和关闭的事件,从定义可我们看到IModule继续自IObject接口。

    IObject

      这里为什么会出现IObject接口,这里提到一个说明,就在是EAS.NET平台设计之初,我们引入了一个想法,我们视程序中的模块、ORM对象、所定义的外部设备等统称为对象,并对这些对象进行管理,基于这于一个想法,我们引入了一个对象的概念,但是在实际应用中,对象这一层次的理解慢慢谈化,也许在将来的设计中,取消这个接口。

      IObject接口显式的定义了对象的说明性信息对象描述和图标,对于IModule接口及IObject接口,都继承自一个重要的接口IPrivilegObject。

    IPrivilegObject

          IPrivilegObject为权限对象接品,平台(运行容器)可以使用其鉴权系统对其实现权限检查,关于系统的权限设计我会在后面专门进行说明。

          在模块插件的接口中,我们看到了很多关于模块自描述的信息,比如名称、说明、类型、程序集、版本号以及开发者等等,定义这些信息的目的在于对模块的自描述,资源管理平台在安装模块的过程中读取这些元数据并存储在数据库,以方便对系统中插件的管理。

           模块元数据中定义的程序集、类型信息用于容器反射调用插件,这也是平台+插件所依赖的关键技术。

           在具体的应用开发中,针对WinFrom和WebForm的不同应用对IModule接口进行了某些扩展和基础实现,用于在应用开发过程的特定应用,以加快开发速度。

       在下一篇文章中,我将会对调用模块插件的平台,也就是运行容器做介绍。

           链接:AgileEAS.NET应用开发平台介绍

  • 相关阅读:
    Python中所有的关键字
    关于selenium的8种元素定位
    对提示框的操作
    selenium+webservice进行百度登录
    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled...报错解决
    Vue中使用echarts
    npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142解决方法
    插入排序
    冒泡排序优化
    roject 'org.springframework.boot:spring-boot-starter-parent:XXX' not found 解决
  • 原文地址:https://www.cnblogs.com/eastjade/p/1716568.html
Copyright © 2020-2023  润新知