分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

osgi.net从入门到精通系列之六

发布时间:2023-09-06 02:21责任编辑:傅花花关键词:暂无标签

模块类型空间

模块类型空间是指该模块可以访问的类型集合,它通过模块清单文件的Runtime节点来配置。模块 类型空间由两部分组成,一部分是模块本地的程序集,另一部分是模块依赖其它模块的程序集,它们分别 在Runtime节点下的Assembly和Dependency节点来定义。模块本地程序集是一些指定路径的.dll文件,而 依赖程序集则是依赖于其它模块共享的本地程序集。Dependency节点需要指定依赖的程序集所在的模块和 具体的程序集名称。需要注意的是,如果在Dependency中没有指定具体的程序集,则意味着这个模块依赖 于另一个模块的所有程序集。因此,这种依赖将可能是循环依赖。

如果一个宿主模块还包含了附加模块,那么,宿主模块的类型空间还包括在所有片段中的类型空间。 具体来说,一个模块的类型空间由以下部分组成:

  • 本地程序集
  • 片段模块本地程序集
  • 依赖的程序集
  • 片段模块依赖的程序集
  • 依赖的模块
  • 片段模块依赖的模块

依赖与解析

在UIOSP框架,一个模块可以直接复用另一个模块的共享程序集中的类型。一旦发生垮模块类型复用, 就意味着一个模块对另一个模块产生了依赖。我们可以通过在清单文件Runtime配置节点下声明一个 Dependency配置节点来依赖另一个模块的某个程序集或者所有程序集。为了确保一个模块在运行过程中不 会出现无法加载依赖的类型的异常,在启动前我们必须确保模块依赖的程序集存在。解析就是检查一个模块 所有依赖的程序集是否都存在的过程。只有当模块依赖的程序集存在且依赖程序集所在模块也解析成功, 这个模块才能被正常使用。

模块类加载器与类型加载

在UIOSP,每一个模块都具备独立的类型空间,而模块类加载器通过对CLR类加载器进行扩展,实现 模块隔离的类型加载。该加载器,确保我们只能在一个模块的类型空间中加载类型。模块类加载器的功能 通过IBundle接口的LoadClass和LoadResource这两个方法访问。当从模块加载一个类型时,它会依照图4-11 顺序来加载类型。

图4-11 模块类加载顺序

osgi.net从入门到精通系列之六

原文地址:https://www.cnblogs.com/iwanwu/p/9926183.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved