摘要:基于構件的軟件開發可以復用已有的應用系統、應用框架,開發出具有良好的可維護性和軟件資源的可復用性,并有較強的用戶需求變化適應能力的軟件。構件的可復用性越高、復用越廣泛,其復用次數就會越多,價值也越大。該文研究了基于構件的通用政府門戶平臺,提出了基于構件的政務通門戶系統開發框架,可重用構件是其重要的一部分。該門戶平臺類似于一個網站生成器,通過簡單的拖拉拽等操作就可以完成不同政府的門戶平臺系統的生成工作。
關鍵詞:構件;電子政務;復用;portlet;portal
Research and Application of Dynamic General Government Portal Platform Based on Component
WANG Jun-hao1,SUN Qiong-qiong2
(1.Department of Computer Science and Engineering, Henan University of Urban Construction, Pingdingshan 467044, China;2.Department of Computer,Pingdingshan Institute of Education,Pingdingshan 467000, China)
Abstract: Component-based software development can reuse existing application systems and application frameworks to develop new software which has more maintainability, reusability and a strong adaptability to the demands of different users .The higher its reusability is, the more extensively it is reused, and the greater its value will be. This article researches the component-based platform for general government portal, and proposes a component-based e-government portal systems framework, in which the reusable component is an important part. The portal platform is similar to a website generator; one can produce various government portal systems through simple operations such as drag; etc.
Key words: component; e-government; reusability; portlet; portal
隨著互聯網時代的到來,信息技術和網絡科技的發展日新月異,使得信息產業成為當今世界經濟和社會發展最主要的驅動力,傳統的政府管理模式也越來越落后于時代的腳步。為了在新一輪的國際競爭中占據有利地位,許多國家都將電子政務的建設作為增強國家競爭力的一項手段。
政府門戶系統的研究已經有很多的應用,但是大部分政府門戶網站系統仍舊是由計算機專業人才支持后臺應用程序,政府部門提供一些素材和資料由計算機專業人才來構件整個政府系統,由于政府工作人員專業水平的限制,不能及時的更新政府信息,也不能定制出具有自己政府個性的網站,使得很多政府的門戶系統平臺千篇一律。
同時,網絡技術的飛速發展使得軟件開發的環境日愈復雜,應用軟件需要具有開放的系統結構和跨越多個異構平臺的能力,這樣就導致在應用系統中的軟件越來越龐大。在這種情況下,出現了以軟件復用為目的的具有互操作和可擴展能力的構件對象設計模式。軟件復用是指重復使用已有軟件的過程,它減少了軟件開發所需的費用和時間,有利于提高軟件的可維護性和可靠性。
政務通系統在原來系統的基礎上提出了構件化的開發,目標是將現有的一些功能做成構件,形成自己的構件庫,通用政府門戶平臺就是構件技術在政務通上的一個很好的應用。
1 軟件構件化概述
構件是指可方便地插入到語言、工具、操作系統、網絡軟件系統中的一種接口定義良好的獨立可重用的二進制形式的代碼和數據。構件是可復用的軟件組成成分,具有可復用性(Reusability)、自包含性、一致性、耦合性、內聚性和適應性這幾大特征。軟件復用(或軟件重用)是指充分利用過去軟件開發中積累的成果、知識和經驗,去開發新的軟件系統,使人們在新系統的開發中著重于解決出現的新問題、滿足新需求,從而避免或減少軟件開發中的重復勞動[1]。
基于構件的軟件開發(Component-based Software Development,簡稱CBSD)是以組合、繼承、設計構件為基礎,按照一定的集成規則,分期、遞增式開發應用系統,縮短開發周期。目前CBSD在部分應用領域的研究已經從理論研究進入應用實施的階段,國內外許多科研機構已經設計出成熟的產品和原型系統,如IBM公司的NetCommerce和微軟的Site Server均是以構件為核心的。
基于構件的軟件開發(CBSD)技術以軟件架構為組裝藍圖,以可復用軟件構件為組裝模塊,支持組裝式軟件的復用,大大提高了軟件生產效率和軟件質量。它已成為現代軟件工程十分提倡的著重于軟件重用技術的開發模式[2]。對一個實際的應用系統,如何實現構件技術的開發來保證構件的可重用性、可擴充性、易移植性等構件特性成為必須充分考慮的問題。
2 portlet構件的平臺模型
在電子政務系統軟件政務通中,政府通用門戶平臺所基于的是portlet構件。Portlet是基于java的web構件(也稱組件),由Portlet容器管理,并由容器處理請求,生產動態內容。Portal是一個基于web的應用程序,它主要提供個性化、單點登錄、不同來源的內容整合以及存放信息系統的表示層。
Portal技術是低成本的集成技術。如果你的網站或企業已經有了很多信息系統,Portal可以很容易的將這些系統集成起來,并以統一的方式提供給用戶,統一可以有流程的統一,如:登錄、定制、瀏覽;也可以有界面的統一,如:顯示風格等高度的模塊化。用portal技術實現得頁面如圖1所示,瀏覽器里的頁面是由不同的“窗口”組成的。比如一個窗口用于刷新天氣,另一個用于新聞,還有一個用于刷新股價等等。這里的每一個窗口都代表了一個portlet構件。而且每個窗口都有一個標題條和一些按鈕,包括最小化和最大化按鈕[3]。
在系統里,這些窗口是相互獨立開發、各不同的應用。每個portal頁面由一個或多個portlet窗口組成,每個portlet窗口又分為兩部分:一個是外觀,它決定了portlet窗口的標題條、控制和邊界的樣式;另一個是portlet段,它由portlet應用填充。通常請求一個portal頁面會引發多個portlets被調用。每個portlet都會生成標記段,并與別的portlets生成的標記段組合在一起嵌入到portal頁面的標記內。
portlet產生標記片斷。portal通常給portlet產生的標記片斷加了標題,控制按鈕和其他的裝飾,這個新的片斷叫portlet窗口。然后portal整合portlet窗口到完整的文件portal頁面。portlets 運行在portlet容器內。Portlet容器接收portlets產生的內容。典型的,portlet容器把portlet內容傳到portal。Portal server根據portlet產生的內容創建portal頁面,并傳送給客戶端,由客戶端顯示。其執行過程如圖2所示。
用戶使用客戶終端訪問portal,在收到請求后,portal判斷滿足請求的portlets列表。portal通過portlet容器調用portlets。portal用portlet產生的片斷創建portal頁面[4],同時把頁面返回給用戶。
用戶可以根據需要通過增刪portlet的方式配置他們的頁面。在Windows或者XWindows窗口程序中,窗口有最大化和最小化的窗口狀態,portlet也有窗口狀態。Portlet規范定義了3種窗口狀態:normal、maximized和minimized。
門戶構件平臺提供Portlet容器,提供Portlet全生命周期(初始化、訪問、銷毀、Cache等)的管理機制和運行環境,提供具有良好伸縮性的門戶基礎框架服務,并提供標準的Portlet構件的開發部署管理工具[4]。系統提供預集成的、并不斷豐富發展的具有特色的本地化Portlet構件庫,使其擁有足夠的靈活性快速組裝、定制、部署門戶項目。本文是以門戶為中心的基礎架構平臺套件,包括一個核心平臺(門戶構件平臺--Portlet Server、門戶構件庫--Portlet庫)。
3 體系結構實現技術
綜合現有的幾種門戶平臺的設計理念,本項目完全架構在J2EE標準框架內,充分利用J2EE整體的技術框架資源,將本項目建成一個分布式集群環境下、可動態伸縮的靈活的大型系統。整個系統的架構采用J2EE常用的四層結構:表現層,業務邏輯層,持久層和數據庫層,如圖3所示。
對照J2EE的體系結構,將Struts、Hibernate用于J2EE開發的結構如圖4所示,Struts的MVC特點可用來完成業務邏輯和表示層的工作;Hibernate可用來事先與數據層的數據交互,使開發人員專注于業務邏輯的開發,而減少花費在數據庫操作上的時間,并且可以降低編程的復雜性。
3.1 Struts框架
MVC是一種設計模式,它強制性地把應用程序的輸入、處理和輸出分開。MVC把應用程序分成三個核心模塊:模型、視圖和控制器[5],它們分擔不同的任務。Struts是實現MVC模式的通用框架,它由四個主要部分組成:模型、視圖、控制器和XML文件。
在Struts中,模型主要由三種bean來充當,分別是:Action、 ActionForm、 EJB或者Java Bean。ActionForm用來封裝客戶請求信息,Action用來取得ActionForm中的數據,再由EJB或者Java Bean進行處理。視圖包括一組JSP文件,這些文件主要由JSP標簽或客戶化標簽構成,它接收到Action Form中的數據,利用html、taglib、bean、logic等顯示數據到JSP頁面。
在Struts框架中控制器主要包括Action Servlet類和Action類, ActionServlet是一個通用的控制組件,這個控制組件提供了處理所有發送到Struts的HTTP請求的入口點;Struts還包括web.xml和struts-config.xml兩個配置文件,其中web.xml是Web應用的發布描述文件,Struts-config.xml是與Struts相關的特殊信息配置的描述文件[5]。Struts框架的整個工作過程都是通過struts-config.xml文件來配置的。Struts框架中的ActionServlet根據struts-config.xml中的配置來決定某個請求調用某個Action和Action Form,以及返回到某個JSP頁面。
3.2 Hibernate結構
Hibernate是一個面向Java環境的對象/關系數據庫映射工具。Hibernate不僅僅管理Java類到數據庫表的映射,還提供數據查詢和獲取數據的方法,可以大幅度減少開發時人工使用SQL和JDBC處理數據的時間。Hibernate 技術本質上是一個提供數據庫服務的中間件,它是利用數據庫以及其他一些配置文件如hibernate.properties、XML Mapping[6] 等來為應用程序提供數據持久服務的。使用Hibernate 構件系統,可以避免手工編寫訪問數據持久層的方法,使開發人員專注于業務邏輯的開發,簡化了開發的難度,加快項目開發的速度。運行時,Hibernate讀取映射文檔,然后動態構建Java類,以便管理數據庫與Java之間的轉換。在Hibernate中有一個簡單而直觀的API,用于對數據庫所表示的對象執行查詢。要修改這些對象,一般情況下,只需在程序中與它們進行交互,然后告訴Hibernate保存修改即可。類似地,創建新對象也很簡單,只需以常規方式創建它們,然后告訴Hibernate有關它們的信息,這樣就能在數據庫中保存它們。
4 結束語
在本文中提出了通過應用構件技術,來構建一個門戶系統的框架,應用portlet構件由政府人員自己來整合門戶系統。Java技術本身的跨平臺特性使政務通具有跨平臺性,可以運行在支持Java的Windows,Linux等系統平臺上。 基于構件的通用政府門戶平臺,可以應用到不同的政府網站,政府部門可以根據自己的部門特色和喜好來定義自己的模版格式和選擇發布信息,并可以靈活的調整模塊的順序從而定制自己的門戶系統網站。所有的程序都做成了構件,只需通過拖拉就可以完成政府網站的設計,而無需任何程序編碼。構件化動態政府門戶通用平臺已經成功的應用到基于國產化體系開發的、具有跨平臺性的政務通4.0系統,并表現出其良好的性能。
參考文獻:
[1] 吳曉瓊,邵世煌.基于構件的用戶自定義報表設計器在國際貨運代理系統中的應用研究[J].東華大學學報, 2005,31(6).
[2] 傅音翔,王直杰,張玨.一種基于構件的軟件開發方法[J].微計算機信息,2006(1-3):228-230.
[3] Hepper S,Hesmer S.Introducing the Portlet Specification[EB/OL].(2003-08-01).http://www.javaworld.com/java2.world/jw-08-20-03/jw-0801-portlet.html.
[4] 胡一冬,陳福勝.基于Struts框架的portal研究與應用[J].計算機工程與科學,2006,28(8).
[5] 孫衛琴.精通Struts:基于MVC的Java Web設計與開發[M].北京:電子工業出版社,2004.
[6] 蔡雪燾.Hibernate開發及整合應用大全[M].北京:清華大學出版社,2006.