段玉龍



摘 要:本文基于OAUTH、OPENAPI、REST等技術設計了一個快速開發平臺框架,框架具有松耦合、高可擴展性、開發快速等特點。本平臺的主要優勢在于:1.大規模系統拆分;2.OpenAPI在控制器層進行設計,同時采用REST風格;3.界面調用OpenAPI采用JQuery的Ajax調用方式;4.可重用組件。
關鍵詞:OAUTH;OPENAPI;REST;開放平臺
伴隨互聯網、智能手機技術的飛速發展,軟件行業也面臨著新的挑戰。傳統企業級軟件已經轉變為小系統集成的大規模軟件,傳統的先充分論證需求分析,然后按軟件工程的理論一步步按部就班的開發模式已經不適應當今軟件行業發展的速度了。另外,現今的軟件需求也變的越來越專業化、精細化,一個應用或App只關注一個細節一個點,一旦需求確認,需要在盡可能短的時間研發出來并上線,這樣才能更快的占有市場,同時注意和使用用戶互動、促進用戶反饋意見,然后在使用中迭代更新升級系統,積累了一定用戶量后再逐步擴展其他附帶功能。
這就要求我們開發軟件模式需要從傳統軟件按部就班的開發模式轉變為敏捷、快速的迭代開發模式,敏捷快速不是單純的圖快,同時要兼顧系統的穩定性、可擴展性、魯棒性等各方面的性能的考慮,以便將來更好的迭代和擴展。本文借鑒敏捷開發、開放平臺、OAUTH,REST等技術,設計了一個快速開發平臺框架:每個待開發系統作為獨立子系統開發,最后集成到平臺中,提倡子系統專一化,一個子系統只干一件事,如果業務比較復雜則拆分為多個子系統開發;子系統直接通過開發平臺技術通過OPENAPI相互調用,OPENAPI設計遵從RESTFUL風格設計,每個OPENAPI作為一個資源存在,調用使用HTTP協議,采用JSON格式傳遞數據,這樣各子系統之間更具獨立性,耦合度更低,可擴展性更強;平臺本身已經集成了基礎服務組件、日志組件、權限組件、認證組件、調度組件、事務組件,待開發系統只需要引入相應的包并做簡單的配置即可使用這些基礎組件,使開發人員把主要精力集中在具體業務邏輯上。
1開發平臺框架設計
本平臺的框架設計圖如圖1。
本文設計的快速開發平臺以各子系統作為云服務單元,即系統開發過程中的一個獨立項目,下面本文以一個類似淘寶網的小型購物網站為例介紹下本平臺的具體設計和研發過程。
1.1 系統拆分
子系統的規模要適當,不要太大,如果待開發的系統較大,對系統進行拆分,使每個子系統只專注一項業務,粒度要適中,保證每個子系統開發簡單高效。
本例中購物網站系統規模較大,根據具體業務,我們拆分為會員管理子系統、商品管理子系統、訂單子系統三個子系統,其中支付和物流部分使用第三方平臺的Open API,每個子系統作為獨立工程研發,可以分配不同研發人員進行獨立研發,而且每個子系統相對簡單, 研發人員不必陷入復雜的業務邏輯上,大大提高了研發效率。如果需要調用其他子系統接口時,使用Open API調用,如2.2節所述。
圖1 開發平臺框架
1.2 子系統Open API設計與調用
每個子系統采用OPEN API為其他子系統或第三方系統提供接口,每個OPEN API使用RESTful風格設計,調用時使用HTTP協議調用,數據交換格式采用JSON格式。
下面以購買商品為例說明各子系統Open API的設計和調用過程,如圖2所示。首先調用認證子系統登錄認證(2.3節詳細介紹),然后調用商品管理子系統查詢商品API,選中要購買的商品后,調用訂單子系統的購買API,系統自動調用會員管理子系統的獲得會員郵件地址信息API獲得郵寄地址信息,用戶選中或填寫郵寄地址,調用訂單子系統的生成訂單API生成訂單,并置訂單狀態為未支付。用戶點擊支付按鈕,調用第三方支付系統如支付寶、網上銀行等,等待第三方系統返回結果,接收到支付成功結果后調用訂單子系統的修改訂單狀態API把訂單狀態置為已支付狀態。然后系統物流人員根據訂單調用第三方物流系統發貨,系統等待物流返回結果,接收到物流返回成功結果后調用訂單子系統的修改訂單狀態API把訂單狀態置為成功狀態。
圖2 購買商品各子系統Open API調用流程
1.3 認證子系統
認證子系統已集成到框架中,為其他子系統或第三方系統提供認證服務,采用OAUTH技術實現,如圖3為用戶訪問會員管理子系統的認證過程。
用戶訪問會員管理子系統,如查看個人資料等;系統自動跳轉到認證子系統的登錄頁面,提示用戶輸入用戶名密碼進行授權;用戶輸入用戶名密碼,由認證子系統進行密碼驗證;驗證成功后,認證子系統會返回給會員管理子系統一個授權的令牌(Access Token),會員管理子系統或其他系統通過此令牌通過認證子系統的Open API即可獲得用戶的基本信息。
圖3 獲取會員物流信息
1.4 權限子系統
權限子系統也已集成到框架中,為其他子系統或第三方系統提供權限管理服務,采取RBAC模型(基于角色的訪問控制)實現,使用角色實現用戶和權限的邏輯分離。
各個子系統以Open API的形式為其他系統提供調用,但不是任何系統或角色都可以隨便調用這些API的,需要具有一定的權限控制。如修改圖2中的修改訂單狀態接口對于普通會員是不開放的,只針對后臺管理員有效。權限子系統已經實現本功能,開發人員只需在權限配置界面配置相應的角色,及該角色受限訪問的資源。
1.5 可重用基礎組件
基礎組件為子系統開發提供一些常用的組件支持,子系統開發時首先引入組件的jar包,然后在web.xml或Spring配置文件中引入相應的配置即可使用組件,使用非常方便。
其中基礎服務組件提供對某數據模型的增刪改查操作的支持,和RESTFUL風格中的四個HTTP動作一一對應,開發人員不需要再關心單個數據模型的增刪改查邏輯,只需要關心自己業務系統的復雜業務邏輯。日志組件提供系統對日志的支持等。
2 結語
本文基于OAUTH、OPENAPI等技術設計了一個快速開發平臺框架,框架具有松耦合、高可擴展性、開發快速等特點。同時介紹了本平臺中的一些設計原則:大規模系統拆分;OpenAPI在控制器層進行設計,同時采用REST風格;界面調用OpenAPI采用JQuery的Ajax調用方式;可重用組件。
參考文獻:
[1] 朱蔚恒,周偉,龍舜.開放平臺解決方案及其安全策略研究[J].計算機工程.2012(12):265-267.
[2] 時子慶,劉金蘭,譚曉華.基于OAuth2.0的認證授權技術[J].計算機系統應用.2012(03):260-264.
[3] 丁波,晁愛農.基于Struts2框架的AJAX開發研究[J].計算機工程與設計.2009(16):3910-3913.
[4] 相方莉.云計算基礎設施中的性能瓶頸的識別和優化[J].計算機系統應用.2013(12):168-172.
[5] 李淑芝,劉鋒,楊書新.基于云仿真的Web服務選擇研究[J].計算機應用研究.2013(04):1069-1071.
[6] 李小寧,李磊,金連文,等.基于OpenStack構建私有云計算平臺[J].電信科學.2012(09):1-8.
[7] 胡曉玲,強桂.基于云計算的教育技術實驗平臺構建——以3D MAX課程為例[J].實驗技術與管理.2012(08):88-91.
[8] 羅國瑋,蘭瑞樂.基于云計算的高??蒲袑嶒炂脚_構建研究[J].實驗技術與管理.2012(04):115-117.
[9] 馬少兵,馬自衛.數字圖書館私有云平臺的構建研究和應用開發[J].現代圖書情報技術.2011(04):9-16.