目录
1,OSGi.NET的OSGi.NET规范原理
OSGi.NET体系结构如下所示,从功能层次上划分为模块层、生命周期层、服务层、安全层、基础服务层和辅助设计工具层。模块层定义了模块的结构、宿主模块和片段模块、模块的配置清单、模块类型依赖与解析、模块类型加载和模块本地化。模块层仅通过IBundlse向用户暴露了LoadClass和LoadResource两个方法,分别用于从模块加载一个类型和加载资源。基于UIOSP定义模块时,类加载必须使用这两个方法来加载类型和资源。生命周期层提供了模块生命周期状态定义、状态迁移以及状态迁移相关的接口。它实现了模块的动态安装、解析、启动、停止和卸载操作。生命周期相关接口由IBundleContext和IBundle提供。IBundleContext提供了InstallBundle方法,用于在一个模块中动态安装另一个模块。IBundle提供了Start、Stop、Uninstall生命周期操作方法,分别用于动态的启动、停止和卸载当前模块。服务层提供了面向服务支持。该层提供了一个服务总线,每一个用户模块都可以向总线注册服务和查询与绑定需要的服务。注册到服务总线的服务也是动态的,注册服务的模块可以在必要的时候直接卸载。服务层相关的接口由IBundleContext提供,这些接口包括GetFirstOrDefaultService、GetService、AddService和RemoveService,分别用于获取默认服务、获取指定服务契约的所有服务、添加一个指定服务契约的服务和删除指定服务契约的服务。安全层提供了模块安全沙箱。它实现了对模块数字签名以实现模块完整性、提供了基于代码访问安全的访问权限检测以阻止模块对其它资源进行非法访问和实现了模块间的隔离性以避免一个模块对其它模块产生影响。基础服务层提供了系统服务,包括服务总线管理服务、插件管理服务、启动级别服务、日志服务、扩展点管理服务、Web服务包装器服务等服务。辅助设计工具提供了该框架需要的工具,包括模块配置管理工具、远程管理工具、项目模板等。
2,OSGi.NET的为什么使用OSGi.NET
OSGi.NET为企业解决以下问题:(1)解决软件复用问题。在OSGi.NET规范里,插件具有热插拔、物理隔离和动态特性,完全重用。(2)解决团队协作问题。基于OSGi.NET框架,一个软件一般可以按照功能和抽象层次,划分为界面框架插件、通用服务插件和业务功能插件,团队有详细的分工和不同的关注点。开发业务功能的团队可以仅关注于实际的业务逻辑,并且多个团队可以并行、独立开发,最终快速组装。(3)解决软件可维护性问题。基于OSGi.NET框架,组件是互相隔离,并且其依赖是通过可管理的服务来实现的,依赖粒度小。不同的组件可以有不同的版本,独立开发、部署和测试。对组件的更改不会影响到其他组件的行为。(4)快速响应市场变化。OSGi.NET框架实现了一个微内核,使得我们可以根据用户需求,快速定制一个组件,然后进行快速发布。(5)易管理、易部署、易更新。OSGi.NET的插件具备物理隔离、热插拔和动态,使持续部署、更新变为可能,并且让您可以非常方便的管理内核。(6)开放性。OSGi.NET是一个开放的平台,在此构建的应用程序,天生就具备了开放性。你可以通过服务向开发者提供API,通过扩展点向开发者提供功能扩展,并且可以构建私有的插件仓库。