尤埃开放服务平台(UI Open Service Platform)是一个模块化、动态性、面向SOA的统一开发框架,是OSGi联盟定义的开放服务平台规范移植到.NET的实现,以下简称OSGi.NET。它向开发者提供了模块化与插件化、面向服务构架和模块扩展支持等功能,适用于控制台(Console)、WinForm、ASP.NET、WPF和Windows服务等各种.NET应用场景,基于该平台开发的所有的插件和服务均可以任意组合为系统功能模块。
1、使用OSGi.NET,帮您解决以下问题:
1)缺乏一种成熟的组件结构框架,支撑开发高度复杂应用如集成开发环境(IDE)、应用程序服务器(application server)等。
2)缺乏一种组件结构框架能够跨平台、跨客户端、跨服务器进行通信。
3)系统动态性和扩展性不足,需要可插拔的系统。
4)需求不断的变化,带来较高的软件开发和维护成本。
5)项目做了不少,规范的、可复用的功能模块无法积累很多。
6)团队成员开发方法和技能各不相同,无法实施一致的开发规范,缺乏统一开发框架支撑。
7)系统设计能力不足,各个架构师都有自己一套设计方法,设计上无法通用。
2、OSGi.NET提供以下功能:
(具体请参见用户指南http://www.uishell.com/helps/uiosphelp/Index.html)
1)模块化与插件化支持
- 物理隔离:模块互相隔离、可单独部署、互相独立、互不影响。每一个模块拥有独立的文件夹、类型空间、资源和类加载器。
- 高度可复用:模块的复用不需要再更改任何代码,只需要将模块拷贝到指定的插件目录下,它的功能便向其它模块暴露。
- 规范性:模块具有统一的标准,包括目录结构、模块配置、开发方法。
- 快速集成:仅需要将模块拷贝到指定的插件目录就能够实现模块功能的快速集成,无需更改任何代码。
- 易部署和更新:通过拷贝即可实现部署和更新。
2)热插拔与动态性支持
- 热插拔:模块可以被动态的添加和卸载。
- 生命周期:模块生命周期状态由“已安装、已解析、正在启动、已激活、正在停止、已停止、已卸载”组成,每一个生命周期状态下,模块提供不同的功能。
- 动态:当模块执行任何生命周期操作时,模块会动态的向外界提供或者隐藏它的功能。
- 远程部署:支持模块远程部署,例如远程安装、启动、停止和卸载模块,或者订阅模块仓库中模块变更并同步。
3)面向服务架构支持
- 面向服务模型:支持典型的“服务注册—服务搜索—服务绑定”的服务模型。
- 接口与实现隔离:每一个服务基于服务契约编程模型由“接口 + 实现”组成。
4)模块扩展性支持
- 扩展点:通过标准XML节点<ExtensionPoint>就可定义一个模块向其它模块暴露的扩展点。
- 扩展:通过标准XML节点<Extension>就可定义一个模块对暴露扩展点的模块的扩展。
- 动态扩展:模块在启动和停止时,会分别向平台注册和卸载相应的扩展点及扩展。
- 零耦合:模块的扩展没有任何的耦合,仅通过标准XML来配置。
5)多应用场景支持
- 支持控制台(Console)应用程序。
- 支持Windows窗体应用程序。
- 支持WPF应用程序。
- 支持Windows服务应用程序。
- 支持ASP.NET应用程序。
- 支持Windows Mobile应用程序。
- 支持UIOSP平台嵌套。
6)提供不同应用开发场景模板,如控制台、Windows桌面应用以及ASP.NET Web应用,让您开发如同传统.NET应用开发一样,轻松上手。
3、OSGi.NET给您带来的价值:
(1)“搭积木式”软件开发方式
通过OSGi.NET,软件开发工程师可以更加关注与业务结合,而无需考虑底层逻辑与实现,彻底解放了系统设计师,方便灵活的开发多领域定制化产品,开发软件产品(项目)就像“搭积木”,而且由于OSGi采用微内核机制,又可保证系统的稳定高效。
(2)显著提升系统的设计能力
OSGi.NET能够更加规范的让设计师去完成系统设计工作,更加容易先分模块设计业务架构,后进行模块详细设计。所有的设计师都基于一种设计规范,避免百花齐放,每个设计师都有自已一套设计方式,设计上无法通用的弊端。
(3)实现了动态可管理的系统(即插即用)
基于该框架开发的系统功能模块(Plugin)可以动态加载或者卸载,而系统本身无需停止,还可以通过远程管理工具进行功能模块的远程安装、启动、停止和卸载模块,或者订阅模块仓库中模块变更并同步。
(4)建立了规范的团队并行开发方式、培训体系
基于OSGi.NET,软件开发企业所有的项目都可以按照统一的基础架构、开发方式以及部署方式来完成,很容易形成团队的并行开发模式,自然而然的很容易形成在开发知识方面的培训体系。
(5)系统维护成本大大降低
由于基于OSGi.NET开发的系统模块具有严格意义上的模块化,相对于传统开发方式,系统模块的组织、复用和扩展变得容易,也简化了模块的测试。当一个系统功能需要修改或者发现Bug时,开发人员只需要修改或者Debug他自己的功能模块,模块之间没有耦合,互不影响,这可以大大降低系统的维护成本。开发新功能也是一个“独立”的模块(Plugin),部署只需拷贝到指定目录,系统即可拥有新功能。
(6)建立企业级可复用软件资产(构件)库变得容易
由于所有的系统设计、模块开发都遵循统一的技术规范,企业所开发项目的所有模块都可作为高可复用的软件资产积累下来,企业可建立企业级可复用软件资产库,做新项目的时候只需要下载相应的功能模块进行集成就能实现功能。