面向個人的免費插件倉庫iOpenWorks平台終於成型發布了


面向個人的免費插件倉庫iOpenWorks平台終於成型發布了

經過5年的努力,一個平台的夢想終於初步實現,我們的插件倉庫iOpenWorks平台(http://www.iopenworks.com)初步成型。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 插件倉庫

插件倉庫平台的核心在於插件管理、插件開發工具管理、插件內核文件管理、私有插件倉庫管理等。

image

該平台提供的功能描述如下:

功能

描述

公共插件倉庫

公共插件倉庫包含有108個可以直接復用的插件,並為自動化升級提供了支持

OSGi.NET內核文件管理

1 內核文件升級;

2 內核文件修改或刪除;

3 內核文件下載。

SDK下載

發布的公共SDK下載鏈接

用戶管理

用戶注冊、登錄

私有插件倉庫

用戶可以通過私有插件倉庫來管理私有訪問的插件,用戶可以創建任意多的項目來管理插件,實現私有項目的自動化部署與升級,它提供如下功能。

1 私有插件項目創建、編輯、刪除;

2 私有插件項目用戶組及權限管理;

3 私有插件項目中對插件分類進行管理,實現分類的增加/修改/刪除;

4 私有插件項目的插件管理,插件創建、編輯、升級和刪除;

5 私有插件展示,包括插件的介紹、開發指南、依賴關系、日志等。

共享插件倉庫

1 為所有人提供可以公開訪問的插件;

2 權限檢測、插件管理、插件升級;

3 插件分類管理。

插件依賴關系管理

該平台管理各個插件的依賴關系,用於在下載插件時自動將依賴的插件綁定下載

計數器

插件、SDK訪問計數

插件倉庫OpenAPI服務

1 插件倉庫訪問的開放接口,包括共享插件倉庫瀏覽、私有插件倉庫瀏覽、插件分類、插件詳細信息;

2 內核文件訪問的開放接口,提供內核文件瀏覽;

3 插件和內核文件下載;

4 插件創建或者升級。

統計日志

1 用戶訪問日志;

2 頁面性能日志。

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平台的實現,提供三大核心功能:動態模塊化、面向服務和模塊擴展,具備兩大特性:動態性和個理性。

自動化部署

該框架的功能描述如下。

功能

描述

動態模塊化

1 插件化支持,插件具備熱插拔與隔離特性,每一個插件擁有獨立的目錄結構、獨立的運行空間;

2 插件能夠被動態安裝、啟動、停止、下載、更新;

3 插件具備依賴關系;

4 支持多版本類型加載;

5 支持啟動順序調節;

6 支持晚加載。

面向服務

1 支持服務動態注冊;

2 支持服務動態綁定;

3 服務為輕量級,可在運行中動態安裝、卸載和替換。

模塊擴展

1 無限擴展支持,通過擴展點-擴展機制實現;

2 插件啟動時,擴展/擴展點生效;

3 插件停止時,擴展/擴展點失效。

支持所有.NET應用

1 WinForm應用;

2 ASP.NET應用;

3 ASP.NET MVC應用;

4 WPF應用;

5 控制台應用;

6 Windows服務應用;

7 Silverlight甚至是手機應用。

自動升級

內置插件自動升級支持

跨平台支持

支持Mono,可在安裝Mono的Linux的環境來運行

許可證支持

支持插件許可證頒發和校驗,支持內核許可證頒發和校驗

IDE和.NET Framework

1 支持VS2005、2008、2010和2012;

2 支持.NET Framework 2.0、3.0、3.5、4.0、4.5

示例與文檔

含有豐富的視頻、規范的用戶指南和詳細的示例

 

2.2.2 插件項目模板

iOpenWorks平台的插件框架是目前上最簡單的插件框架,為了能讓開發者在3分鍾內組裝一個基礎界面框架,我們費了很大的努力做了一些項目模板,項目模板如下所示。

image

項目模板功能描述如下。

功能

描述

各種應用

1 WinForm空主程序、空插件項目;

2 WinForm高級主程序、空插件項目;

3 WPF高級主程序、空插件項目;

4 ASP.NET空主程序、空插件項目;

5 ASP.NET高級主程序、空插件項目;

6 ASP.NET MVC高級主程序、空插件項目;

7 控制台主程序、空插件項目;

8 服務項目。

內核文件自動升級

1 iOpenWorks啟動程序升級;

2 iOpenWorks插件倉庫OpenAPI客戶端程序升級;

3 OSGi.NET內核文件自動升級;

4 Web擴展程序自動升級;

5 MVC擴展程序自動升級。

系統插件

1 插件管理服務,暴露了插件內核管理、插件倉庫訪問服務;

2 插件中心插件,提供瀏覽插件、插件下載安裝、插件升級、管理插件的界面庫;

3 Web服務包裝器服務,實現將普通對象封裝成Web服務;

4 遠程管理服務,通過Web服務實現插件的遠程管理,包括啟動、停止、卸載等。

IDE和.NET Framework

1 支持VS2005、2008、2010和2012;

2 支持.NET Framework 2.0、3.0、3.5、4.0、4.5

 

2.2.3 插件遷移工具

基於OSGi.NET插件框架構建的應用是插件化架構,與傳統開發方式有所不同。為了能將傳統開發的程序集直接在插件框架中使用,我們構建了一個遷移工具,這個遷移工具能夠在5分鍾內不更改一行代碼的情況下將傳統程序集遷移成插件,甚至可以直接發布到插件倉庫中,從而使應用程序的遷移變得無比簡單。

image

該工具提供了如下功能。

功能

描述

程序集轉換成插件

1 可以添加、刪除程序集,支持多個程序集組合;

2 為多個程序集創建一個插件描述清單,轉換成插件。

插件發布

1 將生成的插件打包成zip文件;

2 將插件發布到指定目錄;

3 將插件直接發布到插件倉庫。

.NET Framework支持

支持.NET Framework 2.0、3.0、3.5、4.0、4.5

 

2.2.4 插件自動化部署工具

插件自動化部署工具能夠輕松的將開發的插件及其升級包直接發布到插件倉庫,從而實現軟件系統的自動升級。這個工具是IDE插件,允許開發人員在開發過程中或者修復Bug后,發布應用系統的新版本。

image

該工具提供了如下功能。

功能

描述

IDE集成

該自動化工具與IDE集成,可以在插件開發過程中右鍵隨時發布,該工具支持VS2005、VS2008、VS2010、VS2012集成

自動構建插件項目

發布插件時,會自動構建項目,如果構建失敗則不再繼續發布

插件發布

1 過濾發布的插件包含的內容;

2 以樹形的方式來編輯發布的插件包含的文件內容;

3 將插件直接打包成zip包;

4 將插件直接發布到插件倉庫;

5 自動增加插件版本,實現升級。

 

2.2.5 插件可視化編輯工具

在OSGi.NET插件框架,每一個插件都基於OSGi規范來定義,該規范使用一個Manifest的插件清單文件來描述插件的信息,它定義了插件的名稱、版本、起始狀態、包含的程序集、依賴關系等。插件可視化編輯器允許以圖形化的方式來編輯該文件。該工具也是一個IDE插件。

image

插件清單編輯器提供的功能描述如下。

功能

描述

IDE集成

該工具支持VS2005、VS2008、VS2010、VS2012集成

基本信息編輯

1 配置插件的唯一標識、名稱、版本、啟動級別、激活器、晚激活和起始狀態;

2 配置插件可選信息。

運行時信息編輯

1 插件本地程序集瀏覽、添加;

2 插件依賴編輯;

服務信息編輯

1 服務瀏覽;

2 服務添加/刪除。

擴展信息編輯

1 擴展點編輯;

2 擴展編輯。

 

2.2.6 插件調試工具

OSGi.NET框架提供了健全的異常處理機制,一個插件的異常不會對框架造成影響。為了隔離這種影響,我們屏蔽了插件的異常,並通過日志來展示。為了方便對插件內核狀態調試,我們構建了一個插件工具,這個插件工具描述如下。

image

該調試工具提供的功能描述如下。

功能

描述

插件遠程管理

1 插件信息瀏覽;

2 插件啟動/停止;

3 插件安裝和卸載。

服務瀏覽

瀏覽OSGi.NET內核中暴露的服務

服務器配置

OSGi.NET內核遠程管理IP地址和端口號配置

 

3 平台發展歷程

 

2008年5月份,OSGi.NET四人開發團隊成立,開始設計和研發OSGi.NET框架。在研發過程中,翻譯了OSGi R4規范,這是網上能公開下載到的第一個OSGi R4規范的翻譯版本;分析了微軟智能客戶端軟件工廠、微軟ObjectBuilder這兩個企業級開發框架源碼,翻譯了這兩個框架的開發指南和架構指南;分析了Eclipse內核——Equniox的源碼;分析了開源插件框架SharpDevelop的源碼;研究比較了MAF、MEF、Mono.Addins開源插件框架。在以上研究成果之上,設計了OSGi.NET規范並研發OSGi.NET框架。


2010年5月份,歷時2年,國際首個OSGi.NET框架研發成功發布了測試版。


2011年5月1日,基於OSGi.NET框架,成功研發了面向企業的SaaS應用商店平台,實現了應用開發、銷售、部署一體化的雲PaaS平台——尤埃SaaS引擎(http://www.saasengine.cn)。


2011年11月5日,在經過用戶試用和反饋之后,發布了OSGi.NET正式版。


2012年3月24日,基於OSGi.NET框架,成功研發了面向開發商的插件倉庫平台——開放工廠iOpenWorks。


2012年4月,與某公司建立合作,簽訂了基於iOpenWorks的集成平台改進合同。

2012年6月,銷售了開放工廠私有部署平台,為某公司構建了面向電力的基於OSGi.NET的軟件生產線平台。


2012年7月,與某研究所所合作,簽訂了基於iOpenWorks的《熱力遠程抄表系統》合同,在這個系統中,自動化部署得到了驗證和成功應用,節約了大量的成本。


2012年9月,與某公司合作,簽訂了基於開放工廠構建某油田統一集成平台的項目合同。


2012年12月10日,開放工廠SDK實現了插件自動化部署工具、開放工廠自動升級支持,並成功應用到《熱力遠程抄表系統》。


2013年2月16日,開放工廠SDK實現了插件快速遷移工具,成功解決了軟件遷移的問題。


2013年4月25日,開放工廠插件倉庫規模超100個,注冊人數超1300人,插件SDK下次查過13000次數。 

2013年5月16日,與某所合作,簽訂了基於開放工廠構建《基於雲計算和大數據技術的建築能耗監測系統》項目的合同。

 

回想iOpenWorks平台研發經歷,真是感慨萬分,我們以有限的人力堅持不懈到現在,並能夠取得一些成績。我們現在將該平台開放給所有的技術人員,希望能夠真正的為中國軟件帶來點什么。

 

Creative Commons License有任何技術問題,可以加入iOpenWorks插件倉庫平台QQ交流群: 121369588。

本文基於 Creative Commons Attribution 2.5 China Mainland License發布,歡迎轉載,演繹或用於商業目的,但是必須保留本文的署名 道法自然(包含鏈接)。如您有任何疑問或者授權方面的協商,請給我留言。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM