摘要:針對基于Web Service的數據交換系統的具體設計,提出了其中的兩個技術關鍵即“基于WSDL的數據交換標準的制定”以及“可視化界面定義的數據轉化方式”,探討了其實現方法。
關鍵詞:網絡服務;數據交換標準;可視化界面
中圖法分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)26-1681-03
The Design of a Web Service Based Data Exchanging System
YING Jin1, CAI Wen-qi2
(1.Zhejiang Sports Lottery Administrative Center, Hangzhou 310004, China; 2.Zhejiang Institute of Computing Technology, Zhejiang 310006, China)
Abstract: Proposes two key technologies in the specific design of the Web Service based data exchanging system, \"the development of the standard of data exchanging based on WSDL\" and \"the way of data transforming using visual interface defining\", and explores their solutions.
Key words: web service; standard of data exchanging; visual interface
1 引言
各級政府的政務電子化、網絡化是大勢所趨,是國家的一個戰略舉措。然而,當前電子政務最突出的問題在于各政府部門及相關企事業單位的信息系統幾乎相互完全獨立,其數據庫、應用程序之間缺乏統一標準的數據交換系統。如何有效地對各系統的數據進行整合,加強信息化建設,超越時間、空間制約,提高政府部門管理與服務社會的效率和效能,已成為當前的一個緊迫問題。
2 Web Service技術簡介
為此,我們研制一套基于Web Service的數據交換系統以解決上述問題。
Web Service是一種面向服務的體系結構(SOA,Service Oriented Architecture),其目的是實現程序之間的交互,提供了在可縮放的、松散耦合的和非特定平臺的環境下交換信息的能力。它基于標準協議和規范(HTTP、SOAP、UDDI等)之上,是平臺獨立和語言獨立的,用于信息的交換、共享、集成及不同應用之間的互操作。Web Service還是Internet分布式計算環境中提供基礎功能的編程模塊(網絡組件),它所具有的開放通訊標準和強調互操作的特點,已使其成為異構系統集成的平臺和主要手段。它具有如下特點:
1) Web Service通過標準協議向網絡程序提供一定的功能,通常采用的標準協議是簡單對象訪問協議SOAP(Simple Object Access Protocol);
2) Web Service采用WSDL(Web Service Description Language)詳細描述其接口,用戶使用WSDL文檔與Web Service進行交互;
3) Web Service需注冊到UDDI注冊中心(Universal Discovery Description and Integration),便于潛在用戶查詢、發現和使用。
因此,Web Service可以方便地集成現有OA、MIS、電子政務、公眾服務等系統,實現信息數據共享與服務的轉變。
目前已有相當數量的開發工具和開發平臺支持Web Service技術的開發,如Microsoft .Net,Sun ONE,IBM WebSphere和Web Service Toolkit等。
3 技術關鍵
研究和制定基于WSDL的數據交換標準,建立相應的數據交換平臺,滿足互連、互通、互操作需要,可以使政府及企業各部門的數據能夠完全整合,已成為電子政務發展的首要任務。該數據交換系統主要由以下幾個方面組成:1) 制定基于WSDL的數據交換標準;2) 數據交換標準工具;3) 數據轉換定義模塊;4)數據轉換模塊;5) 數據交換模塊。
其系統結構如圖1所示。
3.1 基于WSDL的數據交換標準
基于WSDL的數據交換標準用于為Web Service數據交換服務提供數據的包裝和交換規范。制定標準時,必須考慮可靠性、安全性、事務、可伸縮性、可管理性等一系列技術問題。由于涉及領域的復雜性和具體業務的多樣性,一個標準不可能覆蓋所有可能出現的業務需求和數據定義,因此該標準應具有良好的擴展機制,可為不同的業務機構提供個性化的擴展機制,并為未來可能出現的新需求提供擴展機制。
WSDL(Web服務描述語言)是用XML文檔來描述Web服務的標準,是Web服務的接口定義語言,由Ariba、Intel、IBM、Microsoft等共同提出。通過WSDL,可描述Web服務的三個基本屬性:
服務做些什么——服務所提供的操作(方法);
如何訪問服務——和服務交互的數據格式以及必要協議;
服務位于何處——協議相關的地址,如URL。
WSDL是描述Web服務的基于標準XML格式語言,用于描述如何與一個Web服務通訊。WSDL文檔以端口(能夠進行消息交換的服務訪問點)集合的形式來描述Web服務,該服務描述包含對一組操作和消息的一個抽象定義,綁定到這些操作和消息的一個具體協議,和這個綁定的一個網絡端點規范。WSDL文檔被分為兩種類型:服務接口(Service Interface)和服務實現(Service Implementation)。WSDL服務定義為分布式系統提供了可為機器識別的SDK文檔,并可用于描述自動執行應用程序通信中所涉及的細節。
以XML作為數據交換的標準在數據交換和共享的層面上,基于XML和統一信息平臺技術,實現不同系統的聯合與互連。它覆蓋了信息處理的整個流程(從數據采集、處理和傳輸,到信息管理、分析和共享),將多年來常見的管理信息系統延伸到分析、共享系統中,從信息中挖掘和提煉知識,為決策者提供了充足的信息和決策支持。
制定基于WSDL的數據交換標準來定義實現程序代碼提供的功能,以便讓外部世界可以通過這個標準的輸出接口來調用。而WSDL是一個以XML組成的文件,這個文件內容敘述了實現程序代碼對外提供的函數原型,即各種可供調用的函數名稱以及參數等信息。定義WSDL之后,實現代碼就可以接受外界的調用了,且不會分辨是客戶端還是其它后端實現程序代碼來調用;不管是在什么操作系統中的,用什么語言實現的程序代碼,也不管是什么類型的數字設備就可以通過調用而共享此Web Service提供的實現程序代碼(即服務)。
3.1.1 Web Service特性
Web Service在通過Web進行互操作或遠程調用的時候是最有用的。
1) 跨防火墻的通信:客戶端和服務器之間的通信的中間層組件使用Web Service,就可以從用戶界面直接調用中間層組件。要調用Web Service,可以直接使用Microsoft SOAP Toolkit或.Net這樣的SOAP客戶端,也可以使用自己開發的SOAP客戶端,然后把它和應用程序連接起來。這樣既縮短了開發周期,又減少了代碼復雜度,增強了應用程序的可維護性。
2) 應用程序集成:通過Web Service,應用程序可以用標準的方法把用不同語言寫成的、在不同平臺上運行的各種程序的功能和數據“暴露”出來,供其它應用程序使用。
3) B2B的集成:通過Web Service,可以把關鍵的應用“暴露”給指定的客戶。由于Web Service運行在Internet上,在世界任何地方都可輕易實現,其運行成本就相對較低。但Web Service并不像EDI那樣是文檔交換或B2B集成的完整解決方案,它只是B2B集成的一個關鍵部分,還需要許多其它的部分才能實現集成。
4) 軟件和數據重用:軟件重用的形式很多,其程度有大有小。有些重用僅限于代碼而數據不能重用,而另一些重用的情況是把幾個應用程序的功能集成起來。現在Web上有很多應用程序供應商,都在其應用中實現了這些功能。一旦他們把這些功能都通過Web Service“暴露”出來,就可以非常容易地把所有這些功能都集成到你的門戶站點中,為用戶提供一個統一的、友好的界面。
隨著Web Service技術的發展,當前基于組件的應用程序結構將逐步擴展為組件/Web Service的混合結構,可以在應用程序中使用第三方Web Service所提供的功能,也可以把自己的應用程序功能通過Web Service提供給別人。兩種情況下,都可以重用代碼和代碼背后的數據。
3.1.2 解決方法
1) 適配器-類對象結構型模式:適配器(Adapter)又稱為包裝器Wrapper,用于將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。類適配器使用多重繼承對一個接口與另一個接口進行匹配,對象匹配器依賴于對象組合。
① 適用性:想使用一個已經存在的類,但其接口不符合需求。
創建一個可以復用的類,該類可以與其它不相關的類或不可預見的類(即那些接口可能不一定兼容的類)協同工作。
(僅適用于對象Adapter)想使用一些已經存在的子類,但是不可能對每一個都進行子類化以匹配它們的接口。對象適配器可以適配它的父類接口。
② 使用效果:類適配器和對象適配器有不同的權衡。
類適配器:用一個具體的Adapter類對Adoptee和Target進行匹配。結果是當想要匹配一個類以及所有它的子類時,類Adapter將不能勝任工作。
使得Adapter可以重定義Adoptee的部分行為,因為Adapter是Adoptee的一個子類。
僅僅引入了一個對象,并不需要額外的指針以間接得到Adoptee。
對象適配器則:允許一個Adapter與多個Adoptee,即Adoptee本身以及它的所有子類(如果有子類的話)同時工作。Adapter也可以一次給所有的Adoptee添加功能。
使得重定義Adoptee的行為比較困難。這就需要生成Adoptee的子類并且使得Adapter引用這個子類而不是引用Adoptee本身。
類適配器采用多重繼承適配接口。類適配器的關鍵是用一個分支繼承接口,而用另外一個分支繼承接口的實現部分。通常C++中作出這一區分的方法是:用公共方式繼承接口,用私有方式繼承接口的實現。對象適配器采用對象組合的方法將具有不同接口的類組合在一起。
2) 享元-對象結構型模式:采用享元這一對象結構型模式,運用共享技術有效地支持大量細粒度的對象。Flyweight模式描述了如何共享對象,使得可以細粒度地使用它們而減少了內存占用。
Flyweight是一個共享對象,可以同時在多個場景(context)中使用,并且在每個場景中Flyweight都可以作為一個獨立的對象。內部狀態存儲于flyweight中,包含了獨立于flyweight場景的信息,這些信息使得flyweight可以被共享。而外部狀態取決于flyweight場景,并根據場景而變化,因此不可共享。用戶對象負責在必要的時候將外部狀態傳遞給Flyweight。
Flyweight模式對那些通常因為數量太大而難以用對象來表示的概念或實體進行建模。
① 適用性:Flyweight模式的有效性很大程度上取決于如何使用及在何處使用它。當以下情況都成立時使用Flyweight模式:一個應用程序使用了大量的對象;完全由于使用大量的對象,造成很大的存儲開銷;對象的大多數狀態都可變為外部狀態。如果刪除對象的外部狀態,那么可以用相對較少的共享對象取代很多組對象;應用程序不依賴于對象標識,由于Flyweight對象可以被共享,對于概念上明顯有別的對象,標志測試將返回真值。
② 使用效果:使用Flyweight模式時,傳輸、查找和計算外部狀態都會產生運行時的開銷,尤其當flyweight原先被存儲為內部狀態時。然而,空間上的節省抵消了這些開銷。共享的flyweight越多,空間節省也就越大。
共享的Flyweight越多,存儲節約也就越多。節約量隨著共享狀態的增多而增大。當對象使用大量的內部及外部狀態,并且外部狀態是計算出來的而非存儲的時候,節約量將達到最大。所以,可以用兩種方法來節約存儲:用共享減少內部狀態的消耗,用計算時間換取對外部狀態的存儲。
Flyweight模式經常和Composite模式結合起來表示一個層次式結構,這一層次式結構是一個共享葉節點的圖。共享的結果是,Flyweight的葉節點不能存儲指向父節點的指針。而父節點的指針將傳給Flyweight作為它的外部狀態的一部分。這對于該層次結構中對象之間相互通訊的方式將產生很大的影響。
Flyweight模式通常和Composite模式結合起來,用共享葉節點的有向無環圖實現一個邏輯上的層次結構。通常,最好用Flyweight實現State和Strategy對象。
3) 模板方法-類行為型模式:考慮一個提供Application和Document類的應用框架。Application類負責打開一個已有的以外部形式存儲的文檔,如一個文件。一旦一個文檔中的信息從該文件中讀出后,它就由一個Document對象表示。采用了模板方法-類行為型模式,定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。
用框架構建的應用可以通過繼承Application和Document來滿足特定的需求。例如,一個繪圖應用定義DrawApplication和DrawDocument子類;一個電子表格應用定義SpreadsheetApplication和SpreadsheetDocument子類。
模板方法應用于下列情況:
一次性實現一個算法的不變的部分,并將可變的行為留給子類來實現。
各子類中公共的行為應被提取出來并集中到一個公共父類中以避免代碼重復。首先識別現有代碼中的不同之處,并且將不同之處分離為新的操作。最后,用一個調用這些新的操作的模板方法來替換這些不同的代碼。
控制子類擴展。模板方法只在特定點調用“hook”操作,這樣就只允許在這些點進行擴展。
模板方法是一種代碼復用的基本技術。它們在類庫中尤為重要,它們提取了類庫中的公共行為。
模板方法導致一種反向的控制結構,這種結構有時被稱為“好萊塢法則”,即“別找我們,我們找你”。這指的是一個父類調用一個子類的操作,而不是相反。
模板方法調用下列類型的操作:具體的操作(ConcreteClass或對客戶類的操作);具體的AbstractClass的操作(即通常對子類有用的操作);原語操作(即抽象操作);Factory Method;鉤子操作(hook operations),它提供了缺省的行為,子類可以在必要時進行擴展。一個鉤子操作在缺省操作通常是一個空操作。
3.2 可視化界面定義的數據轉化方式
與以符號為主的字符命令語言界面相比,以視覺感知為主的圖形界面具有一定的文化和語言獨立性,可提高視覺目標搜索的效率,能發揮人的形象感知和形象思維的潛能,提高信息傳遞的效率。特別對于非專業用戶而言,可視化界面無需經過大量培訓,用戶界面簡單,操作方式簡捷,用戶工作效率高。
目前提供給非專業人員使用的系統可視化界面存在以下問題:確立標準并遵循一致的原則、顏色的恰當使用、資源的豐富多彩、文字的正確表達、控件風格與功能的專一、窗口布局的合理、與用戶交互的流暢、通俗易懂的聯機幫助。
為解決上述問題,使用戶在通過可視化界面定義現有數據庫到數據交換標準的數據轉化方式時能夠建立起精確的心理模型,首先必須對控件使用、提示信息措辭、窗口布局風格采取統一的標準;特別是對特殊操作控件的設計,要遵循簡化操作的準則。其次在整個系統中,采用統一的控件間距,對邏輯上相關聯的控件加以組合,而且對幫助文件措辭恰當、簡捷,力爭做到通俗易懂。
最重要的是本系統采取了多種場景下的向導幫助用戶解決系統操作問題。向導的設計充分體現了簡潔易用的設計思想,特別適用于非專業人員。系統在主工作區域內進行了分工作區域的劃分,用戶可以在各功能模塊中方便的切換,并對基礎信息列表的顯示一目了然。當選定了某種模式之后,場景向導將把相關說明顯示在顯示屏上。對數據的各項操作將由彈出的向導一步步指引完成。系統的功能操作可以完全基于向導指引操作者完成,而且操作簡單方便,只要懂Windows操作便能得心應手使用該軟件,不需要做額外的使用培訓。
參考文獻:
[1] 魏柯,徐孟春.一種基于Web Service的動態電子政務系統[J].微計算機信息,2006,(1):159-161.
[2] 張舒敏,徐君.Web服務在政府聯合辦公系統集成中的應用[J].微型電腦應用,2008,(3):14-23.
[3] 李紅斌,史殿習.基于Web Service的企業數據交換系統的研究[J].硅谷,2008,(7):76-77.