OSGi.NET
理论与应用实践
西安尤埃信息技术有限公司
架构师 陈贞宝
2010.9.14
目录
OSGi.NET概述
OSGi.NET原理
OSGi.NET基础服务
OSGi.NET辅助工具
OSGi.NET实践
OSGi.NET概述
什么是OSGi
OSGi:Open Service Gateway Initiative
Wiki定义:一方面它指OSGi Alliance组织;
另一方面指该组织制定的一个基于Java语言
的服务规范——OSGi服务平台(Service
Pl...
OSGi应用现状
IBM的Eclipse、WebSphere
Oracle的Weblogic
Paramus的Infiniflow Service Fabric
ProSyst的ModuleFusion
Red Hat的JBoss
Spring...
什么是OSGi.NET
OSGi规范移植到.NET平台的实现
基于.NET的开放服务平台,支持.NET
Framework 2.0+
微内核+模块+面向服务架构思想
高内聚与低耦合
支持面向服务编程模型
热插拔与动态性
复杂系统=模块+服务+模...
OSGi.NET主要功能
模块化与插件化
热插拔与动态性支持
面向服务架构支持
模块扩展性支持
安全与隔离支持
支持控制台、Windows服务、WinForm、
WPF、ASP.NET等各种.NET环境
OSGi.NET 3分钟体验
尤埃开放服务平台UIOSP
(XAUI Open Service Platform)
Demo
为什么OSGi
开放平台
简单易懂,快速集成
标准模块化开发
组件级复用的解决方案
高可扩展性支持
面向服务架构支持
动态与热插拔
OSGi.NET原理
OSGi.NET体系结构
模块层概述
提供了对模块化和插件化完整规范与定义
模块层定义了
模块和片段模块
模块间依赖与解析
模块类加载模型
模块扩展支持
模块定义
定义
封装了特定的功能,向其它模块提供服务契约与
实现
由.NET类和其它资源组成
定义了模块基本信息、模块激活信息、模块运行
时描述、模块的服务以及模块扩展信息
模块定义
标准目录结构
位于OSGi.NET框架指定的plugins目录下
由模块定义文件Manifest.xml和相关运行文
件组成
Manifest.xml
模块清单文件
基本信息——<Bundle>XML节点
激活器信息——<Activator>XML节点
运行时描述——<Runtime>XML节点
服务信息——<Services>XML节点
扩展信息——<Extensi...
Manifest.xml
示例结构
模块类型空间
模块 = Manifest.xml + 类 + 资源
模块类型空间是指这个模块可以访问的所有类
型的集合
模块类型空间 = 本地程序集类型 + 依赖程序
集类型
在Manifest.xml的<Runtime> XML配置节点定
义
模块运行时定义
<Runtime> XML配置节点
模块本地程序集
模块依赖的程序集
使用<Assembly> XML配置节点声明本地程序
集
使用<Dependency> XML配置节点声明依赖
依赖其它模块的程序集
依赖其它模块(所有程序集)
运行时定义示例
模块类型加载
模块类型空间组成
本地程序集
片段模块(子模块)本地程序集
依赖的程序集
依赖的模块
类加载支持
对CLR类加载机制进行扩展
通过IBundle.LoadClass提供类加载功能
模块类型加载
类加载顺序
.NET类库
本地程序集
片段模块本地程序集
依赖的程序集
片段模块依赖的程序集
依赖的模块
动态依赖的程序集
模块扩展支持
通过<ExtensionPoint> XML节点定义一个可
扩展点
使用XML Schema定义了扩展信息的格式
使用IBundleContext的GetExtensionPoints、
GetExtensions等方法获取扩展信...
生命周期层状态
INSTALLED——模块已经成功安装
RESOLVED——模块已经解析了所有依赖,
意味着模块准备启动或者已经停止
STARTING——模块正在启动
ACTIVE——模块已经成功激活且正在运行
STOPPING——模块正在停止...
生命周期层状态迁移
生命周期层操作
通过IBundleContext提供了模块的安装操作
通过IBundle提供了模块生命周期操作接口
解析IBundle.Resolve
启动IBundle.Start
停止IBundle.Stop
卸载IBundle.Unins...
服务层概述
服务=服务契约+实现
服务契约:接口
实现:接口实现类
将接口与实现分离
允许提供不同实现
动态发现与绑定服务
面向服务支持
服务注册表ServiceRegistry
服务的容器
通过IBundleContext访问,包括:AddService、
RemoveService、GetService
通过<Sevices> XML配置节点自动注册和卸载服
务
面向服务支持
服务发现与引用
通过使用IBundleContext.GetService等接口搜索
服务
获取返回值绑定到服务契约
模块安全
确保模块不被非法篡改
非对称加密
数字签名
模块安全
模块安全沙箱,避
免非法访问
操作系统资源
.NET框架类库功
能
OSGi.NET框架
其它模块
模块安全沙箱
基于.NET Code Access Security(CAS)技
术
使用程序集证据对代码进行授权
提供了代码操作权限认证
CAS基本权限
扩展权限BundleLifecyclePermission、
BundleMetadat...
模块隔离
模块隔离目的
确保模块不会影响到OSGi.NET框架
确保模块不会影响另一个模块
使用逻辑进程对模块进行隔离
OSGi.NET框架实时管理与监控模块运行状况
模块占用资源
模块故障检测
模块故障恢复
OSGi.NET基础服务
模块管理服务
模块管理
查询模块
监控模块变化
生命周期操作
模块元数据
模块依赖管理
更改模块信息
提供IBundleManagementService服务契约
启动级别服务
控制启动和停止Bundle的顺序
提供了一下功能
安全模式启动
启动进度报告
处理不稳定模块
处理高优先级模块
提供了IStartLevelService服务契约
启动级别服务
原理
启动级别为非负整数, 0表示没有任何模块启动
OSGi.NET启动级别为1
启动时,框架从级别1开始增加,每增加一次便启
动相应级别的模块,直到级别增加到设置的启动
基本
停止时,从设置的启动基本开始减少,每减少一
次便停止...
服务组件管理服务
提供了对OSGi.NET框架内服务的管理
注册服务
卸载服务
服务查询
服务监控
模块间服务引用关系
服务计数
消息总线服务
提供了模块间
基于消息总线
的通讯
基于消息主题
发布消息
订阅消息
处理消息
OSGi.NET辅助工具
OSGi.NET模板
模块配置工具
远程管理控制台
监控与管理工具
OSGi.NET实践
UIOSP简介
UIOSP:XAUI Open Service Platform
支持面向服务构架的开放服务平台
OSGi在.NET平台的实现,目前是RC2版本
兼容各种.NET环境,包括桌面环境、Web环
境和移动应用环境
目前与HP、Mic...
基于UIOSP应用架构
UIOSP应用——云计算平台
UIOSP基本功能实践
模块化
面向服务
模块扩展
UIOSP实践——模块化
1 创建默认模块
模块项目结构和目录结构
Activator与IBundleActivator、IBundle、
IBundleContext
Manifest.xml介绍
2 初始状态
3 启动级别
UIOSP实践——模块化
4 模块运行时与类加载
本地程序集
共享本地程序集与程序集依赖
类加载
5 模块生命周期操作
6 晚激活
7 片段模块等其它(略)
UIOSP实践——面向服务
1 服务提供者
通过激活器注册服务
通过Manifest.xml注册
2 服务消费者
服务查询与绑定
服务事件
UIOSP实践——模块扩展
1 扩展点
暴露扩展点
处理扩展点
处理扩展点事件
2 扩展
扩展定义
Q & A
The end
Thanks!
Upcoming SlideShare
Loading in …5
×

OSGi.NET理论与应用实践

3,729 views

Published on

尤埃开放服务平台原理简介

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,729
On SlideShare
0
From Embeds
0
Number of Embeds
1,189
Actions
Shares
0
Downloads
47
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

OSGi.NET理论与应用实践

  1. 1. OSGi.NET 理论与应用实践 西安尤埃信息技术有限公司 架构师 陈贞宝 2010.9.14
  2. 2. 目录 OSGi.NET概述 OSGi.NET原理 OSGi.NET基础服务 OSGi.NET辅助工具 OSGi.NET实践
  3. 3. OSGi.NET概述
  4. 4. 什么是OSGi OSGi:Open Service Gateway Initiative Wiki定义:一方面它指OSGi Alliance组织; 另一方面指该组织制定的一个基于Java语言 的服务规范——OSGi服务平台(Service Platform) OSGi服务平台是一个动态的模块化框架:支 持模块化与插件化、具有热插拔与动态特性、 支持SOA、支持模块扩展、提供安全性支持 等
  5. 5. OSGi应用现状 IBM的Eclipse、WebSphere Oracle的Weblogic Paramus的Infiniflow Service Fabric ProSyst的ModuleFusion Red Hat的JBoss SpringSource的SpringSource应用平台 Sun Microsystem的GlassFish企业服务器 BWM车载系统 其它
  6. 6. 什么是OSGi.NET OSGi规范移植到.NET平台的实现 基于.NET的开放服务平台,支持.NET Framework 2.0+ 微内核+模块+面向服务架构思想 高内聚与低耦合 支持面向服务编程模型 热插拔与动态性 复杂系统=模块+服务+模块+…
  7. 7. OSGi.NET主要功能 模块化与插件化 热插拔与动态性支持 面向服务架构支持 模块扩展性支持 安全与隔离支持 支持控制台、Windows服务、WinForm、 WPF、ASP.NET等各种.NET环境
  8. 8. OSGi.NET 3分钟体验 尤埃开放服务平台UIOSP (XAUI Open Service Platform) Demo
  9. 9. 为什么OSGi 开放平台 简单易懂,快速集成 标准模块化开发 组件级复用的解决方案 高可扩展性支持 面向服务架构支持 动态与热插拔
  10. 10. OSGi.NET原理
  11. 11. OSGi.NET体系结构
  12. 12. 模块层概述 提供了对模块化和插件化完整规范与定义 模块层定义了 模块和片段模块 模块间依赖与解析 模块类加载模型 模块扩展支持
  13. 13. 模块定义 定义 封装了特定的功能,向其它模块提供服务契约与 实现 由.NET类和其它资源组成 定义了模块基本信息、模块激活信息、模块运行 时描述、模块的服务以及模块扩展信息
  14. 14. 模块定义 标准目录结构 位于OSGi.NET框架指定的plugins目录下 由模块定义文件Manifest.xml和相关运行文 件组成
  15. 15. Manifest.xml 模块清单文件 基本信息——<Bundle>XML节点 激活器信息——<Activator>XML节点 运行时描述——<Runtime>XML节点 服务信息——<Services>XML节点 扩展信息——<ExtensionPoint>和 <Extension>XML节点 详细信息——<BundleInfo>XML节点
  16. 16. Manifest.xml 示例结构
  17. 17. 模块类型空间 模块 = Manifest.xml + 类 + 资源 模块类型空间是指这个模块可以访问的所有类 型的集合 模块类型空间 = 本地程序集类型 + 依赖程序 集类型 在Manifest.xml的<Runtime> XML配置节点定 义
  18. 18. 模块运行时定义 <Runtime> XML配置节点 模块本地程序集 模块依赖的程序集 使用<Assembly> XML配置节点声明本地程序 集 使用<Dependency> XML配置节点声明依赖 依赖其它模块的程序集 依赖其它模块(所有程序集)
  19. 19. 运行时定义示例
  20. 20. 模块类型加载 模块类型空间组成 本地程序集 片段模块(子模块)本地程序集 依赖的程序集 依赖的模块 类加载支持 对CLR类加载机制进行扩展 通过IBundle.LoadClass提供类加载功能
  21. 21. 模块类型加载 类加载顺序 .NET类库 本地程序集 片段模块本地程序集 依赖的程序集 片段模块依赖的程序集 依赖的模块 动态依赖的程序集
  22. 22. 模块扩展支持 通过<ExtensionPoint> XML节点定义一个可 扩展点 使用XML Schema定义了扩展信息的格式 使用IBundleContext的GetExtensionPoints、 GetExtensions等方法获取扩展信息 使用IBundleContext.ExtensionChanged事件监听 是否有模块对其进行扩展 模块在启动时添加扩展,停止时卸载扩展 通过<Extension> XML节点定义一个扩展 标准XML描述了扩展信息 动态实现扩展
  23. 23. 生命周期层状态 INSTALLED——模块已经成功安装 RESOLVED——模块已经解析了所有依赖, 意味着模块准备启动或者已经停止 STARTING——模块正在启动 ACTIVE——模块已经成功激活且正在运行 STOPPING——模块正在停止 UNINSTALLED——模块已经被卸载
  24. 24. 生命周期层状态迁移
  25. 25. 生命周期层操作 通过IBundleContext提供了模块的安装操作 通过IBundle提供了模块生命周期操作接口 解析IBundle.Resolve 启动IBundle.Start 停止IBundle.Stop 卸载IBundle.Uninstall
  26. 26. 服务层概述 服务=服务契约+实现 服务契约:接口 实现:接口实现类 将接口与实现分离 允许提供不同实现 动态发现与绑定服务
  27. 27. 面向服务支持 服务注册表ServiceRegistry 服务的容器 通过IBundleContext访问,包括:AddService、 RemoveService、GetService 通过<Sevices> XML配置节点自动注册和卸载服 务
  28. 28. 面向服务支持 服务发现与引用 通过使用IBundleContext.GetService等接口搜索 服务 获取返回值绑定到服务契约
  29. 29. 模块安全 确保模块不被非法篡改 非对称加密 数字签名
  30. 30. 模块安全 模块安全沙箱,避 免非法访问 操作系统资源 .NET框架类库功 能 OSGi.NET框架 其它模块
  31. 31. 模块安全沙箱 基于.NET Code Access Security(CAS)技 术 使用程序集证据对代码进行授权 提供了代码操作权限认证 CAS基本权限 扩展权限BundleLifecyclePermission、 BundleMetadataPermission、ServicePermission、 BundleEventPermission等
  32. 32. 模块隔离 模块隔离目的 确保模块不会影响到OSGi.NET框架 确保模块不会影响另一个模块 使用逻辑进程对模块进行隔离 OSGi.NET框架实时管理与监控模块运行状况 模块占用资源 模块故障检测 模块故障恢复
  33. 33. OSGi.NET基础服务
  34. 34. 模块管理服务 模块管理 查询模块 监控模块变化 生命周期操作 模块元数据 模块依赖管理 更改模块信息 提供IBundleManagementService服务契约
  35. 35. 启动级别服务 控制启动和停止Bundle的顺序 提供了一下功能 安全模式启动 启动进度报告 处理不稳定模块 处理高优先级模块 提供了IStartLevelService服务契约
  36. 36. 启动级别服务 原理 启动级别为非负整数, 0表示没有任何模块启动 OSGi.NET启动级别为1 启动时,框架从级别1开始增加,每增加一次便启 动相应级别的模块,直到级别增加到设置的启动 基本 停止时,从设置的启动基本开始减少,每减少一 次便停止相应的模块,直到级别为0
  37. 37. 服务组件管理服务 提供了对OSGi.NET框架内服务的管理 注册服务 卸载服务 服务查询 服务监控 模块间服务引用关系 服务计数
  38. 38. 消息总线服务 提供了模块间 基于消息总线 的通讯 基于消息主题 发布消息 订阅消息 处理消息
  39. 39. OSGi.NET辅助工具
  40. 40. OSGi.NET模板
  41. 41. 模块配置工具
  42. 42. 远程管理控制台
  43. 43. 监控与管理工具
  44. 44. OSGi.NET实践
  45. 45. UIOSP简介 UIOSP:XAUI Open Service Platform 支持面向服务构架的开放服务平台 OSGi在.NET平台的实现,目前是RC2版本 兼容各种.NET环境,包括桌面环境、Web环 境和移动应用环境 目前与HP、Microsoft合作在某国企实施基于 UIOSP的应用 成功应用于AppStore和SaaS Engine研发
  46. 46. 基于UIOSP应用架构
  47. 47. UIOSP应用——云计算平台
  48. 48. UIOSP基本功能实践 模块化 面向服务 模块扩展
  49. 49. UIOSP实践——模块化 1 创建默认模块 模块项目结构和目录结构 Activator与IBundleActivator、IBundle、 IBundleContext Manifest.xml介绍 2 初始状态 3 启动级别
  50. 50. UIOSP实践——模块化 4 模块运行时与类加载 本地程序集 共享本地程序集与程序集依赖 类加载 5 模块生命周期操作 6 晚激活 7 片段模块等其它(略)
  51. 51. UIOSP实践——面向服务 1 服务提供者 通过激活器注册服务 通过Manifest.xml注册 2 服务消费者 服务查询与绑定 服务事件
  52. 52. UIOSP实践——模块扩展 1 扩展点 暴露扩展点 处理扩展点 处理扩展点事件 2 扩展 扩展定义
  53. 53. Q & A
  54. 54. The end Thanks!

×