葛紀坤,于海龍
(1.寧波市測繪設計研究院,浙江寧波315041;2.上海城市發展信息研究中心,上海200032)
信息系統的研發和應用與IT技術及軟件工程理論的發展是緊密相關的。從信息系統的研發過程來看,經歷了文本、過程、組件、Web Services,到目前SOA 5個階段。由于基于文本的編程方法難以實現代碼的復用,因此提出基于過程的編程方法,可以復用過程。從軟件復用的角度來看,大大向前邁進了一步,但是由于過程要求在同一個應用程序內使用,因此復用受到限制。基于組件的編程方法則解決了不同應用程序共享同一個過程函數的需求,COM、DCOM、COM+等就是在這樣的背景下逐步發展的理論與方法。不過由于組件技術只能應用于同構環境之中,對于跨平臺的信息系統開發,則無法實現共享應用,如COM組件和J2EE組件之間就無法實現組件級的共享。為解決這個問題,提出了Web Services的技術與方法,其基于統一的W3C標準和XML語言,使跨平臺、異構環境的軟件復用成為了可能。目前,基于Web Services技術的軟件開發,已經成為電子政務、公司業務管理平臺等建設的核心技術與趨勢。基于Web Services技術,為了更加有效地進行應用系統的開發,實現跨平臺的軟件復用,SOA(service of architecture)面向服務的體系被提出。SOA不是一種軟件開發的技術,而是一種基于Web Services技術的軟件開發原則與架構[1]。面向SOA的信息系統開發方法成為目前軟件工程的熱點。
從信息系統的架構來看,經歷了單機、C/S、B/S,到目前提出的云計算的階段。B/S架構已成為目前信息系統開發部署的主要模式,而云計算將是大型信息系統部署與應用的熱點與趨勢。云計算的核心技術也是Web Services技術,因此SOA將成為云計算的核心與基礎。圖1初步給出了軟件開發與部署應用的的發展歷程。

圖1 軟件開發與部署應用的發展歷程
本文首先簡要概述了 SOA,然后給出了面向SOA的Web Services設計方法及基于SOA的信息系統設計開發流程,最后給出了基于SOA的舊區改造管理信息系統開發實例。
SOA是一組通過統一定義的Web Services的集合[1]。Web Services是精確定義、封裝完善、獨立于其他服務所處環境和狀態的函數。各個服務基于W3C統一標準定制,使得各個服務間可以通過標準接口進行通信,可以實現跨平臺異構環境下的共享與復用。SOA是粗粒度、松耦合的Web服務架構,它通過定義Web服務參考模型,使得各個服務之間能夠通過簡單、精確定義接口進行通信。SOA能適應企業快速變化的需求,并且大大降低了企業成本,是目前軟件工程中首推的軟件架構體系。
圖2說明了Web Services開發者和消費者如何形成一個 SOA體系[2]。開發者基于 Web Services標準實現一個特定的業務邏輯;消費者則匯集各個感興趣的Web Services,通過Web Services集成,實現自己的業務邏輯。服務描述庫是Web Services描述的集合,開發者注冊服務,生成服務描述到服務描述庫中;服務消費者通過Web Services描述發現Web服務。

圖2 SOA的Web服務交互示意圖
面向SOA的信息系統設計是一種業務驅動的信息系統設計方法,基于已有的Web Services,通過Web Services集成(形成業務工作流),實現用戶的業務邏輯。因此,Web Services的標準化設計是關鍵。W3C給出了Web Services的通用設計標準。面向SOA的系統設計則要求從更高層面對Web Services進行標準化定義,包括Web Services的邊界性、原子性、契約性、兼容性。
(1)Web Services邊界清晰性
Web Services的邊界范圍通過其服務接口進行定義。首先確認服務接口,完備的服務接口是服務邊界定義的關鍵,服務接口是訪問服務的關鍵點,所有交互都是基于接口進行的;其次,服務接口具有演化升級的能力,而演化升級不影響原有用戶對該服務的訪問;再次,避免遠程調用(RPC)接口,應該代之以定義清晰的消息,保持一定的服務接口數量,代之以完備的消息定義;最后,不要暴露服務的實現細節,保證服務開發者與使用者之間的松散集成。
(2)Web Services原子性
Web Services自包含,并且在服務部署、版本等方面是獨立運行的。服務與具體實現的目標,即基于該服務開發的信息系統相互獨立,并分開部署。采用悲觀的策略,可減小服務失敗的損失。
(3)Web Services契約性
服務使用政策、模式、行為進行交互,而不是采用傳統的類。服務的契約包括消息格式(采用WSDL進行定義)、消息交互方式(采用WSDL定義的MEPs)、WS-Police要求,以及其他需要的 BPEL(business process execution language,一種基于 WSDL的長業務邏輯定義語言)。服務契約盡可能定義清晰,保證服務在理解上和使用上沒有異義,服務版本升級致使契約變化,應該通過定義附加契約來實現;服務契約保證服務的數據、WSDL、政策保持不變,即保證服務的穩定性;最大的挑戰也在于服務的穩定性,即一旦服務發布,應在不影響服務用戶的前提下,進行服務升級與維護;如果中斷服務是不可避免的,應可以通過服務版本,最大限度地減少對已有服務用戶的影響;不要公開暴露內部數據表示,而是公共數據模式。
(4)Web Services兼容性
由于不是所有的服務交互需求都能通過WSDL實現,因此可以使用服務政策(WS-Police)來實現。服務政策表達形式實現了結構與語義的兼容性,即通過服務政策分離了通信的內容,以及怎樣和向誰通信。一個服務政策表達定義了政策實體的行為,提供了一個特定域的語義。當設計一個服務時,在服務預期和兼容性方面應該盡可能保證服務政策定義清晰。
以上4個原則,是基于SOA進行Web Services設計的基本原則。然而準確清晰的需求分析,依然是服務設計的基礎。
面向SOA進行信息系統設計與開發,其核心是Web服務的設計、開發與部署,以及基于B/S架構的信息系統設計、開發與部署。整個開發框架與流程如圖3所示。
整個開發流程遵循經典的系統開發設計過程,即系統分析、系統設計、系統開發與部署、系統維護4個階段。
基于SOA,系統需求分析除了傳統需求分析需要實現的內容外,還要就整個系統的Web Services現狀進行分析,包括如下問題:①什么Web Services是所需要的,Web Services服務種類有哪些?②什么Web Services是可以通過共享其他Web Services獲得的,來自哪些系統與組織?③哪些組件可以共享用于構建Web Services?④各種服務與應用之間存在哪些依賴?等等。

圖3 面向SOA的信息系統設計流程
系統設計主要包括3個方面的內容:數據庫結構設計、Web Services設計、信息系統界面設計。數據庫結構設計遵循傳統設計內容與方法。Web Services設計主要基于以上4個基本原則,劃分服務邊界,保證原子性,確定服務契約,保證服務的兼容性,進而確定Web Services的類別與數量,并分別設計各Web Services的服務接口。信息系統界面設計,主要是組織實現業務邏輯,保證系統的簡潔與實用性,這需要與業務邏輯緊密結合,使之符合信息系統用戶的習慣。
系統開發與部署包括Web Services的開發與部署、信息系統開發與部署兩個方面。Web Services可以通過.NET開發工具實現,尤其.NET推出的WCF4.0為基于SOA的Web Services開發與部署提供了方便。Web Services單獨部署有兩個優勢:一是可以實現Web Services維護的相對獨立性;二是可有效實現Web Services的共享與復用。信息系統開發與部署主要是開發實現各界面,后臺則通過調用與集成Web Services實現各業務邏輯[3-4]。對于一些比較常規的功能(如統計、分析、報表等),也可以通過調用一些工具軟件來實現。信息系統單獨進行部署,不同的信息系統可以復用同一個Web Services,實現軟件復用。
系統維護包括Web Services維護、信息系統維護。Web Services維護主要通過版本管理實現,如設計原則所述,應該盡量保證服務版本升級不影響已有用戶的使用,盡量通過附加契約、增加接口等實現服務的更新與維護。
WCF(Windows communication function)不是單獨提出的一種分布式程序開發的環境與工具,而是在已有分布式程序開發技術的基礎上,通過一種面向服務的新型編程模型簡化了關聯應用程序的開發。WCF通過提供分層的體系結構,支持多種風格的分布式應用程序開發。具體而言,WCF對傳統分布式處理技術進行了3個方面的革新:①統一了Microsoft分布式計算技術;②實現了跨平臺的互操作性;③使WCF成為面向SOA的信息系統開發工具。
舊區改造管理信息系統是基于SOA體系架構設計開發的一個空間信息管理系統。本系統需要對海量空間信息進行瀏覽、查詢、統計、分析、報表、打印等,而這些功能也是常規空間信息管理的基本功能,因此本系統封裝這些功能,設計開發了一個Web Services SIGDAS(spatial information grid data access service),即空間信息網格數據訪問服務,實現對空間信息的管理。SIGDAS不但可以為舊區改造管理信息系統提供空間信息管理功能,也可以為同類涉及空間信息管理的應用系統提供相關功能。
面向SOA體系架構一般采用B/S體系結構。通常開發的應用系統是基于瀏覽器的Web頁面,通過該頁面實現業務邏輯。本系統涉及的業務功能模塊包括舊區改造基本情況、規劃計劃、實施進度、安置房、專題資料管理、綜合分析等。
SIGDAS是實現空間信息瀏覽、查詢、統計、分析、報表、標注、專題地圖、制圖打印、遙感比對等功能的Web服務,服務接口設計見表1。
舊區改造管理信息系統開發框架包括4層:數據層、網絡層、管理服務層、應用層,如圖4所示,具體為:
1)數據層。實現數據采集與上傳,包括:①舊區改造業務數據,各區縣通過動拆遷基地采集舊區改造業務數據,并向市平臺上傳數據,上傳的方式包括Email、手持終端PDA、市平臺與區平臺聯動3種方式;②全市舊區改造地塊空間調查數據;③實景照片數據、舊改文獻資料數據等。
2)網絡服務層。考慮到國家電子政務、上海電子政務建設對網絡環境的要求,同時也基于本系統未來的可擴展性,以及與其他委辦局數據交換的需求,本系統采用政務外網網絡環境。各區縣上傳數據可以采用互聯網網絡環境。

表1 SIGDAS接口

圖4 面向SOA的舊區改造信息系統開發框架
3)管理服務層。通過數據匯集與整理建立舊區改造業務管理綜合數據庫,開發空間數據訪問服務SIGDAS、數據核查與自動更新、數據管理等工具,建立上海市舊區改造信息管理系統。
4)應用層。實現舊區改造基本情況瀏覽查詢、規劃計劃管理、實施進度管理、動遷安置房源管理、案例文獻政策文件資料管理等。
面向SOA的信息系統設計與開發成為目前信息系統開發的趨勢,也是未來云計算戰略的核心技術。本文對面向SOA的信息系統設計Web Services的設計原則、系統開發流程進行了闡述,并以上海市舊區改造信息管理系統為例,進行了應用研究。本文后續研究應該關注如下3點:①Web Services集成應用研究,結合實際業務系統,對Web Services集成應用進行深入研究;②Web Services的版本管理、升級演化、輔助契約維護研究,研究實現的技術與方法;③SOA與云計算關系等。
[1]OASIS.Reference Model for Service Oriented Architecture 1.0[EB/OL].[2006-08-02].http:∥www.oasis-open.org/committees/tc_home.php?wg_abbrev=soa-rm.
[2]LIU Hua,ORBAN D.Gridbatch:Cloud Computing for Large-scale Data-intensive Batch Applications[C]∥Proceedings of CCGRID'08.Washington DC:IEEE Computer Society,2008:295-305.
[3]BUYYA R,RANJAN R,CALHEIROS R N.Modeling and Simulation of Scalable Cloud Computing Environments and the CloudSim Toolkit:Challenges and Opportunities[C]∥ Proceedings of HPCS'09.Leipzig:[s.n.],2009.
[4]PATHAK N.Pro WCF4.0.Practical Microsoft SOA Implementation[M].[S.l.]:Apress,2011.
[5]CHEN CY,TSAI P W.A Design of Multi-heterogeneous System Using SOA and RFID Middleware Platform[C]∥Proceedings of the 9th International Conference on Machine Learning and Cybernetics.Qingdao:[s.n.],2010.
[6]于海龍,鄔倫,林星,等.基于WebService的小流域地貌演化問題計算設計與實現[J].北京大學學報:自然科學版,2005,41(6):890-897.
[7]于海龍,鄔倫,劉瑜,等.基于Web Services的GIS與應用模型集成研究[J].測繪學報,2006,35(2):153-159.
[8]于海龍,劉麗萍,鄔倫.基于Web Services的模型復用研究[J].系統仿真學報,2007,19(18):4139-4145.