Portal技術綜述

Portal技術綜述

Liferay 2009-04-21 11:18:30 

 

企事業單位逐步建立起計算機應用系統來處理傳統事務。從簡單的單機應用逐步發展到局域網系統,進而建立跨地區垮國家的廣域網系統。從單純的以科學計算和數據管理爲主的系統逐步發展成綜合的信息處理系統和辦公自動化系統。從九十年代起隨着互聯網的普及,企事業單位的計算機應用系統也進入了互聯網時代,以Web網站爲核心的面向全球的信息系統正在廣泛建立。

在企事業單位內部的各種信息系統逐步發展完備的情形下,新的問題新的需求逐步浮現出來:各種信息系統自成一體,使用和維護成本增大;信息資源不能共享,數據一致性維護的成本太高;用戶需要多次重複登錄進入不同系統,操作繁瑣,工作效率受限;用戶不能按需獲取信息定製內容;現有系統缺少用戶之間的協作支持等等。因此,如何將各階段建立起來的各式各樣的信息系統資源重新整合,即把一個個的信息孤島有效地聯結起來,通過一個“港口”簡便進出,正在成爲信息系統深化發展的首要問題。

Protal (門戶)技術的出現,帶來了解決這些問題的良方。Portal以用戶爲中心,提供統一的用戶登錄,實現信息的集中訪問,集成了辦公商務一體的工作流環境。利用Portal技術,可以方便地將員工所需要的,來源於各種渠道的信息資料集成在一個統一的桌面視窗之內。根據Portal提供的定製功能,部門主管可以爲本部門人員量身定製一套特有的信息門戶,將部門共同所需信息有效地組織在統一的Web瀏覽器之中,並可根據人員級別和職能來設定相應的訪問操作權限。

早在九十年代中期就有人提出了Portal的概念。最初出現的是像Yahoo這類的互聯網服務商的Portal網站,後來出現了一些行業性Portal網站。早期由於沒有相關的標準規範,Portal網站技術五花八門,產品功能和品質參差不齊,因而難以獲得人們的認可,Portal技術的應用,Portal網站的發展出現過短暫的停滯。

隨着Web技術的廣泛應用和Web相關標準的逐步完善,特別是在2003年獲得業界通過的兩個標準——JSR-168WSRPPortal的發展確立了方向,更是隨着SOA理念的實際化使得Portal愈加火熱起來。

一、Portal架構

(一)PortalPortlet概念

Portal”一詞在英語中解釋爲“入口,大門”,中文翻譯爲“門戶”。在SunPortlet技術規範JSR-168Java Specification Request 168)中定義爲:Portal是基於Web的應用,通常提供個性化,單點登錄,整合不同資源的綜合信息展示平臺。

Portal展現在最終用戶面前的是類似於Web網頁的Portal頁面,也許有些Portal主頁製作的更像是一個桌面系統的界面,更能獲得用戶的認可。

構成Portal頁面的是能夠建立和展現不同內容的一系列PortletPortal使用Portlet作爲可插拔用戶接口組件,提供信息系統的表示層。

Portlet是部署在特定容器內用來生成動態內容的可重用Web組件。Portlet處理從Portal傳遞來的用戶請求,動態生成輸出內容的一個片段,展現在Portal頁面的某個位置上。

Portlet的主要特點:

Portlet 是基於Java技術的Web 組件。

由專門的容器管理 Portlet 

Portlet用於生成動態內容。

Portlet只生成標記片段,並不產生完整的Web頁面。由Portal負責將Portlet片段整合成完整的Portal頁面。

Portlet不直接捆綁到URL

Web用戶通過PortalPortlet進行交互。

Portlet具有預定義的模版和視窗狀態。

Portlet容器是Portlet的運行環境,它負責管理Portlet的生命週期,保存Portlet的定製信息。通俗的講,Portlet容器就是Portlet組件工作的管理器,這一點類似於Servlet容器和Servlet之間的關係。

(二)Portal結構

Portal是一個Web頁面,它由一個或若干個Portal頁面組織而成。而每個Portal頁面又是由一個或若干個Portlet窗口構成的——Portlet是以窗口的形式出現在Portal頁面裏。如圖1所示是一個Portal頁面結構的示例,有四個Portlet窗口。

 Portal技術綜述 - ljqsky - 歲月留痕

Portlet窗口由兩部分構成:其一是外觀,包含有標題條、窗口控制和邊框樣式;其二是內容,即Portlet片段。

2顯示了Portal服務器、Portlet容器以及Portlet之間的關係。

Portal技術綜述 - ljqsky - 歲月留痕

(三)Portal組成架構

Portal系統一般由Portal服務器、支持ServletJava應用服務器或Web服務器、數據庫服務器、LDAP服務器組成,此外還可以加上身份認證和訪問控制服務器(Identity ServerAccess Manager)等。前面所說的Portlet容器通常是打包在Portal服務器中的。

Portal技術綜述 - ljqsky - 歲月留痕

有的Portal系統可以工作在具有Servlet容器的Web服務器上,但多數Portal要求在Java應用服務器上運行。如Liferay Portal既能在TomcatServlet容器+Web服務器)上使用,也可以在JBossASJava應用服務器+Web服務器)上運行,而JBoss Portal只支持JBossASJava應用服務器。

通常,Portal的定製信息是保存在數據庫中的,幾乎所有的Portal系統產品需要數據庫管理系統的支持。

LDAP服務器主要用在用戶管理、身份認證和權限管理上。有些Portal系統也支持使用數據庫來管理用戶身份和權限。

爲了解決用戶單點登錄和訪問控制問題,也許還要增加這方面的專業服務軟件,如Idengtity ManagerAccess Manager等。

此外,Portal服務器也支持其它應用服務系統的協同工作,比如同電子郵件(Email),網絡交談(Chat),網絡會議(Web Conference),以及基於Lotus DominoOA系統等直接對接聯動。

(四)Portal應用架構

4Portal應用的一個示例架構圖。

Portal技術綜述 - ljqsky - 歲月留痕

(五)Portal主要功能

1、單點登錄(SSOSingle Sign-On):Portal提供對各種應用系統和數據的安全集成,用戶只需從Portal服務器登錄一次就可以訪問其它應用系統和數據庫。對於安全性要求較高的業務系統,如電子銀行、電子交易系統等,通過傳遞用戶身份信息,如數字證書信息、數字簽名信息等進行二次身份認證,保證單點登錄的安全性。單點登錄既減少了用戶在多個應用系統反覆登錄多次認證的麻煩,更是簡化了各種應用系統對用戶及其權限的一致性維護管理。

2、資源整合:能夠把各種不同應用的內容聚合到一個統一的頁面呈現給用戶,實現同應用系統實時交換信息。能夠從各種數據源如數據庫、多種格式的文件檔案、Web頁面、電子郵件等集成用戶所需的動態內容。

3、定製與個性化:能夠爲不同角色的用戶制定不同功能權限的Portal頁面。同時,用戶自己也能夠按照喜好在規定的權限下定製自己風格的頁面和內容,如可以定製Portal頁面,取捨不同功能和內容的Portlet窗口,自行佈置Portlet窗口的擺放位置,可以對Portlet窗口外觀,如標題,圖標,顏色等進行個性化設置。

4、協作功能:爲用戶提供即時討論,聊天,論壇,電子郵件以及語音或視頻會議等功能。

5、工作流:支持根據業務處理規則建立起來的工作流任務處理,比如審批流程等待辦事宜。

6、信息檢索:從多種數據源檢索動態信息資料。

7、客戶端:除了Web瀏覽器外,可以爲PDA和手機提供接口,實現移動接入服務。

二、Portal標準

建立一個以標準爲依託的Portal才能很好地保護自己的投資,既便於同現有應用系統連接,也使得同第三方的相關產品更容易接口。在2003年先後發佈的JSR-168WSRP兩大標準爲Portal的發展奠定了基礎,結束了戰國紛爭的局面,Portal的發展和應用將會更加廣闊長遠。

下面介紹幾個與Portal緊密相關的技術標準:

1WSDL——Web Service Description Language

Web服務描述語言。WSDL是用來描述Web服務和說明如何與Web服務通信的XML語言。WSDL語言使用XML格式來描述信息的接口、訪問格式和處理形式。

WSDL描述信息內容。

2SOAP——Simple Object Access Protocol

簡單對象訪問協議。SOAP是一種在無中心的分佈式環境下,應用系統之間交換結構化信息和特定類型的信息所使用的基於XML的輕量級協議。SOAP允許任何信息對象在任何語言、任何平臺上使用多種傳輸協議實現傳輸處理。

SOAP定義信息的傳輸處理。

Web應用環境中,通常把SOAPWSDL結合起來,利用HTTP協議實現應用系統之間交換各種類型的信息對象。

3JSR -168——Java Specification Request - Portlet Specification

Java Portlet規範。JSR-168爲業界明確了Portal的定義,制定了Portlet規範標準,從而解決了基於JavaPortal之間,以及同其他Web應用系統之間的互操作性。遵循JSR-168Portlet將具有適用於所有Portal服務器和Web應用系統,支持多種類型的客戶端,支持本地化和國際化,具備確定的安全性,允許Portal應用程序熱部署和重新部署。

4WSRP——Web Services for Remote Portlets

遠程Portlet Web服務協議。WSRP定義了PortalPortlet容器服務之間標準化接口的一個Web服務標準。WSRP允許在Portal之間或其他Web應用上即插即用,具有互操作性,提供可視化的、面向用戶的遠程Web服務。

遠程Portlet在遠程服務器上作爲Web服務運行,其服務可以發佈到公共的或單位自己的UDDI服務器上。Portal或其他支持WSRP的應用系統通過UDDI服務來查找並使用遠程系統提供的WSRP服務內容。

WSRP的典型應用是把天氣預報、即時新聞、股市行情等嵌入到自己的Portal中(在國外有專門的WSRP內容提供商提供這種服務)。

WSRP使用了WSDL定義應用程序的接口,並以SOAP作爲通訊標準。

5、其他規範標準

此外還有一些與Portal有一定關聯的技術標準,在開發建立Portal應用中將會使用到:

UDDIUniversal DescriptionDiscovery and Integration

JSR-170/283Java Specification Request - Content Repository for Java Technology API

JAASJava Authentication and Authorization Service

LDAPLightweight Directory Access Protocol

SAMLSecurity Assertion Markup Language

BPELBusiness Process Execution Language for Web Services

三、Portal應用實現

Portal可以從本地或遠端獲得數據資源:數據資源可以來自於本地或異地的數據庫,應用系統,公共信息內容供應商(RSS,提供新聞、財經信息、天氣預報等),Web站點或其他Portal。此外,Portal還可以提供日曆、工作流、電子郵件、論壇、博客、Wiki、即時交談、電子會議等等協同工作的應用功能。可見,Portal是一個有別於傳統桌面應用和Web網站的全新應用系統,是各種信息處理的集中展現平臺,是用戶日常工作的綜合檯面。

顯然,建立一個良好的Portal應用需要充分考慮各種應用系統和數據資源的整合問題:

1、現有應用系統和數據資源的利用  對能夠改造利用的,要開發相應的Portlet組件來重新實現;對不能改造的可以通過鏈接的方式跳轉到這些系統,其中的數據庫資源可以採取單純讀取的方式獲得;還有些封閉的專業應用系統可能完全無法接入Portal,可以採取定期卸載的方式獲得它的數據庫資源。

2、新建應用系統的考慮  需要以Portal理念進行設計,按照相關標準來開發實現應用功能的Portlet組件,然後集成到Portal系統使用。

3、單點登錄與權限管理  對於新建應用系統或能夠改造的現有應用系統,通過Portlet組件比較容易實現單點登錄,進行統一用戶認證和用戶權限的控制。當然,對那些安全性要求較高的應用系統還可以在這些系統內部進行二次認證和授權處理。對那些不能改造的應用系統顯然也無法實現單點登錄,用戶需要重新登錄到這類系統,用戶管理和權限控制還依賴於這些系統自己處理。

(一)單點登錄和權限控制

單點登錄是爲了方便用戶進入多個應用系統,減少用戶多次登錄,免除用戶記憶多套用戶名和密碼的麻煩。

單點登錄涉及到兩個問題,一是身份認證,二是權限控制。

身份認證是Portal系統提供訪問控制的第一步,即確認用戶是誰,能否進入系統。通常要求用戶提供用戶名和口令,必要時要求提供用戶的數字證書,也可以配合使用IC卡、指紋等驗證手段。

權限控制或授權確定一個用戶的角色和級別,從而控制用戶的訪問許可,即決定用戶能查閱哪些資料,能進行哪些操作等等。Java EE架構採用了基於角色的訪問控制策略(RBAC)。RBAC的基本思想是把對用戶的授權劃分成兩個分配關係,即“用戶—角色”和“角色—權限”。RBAC的好處是便於應用系統的開發,使得程序設計相對獨立和透明化,只是在應用系統部署使用時才通過“角色”把“用戶”和“權限”關聯起來,而且對用戶和權限的調整配置容易實施。

用戶與角色之間是多對多的關係,即一個用戶可以被分配給多個角色,多個用戶也可以分配給同一個角色。

角色與權限之間也是多對多的關係,即一個權限可以與多個角色相關,一個角色也可以包含多重權限。

Sun公司建立了具有可堆疊和可插接功能的JAAS框架,爲Java應用系統提供安全而靈活的身份認證和授權機制。如在JBossAS應用服務器環境下,利用JAAS技術,JBossAS提供了幾種身份認證模塊(使用者也可以自己編寫新的身份認證模塊),並且可以實現多級認證(堆疊)。對Web應用和EJB等則通過配置文件定義訪問角色和訪問方式以實現安全控制。對沒有提供JAAS支持或支持不足的Web服務器或Java應用服務器,使用者需要在自己的應用程序中編寫相關代碼或模塊來支持JAAS實現身份認證和權限管理。

此外還需要考慮不同領域內不同應用之間的信任關係,解決跨越應用系統的身份認證和訪問控制問題。這一點需要用到SAMLFederationLiberty等技術規範,通過傳遞用戶認證資料取得應用系統之間的認證互信。

專業的Web服務軟件公司能夠提供比較全面的解決方案,其產品爲Web環境下的各種應用提供可靠的身份認證和訪問權限管理。比如Sun公司的Access Manager 7.1Oracle公司的Oracle Access Manager 10gIBM公司有Tivoli Access Manager(提供用戶單點登錄)和Tivoli Identity Manager(解決訪問控制問題),還有BEA公司的BEA AquaLogic Enterprise Security等。

相比之下,開源軟件在這方面比較瘦弱,基本上沒有專門的軟件產品,只能提供一定的支持方案。例如通過對JBossASTomcat做一些配置,可以支持使用耶魯大學的CAS實現單點登錄功能,也能夠實現JAAS來獲得用戶身份認證和對應用資源的訪問控制。這樣,建立在JBossASTomcat之上的應用如JBoss PortalLiferay PortalApache JetSpeed當然也就具備了這些功能了。

在用戶管理、身份認證和權限控制方面,無論是商業的或開源的Portal產品多數喜歡採用LDAP,當然也有的支持使用數據庫。LDAP的好處一是它可以方便的按類別存儲任何類型的數據信息;其二,它的樹形存儲結構類似於一個企事業單位的組織架構,容易對應;三是它同應用系統接口容易,各個LDAP產品的接口都一致無需特別配置;四是它對數據信息的訪問安全控制方便;五是它偏向於相對固定數據信息的查詢使用,效率較高,維護也方便。

(二)Portlet開發

建立Portal應用系統的主要任務之一就是設計各式各樣的Portlet組件,實現應用系統的各種功能。雖然多數Portal系統會附送一些常用的Portlet組件,可以滿足一些公共服務需要,但跟本單位工作事務和業務處理相關的大量Portlet組件必須有專門人員進行細緻的設計和開發。

Portlet的設計開發有必要遵循JSR-168規範和WSRP標準,以適合各種類型的Portal服務器。在具體的實現上,也將會用到WSDLSOAPUDDI相關技術規範,以便同Web服務應用系統進行信息交互處理。

開發Portlet主要有兩種方法,一是藉助於Portal產品商提供的可視化的預製開發工具,二是應用Java語言直接編程。預製開發工具爲Portlet開發者提供了許多有益的幫助,如自動產生必要的配置文件,預製了程序代碼框架,提供所見即所得編輯和調試環境等等。但無論如何,Portlet開發的重點是Portlet片段內容的產生和處理,主要以JSP爲主配合HTMLJavaScript等網頁開發技術,再借用JSFStrutsHibernate等框架來簡化開發。

Portlet處理信息資料主要有以下三種情況:

1Portlet在本地直接處理信息資料

Portlet在本地直接同數據庫、LDAP或其他數據存儲系統進行查詢、更新等操作,也可以使用其他Java資源如JavaBeanEJB組件進行交互處理。

2Portlet訪問其他應用系統的Web服務

Portlet需要訪問其他應用系統資源時,一般是採用SOAP技術實現對Web服務的請求操作,如圖5所示。

Portal技術綜述 - ljqsky - 歲月留痕

3Portlet訪問其他Portal服務

Portal可以把公共的Portlet信息發佈到UDDI資源中心,以供其他Portal選擇使用。需要其他Portal提供特定服務的Portal可以通過在UDDI中心查找定位來獲取需要的Portlet提供服務(圖6)。此種情況使用了WSRP技術來實現。

Portal技術綜述 - ljqsky - 歲月留痕

(三)Portal定製

1、業務處理

有別於傳統的應用系統的開發,開發Portal應用的重點是Portlet,並每個Portlet並不是一個完整的系統而是一個實現特定信息處理功能的Web組件。因此,如果要把一個傳統的應用系統全部轉換到Portal來,就需要把原系統進行分解,把每個操作功能重新用Portlet來實現(不一定是一對一的),然後根據系統處理的要求組裝到Portal頁面上。

用戶在使用傳統的應用系統時,是從一層層的菜單逐級進入實際操作程序的界面的,操作繁瑣,使用不便,容易遺漏。轉入Portal系統後需要簡化這種使用方式,把應用系統操作程序製作成的Portlet組件,直接嵌入某個Portal頁面上或者按操作類型,時間先後或緩急程度順序放置在“待辦事宜”列表中,提示用戶快速處理。

Portal頁面的組裝即頁面佈置跟用戶的級別和角色有關。Portal架構員需要根據每項業務的處理流程和每個Portlet的功能,按照每類用戶的級別和角色來配置用戶的Portal頁面。與用戶無關的或無操作權限的Portlet不應該出現在用戶的Portal頁面上,用戶也不能把它添加進來。對於用戶必須使用的Portlet也要限制使用者不能把它從Portal頁面中移除出去。

2、協作功能

提供同事之間的協同工作支持是Portal的功能之一。協同工作主要包括電子郵件、實時交談(Chat,類似於QQ)、網絡會議(語音或視頻會議)、維客(Wiki,允許參與者修改討論的文章)、博客(Blog)、留言等等。在工作處理中遇到疑問需要向同事瞭解情況,可以即時開啓Chat展開討論,也可以召開網絡會議。

另外可以設計一個手機短信Portlet,把需要儘快處理的事項及時發送短信通知相關人員。

有的Portal產品附帶了一些協同工作的Portlet和服務軟件,有的需要專門購買,也有開源軟件可以免費使用。

3、其他功能

提供諸如信息檢索、公告、新聞、日曆、通信錄等輔助功能以方便工作。如果連接互聯網,還可以獲取天氣預報,提供證券行情等公共服務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章