经过5年的努力,一个平台的梦想终于初步实现,我们的插件仓库iOpenWorks平台初步成型。iOpenWorks平台是一个面向软件开发者的免费插件仓库,致力于让开发者可以以“组装”的方式来实现软件的开发。平台梦的原型源于2008年,我和几个师弟都是技术爱好者,当时我们希望能够构建一个这样的平台:当我们需要开发一个软件的时候,我们可以先到一个软件素材库平台,先给我们的软件找一个主界面(未来也可以根据需求随时替换主界面,因为用户的需求是比较变态但我们希望能适应并降低工作量),然后下载组装;接着我们还可以再看看是否有现成的软件模块,比如通用的功能——数据访问/权限管理等,甚至是一些应用模块,我们也可以直接下载组装;然后基于这些基础为客户来快速定制出软件,甚至未来可以给用户组装出一个成品软件。当时的梦想也很简单,希望能为中国软件带来点变化。于是,带着这样简单的梦想,我们就开始在业余时间来设计和研发平台。各位前辈高手们,估计也意料到了,做这样事情将会无比的困难,需要解决的不简单是单纯的技术问题。不过,我们就是这么简单的开始了。下面我来介绍一下平台现状及研发历史。 1 平台介绍 iOpenWorks平台,中文为“开放·工厂”,它意味着,这个平台将会是开放式的,大家可以免费试用并进行技术成果分享;此外,我们希望为企业构建一个标准化的软件生产线平台,软件生产线平台的核心就是插件仓库(也可以成为组件库,但绝不是国内很多高校搞的所谓的组件库,因为我们的目标是面向企业应用,不是简单学术平台),开发者可以从插件仓库来获取需要开发的软件的界面、通用功能,然后在此基础上,大家并行来开发软件,而测试团队和部署团队则可以从插件仓库获取需要测试/部署的插件,直接将其部署到目标机器,一旦有更新可以自动升级。 插件仓库是整个平台的核心,只有一个上规模的插件仓库,才可以真正来实现“组装”式开发。目前插件仓库拥有108个的可直接使用插件,涵盖了桌面界面框架、Web界面框架、数据库访问、数据挖掘、数据集成、大数据支撑、消息队列、数据加密、文件访问等各类插件。
插件仓库也是软件生产线的关键,下图是以插件仓库为核心的软件生产线的架构和流程,通过插件仓库,团队之间的协作将完全实现自动化。这将避免开发过程中很多无谓的浪费。我对敏捷也有所研究,在我看来,“敏捷”不简单是快速开发,更是避免很多无谓的浪费,这些浪费集中在低效的协作、管理、维护。
插件仓库的所有插件必须有一个统一的规范和基于统一的插件框架,这是模块组装的前提,因此我们需要为模块选用一个标准开放的规范,当我在2008年接触到OSGi规范后,我毅然决然的将其作为插件框架的标准规范。因此,我们开始将OSGi规范移植到.NET平台,并且设计了目前算是国际上唯一的标准OSGi.NET插件框架(根据互联网搜索结果)。与Java的OSGi规范不同,我们在设计OSGi.NET规范时,已经考虑到这个规范要应用到所有的.NET应用环境,包括WinForm、WPF、ASP.NET、ASP.NET MVC(当时还没有)、Silverlight,甚至是移动等应用环境。下图就是OSGi.NET插件框架的主要功能及要兼容的环境。
上述三要素是整个平台的核心,因此,整个iOpenWorks平台的架构也就非常的清晰了,这个平台由插件仓库平台和插件开发工具组装。开发者基于插件开发工具来为用户构建应用系统,构建应用系统过程中,可以通过插件仓库访问与插件管理服务来访问插件仓库列表,然后下载需要的界面、通用功能组装起来,实现应用系统的基础框架,然后在此基础上进行定制开发;在开发过程中,可以将开发团队的所有插件进行集成,持续交付给用户,也可以通过插件部署工具直接发布到插件仓库中,给客户部署时可以实现自动化的升级/降级。
下面我来介绍一下这个平台的功能。 2 平台功能 iOpenWorks平台由插件仓库和插件开发工具来组装,下面我们来详细介绍。 2.1 插件仓库 插件仓库平台的核心在于插件管理、插件开发工具管理、插件内核文件管理、私有插件仓库管理等。 该平台提供的功能描述如下:
2.2 插件开发工具 插件开发工具支持VS2005、VS2008、VS2010和VS2012开发环境,支持.NET提Framework 2.0、3.0、3.5、4.0、4.5,由OSGi.NET插件框架、插件项目模板、插件迁移工具、插件自动化部署工具、插件可视化编辑工具、插件调试工具。 2.2.1 OSGi.NET插件框架 OSGi.NET插件框架架构如下所示,它是OSGi规范在.NET平台的实现,提供三大核心功能:动态模块化、面向服务和模块扩展,具备两大特性:动态性和个理性。
该框架的功能描述如下。
2.2.2 插件项目模板 iOpenWorks平台的插件框架是目前上最简单的插件框架,为了能让开发者在3分钟内组装一个基础界面框架,我们费了很大的努力做了一些项目模板,项目模板如下所示。 项目模板功能描述如下。
2.2.3 插件迁移工具 基于OSGi.NET插件框架构建的应用是插件化架构,与传统开发方式有所不同。为了能将传统开发的程序集直接在插件框架中使用,我们构建了一个迁移工具,这个迁移工具能够在5分钟内不更改一行代码的情况下将传统程序集迁移成插件,甚至可以直接发布到插件仓库中,从而使应用程序的迁移变得无比简单。 该工具提供了如下功能。
2.2.4 插件自动化部署工具 插件自动化部署工具能够轻松的将开发的插件及其升级包直接发布到插件仓库,从而实现软件系统的自动升级。这个工具是IDE插件,允许开发人员在开发过程中或者修复Bug后,发布应用系统的新版本。 该工具提供了如下功能。
2.2.5 插件可视化编辑工具 在OSGi.NET插件框架,每一个插件都基于OSGi规范来定义,该规范使用一个Manifest的插件清单文件来描述插件的信息,它定义了插件的名称、版本、起始状态、包含的程序集、依赖关系等。插件可视化编辑器允许以图形化的方式来编辑该文件。该工具也是一个IDE插件。 插件清单编辑器提供的功能描述如下。
2.2.6 插件调试工具 OSGi.NET框架提供了健全的异常处理机制,一个插件的异常不会对框架造成影响。为了隔离这种影响,我们屏蔽了插件的异常,并通过日志来展示。为了方便对插件内核状态调试,我们构建了一个插件工具,这个插件工具描述如下。 该调试工具提供的功能描述如下。
3 平台发展历程 2008年5月份,OSGi.NET四人开发团队成立,开始设计和研发OSGi.NET框架。在研发过程中,翻译了OSGi R4规范,这是网上能公开下载到的第一个OSGi R4规范的翻译版本;分析了微软智能客户端软件工厂、微软ObjectBuilder这两个企业级开发框架源码,翻译了这两个框架的开发指南和架构指南;分析了Eclipse内核——Equniox的源码;分析了开源插件框架SharpDevelop的源码;研究比较了MAF、MEF、Mono.Addins开源插件框架。在以上研究成果之上,设计了OSGi.NET规范并研发OSGi.NET框架。
2011年5月1日,基于OSGi.NET框架,成功研发了面向企业的SaaS应用商店平台,实现了应用开发、销售、部署一体化的云PaaS平台——尤埃SaaS引擎( http://www. )。
2012年6月,销售了开放工厂私有部署平台,为某公司构建了面向电力的基于OSGi.NET的软件生产线平台。
2013年4月25日,开放工厂插件仓库规模超100个,注册人数超1300人,插件SDK下次查过13000次数。
回想iOpenWorks平台研发经历,真是感慨万分,我们以有限的人力坚持不懈到现在,并能够取得一些成绩。我们现在将该平台开放给所有的技术人员,希望能够真正的为中国软件带来点什么。 |
|