鄭秋寧,嚴余松
(1.西南交通大學 信 息科學與技術學院,成都 6 10031;2.西南交通大學 交 通運輸學院,成都 6 10031)
隨著信息技術在鐵路運輸生產中的不斷應用,鐵路內部信息系統(tǒng)彼此間呈現出多樣化的趨勢。由于這些信息系統(tǒng)開發(fā)時期不同,開發(fā)時采用相對獨立的開發(fā)模式,導致目前車務系統(tǒng)內部各信息系統(tǒng)之間存在異質性問題,信息孤島[1]情況突出。有效地解決方法是在既有企業(yè)內部信息系統(tǒng)的基礎上,通過在技術層面上搭建基礎性綜合信息平臺,對現有的運輸生產數據及信息系統(tǒng)中的業(yè)務功能整合進平臺中。其核心內容是以面向服務架構(Service Oriented Architecture,SOA)思想為理論指導,在技術標準上,運用既有的XML及Web服務等相關計算機技術,對企業(yè)內部的業(yè)務功能及運輸生產數據按照統(tǒng)一的傳輸模式及數據交換標準進行封裝[2],使綜合信息平臺基礎架構在獨立于原有信息系統(tǒng)的邏輯層的基礎上,形成一個開放式的軟件基礎架構,以期達到不斷滿足車務系統(tǒng)運輸生產要求的最終目的。
SOA是一個軟件架構,它包含4個關鍵概念:應用程序前端、服務、服務庫和服務總線。一個服務包含一個合約、一個或多個接口以及一個實現[3]。SOA組成結構如圖1。“應用程序前端”是業(yè)務流程的所有者;“服務”提供業(yè)務功能,可供應用程序前端和其他服務使用;服務的“實現”提供業(yè)務邏輯和數據;服務的“合約”為服務客戶指定功能、使用和約束;服務的“接口”物理地公開功能;“服務庫”存儲SOA中各個服務的服務合約;“服務總線”將應用程序前端和服務連在一起。SOA概念的重心是定義業(yè)務基礎結構。
SOA的實現有賴于一個SOA的實現平臺,Web服務技術是當前SOA的主流實現方式。Web服務技術體系是以可擴展標記語言(Extensible Markup Language,XML)為基礎的。SOA軟件架構中的4個主要技術:Web服務、SOAP、WSDL、UDDI都是依賴于XML語法的[4]。分別簡介如下:
(1)XML語言:XML是一門創(chuàng)建結構化數據的技術。XML意味著以一種明確的、無二義性的方式標識信息各個單獨部分[5]。XML Schema是定義XML文檔數據模型的標準。
(2)Web服務:Web服務是支持網絡上不同機器與機器共同操作的軟件系統(tǒng),它提供的接口能用機器所識別和處理的格式語言(WSDL)所描述[6]。Web服務的架構基于3種角色之間的交互,它們是服務提供者(Service provider)、服務注冊中心(Service registry)、服務請求者(Service requestor)。它們之間交互的操作有:發(fā)布(pubulish)、查找(find)和綁定(bind)[7]。
如圖2 ,它們主要執(zhí)行3個操作:
發(fā)布(Publish):為了服務能夠被訪問,服務的描述信息必須被發(fā)布以便服務請求者發(fā)現和調用之。
查找(Find):服務請求者通過查詢服務注冊中心去定位符合其需求標準的服務。
綁定(Bind):在獲得服務描述信息之后,服務請求者據此去調用服務。
(3)簡單對象訪問協(xié)議(Simple Object Access Protocol,SOAP):SOAP是一種簡單的基于XML的協(xié)議,它使應用程序通過HTTP來交換信息.它可以在Web上交換結構化的信息[8]。
(4)Web服務描述語言(Web Service Description Language,WSDL):WSDL采用XML語言來描述Web服務的屬性,其中包括Web服務做什么、位置、怎么調用等。
(5) 統(tǒng)一描述、發(fā)現和集成(Universal Description,Discovery and Integration,UDDI):UDDI為Web Service提供信息注冊的標準規(guī)范,以便對Web Service進行注冊發(fā)布供使用者查找。
SOA是一種構建系統(tǒng)基礎架構的思想,它將業(yè)務服務作為協(xié)調技術與業(yè)務需求的關鍵組織原則[9]。以SOA思想為指導,在車務綜合信息平臺基礎架構項目中,以XML及Web Service技術作為系統(tǒng)集成的核心標準,構建出如圖3所示的鐵路車務綜合信息平臺架構設計方案。
(1)緩解“信息孤島”:Web Service服務器端與綜合信息平臺內部客戶端及外部客戶端通過基于HTTP的SOAP消息進行通訊,消息內容基于XML標準。
(2)業(yè)務為主導:利用Web Service技術,對于企業(yè)內部原有的信息系統(tǒng),按照實際需求將功能包裝成Web服務,提供統(tǒng)一的、簡單可靠的Web服務接口調用方式?;谶@些標準的Web服務,能夠更加容易地實現客戶端系統(tǒng)集成。體現出“業(yè)務驅動服務,服務驅動技術”的業(yè)務為主導的思想[9]。
(3)松散耦合:由于Web服務接口的定義和描述獨立于實現的硬件平臺、操作系統(tǒng)和編程語言,從而不同的服務以一種統(tǒng)一和通用的方式進行交互。這樣,服務請求者與服務提供者之間的綁定以及服務之間是松散耦合的。
(4)接口定義標準統(tǒng)一:SOA中的服務的交互接口必須是被明確定義和描述的。服務提供者應該使用標準的服務描述語言(WSDL)來定義接口,用于描述服務請求者要求綁定到服務所需要的細節(jié)。
(5)不同系統(tǒng)間數據交換:通過以Web服務接口的形式將企業(yè)內部相關業(yè)務數據進行公布,使得客戶端可以更加方便地獲得所需業(yè)務數據,達到數據集成的目的。
(6)遠程調用及兼容性:通過利用“服務”,搭建起車務系統(tǒng)內部信息系統(tǒng)之間的橫向溝通橋梁,從而提高了整個綜合信息平臺架構的靈活性。
(7)服務統(tǒng)一管理:統(tǒng)一采用標準Web 服務接口作為功能模塊接口,便于權限管理和服務內部技術調整。
主要劃分為7層:如圖4。
數據存儲方案是綜合信息平臺架構中的一個重要部分,數據庫是被集中控制和管理的存儲數據的完整集合。目前廣泛應用的是關系數據庫和面向對象數據庫[10]。本文首先選擇以主流的關系數據庫技術為數據存儲方案方式之一。
關系數據庫技術到目前也出現了很多不夠完善的問題:對于較復雜的數據結構,在數據建模時技術能力有限;在異構應用數據交換時,難以實現計算機基于語義自動進行正確數據的檢索與應用。XML是一組規(guī)則和準則集合,用于以無格式文本(非二進制)來描述結構化數據。隨著時間的推移,基于文本的XML技術在數據存儲方面得到了長足發(fā)展并具備了相當的優(yōu)勢。同時XML是平臺無關的、標準化的一組規(guī)則集合,得到眾多廠商的廣泛支持,數據庫與XML結合的理由對任何使用過這兩者的人來說都是不言而喻的[11]。
綜上所述,在數據存儲方案中采用了關系數據庫技術與XML數據文檔相結合的數據存儲方案,主要應用在以下3個方面:
(1)對于如工號、密碼等基礎性的需要頻繁操作的強結構化的數據,采用關系數據表的方式保存于數據庫中。
(2)對于文本文檔(如Word文檔)等半結構化的數據,以XML文檔形式保存在數據庫的XML字段中,并采用XPath和XQuery等技術對其進行檢索、更新、刪除等操作。
(3)對于大批量結構化數據(如報表文件)需要進行輸入輸出操作時,直接使用For XML子句將數據表中的數據行集轉換成結構化文檔(如Excel文件),而使用Open XML子句直接將結構化文檔轉換成關系行集。
在車務綜合信息平臺的開發(fā)及部署方面,本文采用微軟公司的系列產品作為開發(fā)及部署平臺支撐。其中,開發(fā)平臺以微軟的.NET軟件開發(fā)平臺為主,部署平臺以Windows Server 2003操作系統(tǒng)及IIS6.0為主。
綜合信息平臺的基礎架構部分主要包括了圖5中所示的組件和程序包。
在圖5中將基本組件共分成了6個區(qū)域,分別對應圖3中的各個層,其中:A對應業(yè)務邏輯層中Web服務層;B對應業(yè)務邏輯層中業(yè)務集成模塊及業(yè)務實體、業(yè)務規(guī)則層、業(yè)務外觀層;C對應業(yè)務邏輯層中安全驗證模塊;D對應數據傳輸層;E對應數據訪問層;F對應業(yè)務邏輯層中系統(tǒng)框架層。下面對各個模塊進行簡單介紹。
本系統(tǒng)在開發(fā)過程中充分利用Microsoft Enterprise Library中的類庫,主要包括數據訪問、數據加密等。
Web.config是系統(tǒng)運行配置文件,主要用于保存系統(tǒng)相關配置信息,如數據庫連接字符串、安全驗證方式等,是系統(tǒng)運行的基礎。Web.config本質上是XML文件格式的,因此,除使用.NET平臺所提供的配置功能以外,還可以使用多種方式在配置文件中保存自定義配置信息。
(1)定義服務組件的抽象基類和接口,為后續(xù)開發(fā)者開發(fā)新的服務組件預留接口;
(2)配置文件管理,提供管理配置文件的相關服務;
(3)簡單SQL語句生成器,主要用于生成簡單的SQL語句。將在業(yè)務邏輯開發(fā)過程中簡單而重復的SQL語句(如實現簡單的插入、刪除等操作的SQL語句)通過生成器自動生成,減少代碼冗余,提高開效率。
數據訪問包主要為系統(tǒng)中其他組件訪問數據庫提供服務。通過數據訪問組件,將上層的業(yè)務邏輯與數據庫隔離開來,使系統(tǒng)在數據庫方面具有較好的可移植性,此外,數據訪問程序包充分利用了Microsoft Enterprise Library中的Data Access Application Block中所提供的功能,并將數據庫的連接字符串寫入配置文件中,在更改數據庫連接時,只需修改配置文件相應配置信息,便于系統(tǒng)的移植和維護。
數據加密組件主要實現SOAP消息的加密和解密功能。同樣,數據加密組件使用了Microsoft Enterprise Library的相關類庫。
安全驗證組件主要實現系統(tǒng)的身份驗證功能,將非法的用戶拒之于系統(tǒng)邊界之外。
服務組件是系統(tǒng)中核心組件,主要實現服務器端所能提供服務的業(yè)務邏輯。
由業(yè)務集成中的各個服務組件提供的服務接口構成,主要實現服務器端提供的服務接口集合。供用戶界面層使用服務器提供的服務功能。
為了方便進行異常處理,本系統(tǒng)定義了異?;怋aseException,系統(tǒng)框架中其余使用的異常類都繼承于該基類。車務綜合信息平臺可以部署成一個分布式的系統(tǒng),將各項服務分布于多個的服務器上,其穩(wěn)定性依賴于各個服務器以及網絡連接是否穩(wěn)定。在基礎架構中,充分利用.NET框架提供的跟蹤偵聽機制,由Trace類發(fā)布跟蹤信息,再通過注冊在配置文件中的偵聽器偵聽并處理。將跟蹤信息寫入Windows事件日志中。實現系統(tǒng)的故障診斷,以降低系統(tǒng)維護的難度。
(1)系統(tǒng)運行時所需要的基本信息:如數據庫連接字符串,客戶端程序登錄信息等。
(2)個性化客戶端信息:將客戶端程序的配色、字體等相關信息保存在配置文件中,使用戶獲得個性化的用戶體驗。
(3)功能模塊配置信息:這主要用于客戶端程序,實現功能模塊的熱插拔效果。
在數據訪問方面,本系統(tǒng)設計了數據訪問組件(OrionIsDataAccessor),并采用基于ADO.NET和Microsoft Enterprise Library(Data Access Application Block)相結合的數據訪問方案。
為保證系統(tǒng)的安全性,本系統(tǒng)開發(fā)了一個安全通信組件,以SOAP擴展模塊的形式集成到系統(tǒng)中,在SOAP消息頭中實現數據的加密和解密,以保證數據通信安全;并在此基礎上開發(fā)了一個安全驗證組件(模塊)以HTTP模塊的形式集成到系統(tǒng)中,以保證系統(tǒng)身份驗證安全。
業(yè)務集成是本系統(tǒng)的核心。業(yè)務集成是運行在系統(tǒng)支撐結構之上的封裝了業(yè)務邏輯的服務組件。一個功能模塊即一個服務組件,服務器端提供了多個功能模塊,即包含多個服務組件。
由于車務綜合信息平臺的開放式特性,客戶端可能是多種形式的,用戶的數目龐大并不確定,不同的用戶群體的特征也各自不一樣。因此,需要有一個良好的管理機制來管理用戶,保證精確的權限管理,并提高管理效率。本文采用了基于帳戶、角色和賬戶組的權限管理邏輯,并將相關驗證信息保存在數據庫中。在進行身份驗證時,系統(tǒng)根據客戶端輸入的職工工號檢索LaborInfo表,查找相應的賬戶信息,將客戶端輸入的密碼與LaborInfo表相應的密碼進行比較,如果存在這樣的用戶名并相應的密碼相同,則通過身份驗證。賬戶組則將具備類似權限的賬戶歸類為一組,統(tǒng)一進行管理。賬戶組的成員可以是賬戶,也可以是其他的賬戶組。系統(tǒng)管理員可增設新的組,或者對已經存在的組中增減賬戶、子賬戶組或角色。
在客戶端與服務器端的交互過程中,往往會出現在較短的時間內客戶端需要多次調用Web服務方法。如果每調用一次Web服務方法就在HTTP模塊中訪問一次數據庫,進行員工工號和密碼的比對操作,將會消耗過多的系統(tǒng)資源,降低運行效率。為了避免以上情況,車務綜合信息平臺將經過首次驗證的客戶端所生成的Principle對象保存在系統(tǒng)緩存中,并產生一個GUID來標識該Principle對象,同時將GUID返回給客戶端,在以后的請求中,只需以此GUID來從緩存中讀取Principle對象。這樣一來,避免了對同一用戶的多個請求進行不必要的多次用戶驗證。
SOA是一種面向服務的軟件體系架構思想,基于SOA的一系列技術及標準具有松耦合、平臺無關、粗粒度服務接口等優(yōu)點?;赟OA的思想對目前企業(yè)內部信息系統(tǒng)進行集成,不僅解決諸如信息孤島、異質性、數據交換這樣的問題,還可以大大節(jié)省企業(yè)內部信息系統(tǒng)的維護和管理費用。隨著相關技術的不斷進步,SOA系統(tǒng)集成思想在今后鐵路信息化的發(fā)展道路上必定能不斷發(fā)揮更加重要的作用。
[1]楊 勇,楊薇薇.Web服務的一種通用集成模型的研究[J].華中科技大學學報:自然科學版,2004,32(1):44-46.
[2]雷 彬,張洪偉,汪怔江. 基于SOA的企業(yè)分布式系統(tǒng)的研究域應用[J]. 開發(fā)案例,2007(9):97-99.
[3]孟海濤,殷 旭. 基于SOA的數字化校園網研究[J]. 中國科技信息,2007(16):92-94.
[4]曾 洋,張艷梅. 面向服務的體系結構[J]. 軟件導刊,2008(7):77-78.
[5]李建華,陳松喬. 面向服務架構參考模型及應用研究[J]. 計算機工程,2006,32(20):100-102.
[6]門永奎. 基于Web Service的軟件分布式重用的研究與實現[J]. 微計算機信息,2006,22(27):278-280.
[7]柴曉路. Web服務架構與開放互操作技術[M]. 北京: 清華大學出版社,2003:255-256.
[8]OASIS SOA Reference Model TC. Mapping of W3C Web service Architecture Work to SOA RM work[R]. USA, 2005.145-146.
[9]Dirk Krafzig, Karl Banke. Enterprise SOA Service-Oriented Architecture Best Practices[M]. USA 2006.
[10] Nicolai M.Josuttis SOA in Practice-The Art of Distributed System Design[M]. USA 2008.
[11] 毛新生. SOA原理、方法、實踐[M]. 北京:電子工業(yè)出版社,2007.