徐煥
【摘要】 近年來(lái)為了實(shí)現(xiàn)企業(yè)信息系統(tǒng)整合,減少信息孤島,基于SOAP/HTTP協(xié)議已經(jīng)成為集成系統(tǒng)數(shù)據(jù)的一代新寵,隨之而來(lái)的是SOA(面向服務(wù)架構(gòu))技術(shù)被廣泛使用,然后基于SOA架構(gòu)的SAAS(軟件即服務(wù))云架構(gòu)誕生,SOA給企業(yè)信息化帶來(lái)了新的發(fā)展前景。企業(yè)總線(xiàn)、數(shù)據(jù)交換是實(shí)現(xiàn)SOA集成必不可少的中間軟件,它們之間的區(qū)別是實(shí)施系統(tǒng)集成項(xiàng)目的決策者關(guān)心的問(wèn)題。本文將先通過(guò)介紹使用SOAP/HTTP協(xié)議直連方式說(shuō)明SOA集成的原理,再分析企業(yè)總線(xiàn)和數(shù)據(jù)交換之間差異,使讀者在讀完本文后能了解在什么情況下使用什么樣的集成方式。
【關(guān)鍵詞】 SOA ESB SAAS 數(shù)據(jù)交換 集成
一、 直連方式
直連方式即提供SOA服務(wù)的系統(tǒng)直接發(fā)布WEBSERVICE服務(wù),消費(fèi)者不通過(guò)任何中間系統(tǒng)直接消費(fèi)該服務(wù)
服務(wù)提供者與服務(wù)消費(fèi)者之間做了2個(gè)接口,接口1將服務(wù)提供者系統(tǒng)table1中的字段field1和field2傳輸至服務(wù)消費(fèi)者系統(tǒng),分別寫(xiě)入table1的field1和table2的filed2中,接口2將服務(wù)提供者table2的字段filedA和table3的字段filedB填寫(xiě)至消費(fèi)者系統(tǒng)的table3中。
服務(wù)提供者將自己的輸出功能函數(shù)封裝成webservice服務(wù)發(fā)布并以WSDL的形式注冊(cè)在服務(wù)定義庫(kù)(UDDI)中,服務(wù)消費(fèi)者在服務(wù)描述庫(kù)中獲取該webservice的服務(wù)定義(XML格式),根據(jù)服務(wù)定義的內(nèi)容找到相應(yīng)的程序發(fā)布的服務(wù),獲取相應(yīng)的數(shù)據(jù)。
直連方式是最簡(jiǎn)單的SOA的WEBSERVICE接口方式,服務(wù)提供者系統(tǒng)會(huì)將需要傳輸?shù)臄?shù)據(jù)通過(guò)封裝程序打包用字符串(string)的形式生成XML語(yǔ)言的傳輸文本,通過(guò)SOAP協(xié)議傳輸至對(duì)端,服務(wù)消費(fèi)者針對(duì)該接口的接收程序?qū)⒃撟址痖_(kāi)后存放至正確的表中。
安全性:由于總部ERP是在用生產(chǎn)環(huán)境,上面如果運(yùn)行海量的接口會(huì)對(duì)其性能造成嚴(yán)重的影響,同時(shí)大量接口需要大量接口用戶(hù)驗(yàn)證,極大地提升了總部生產(chǎn)系統(tǒng)的安全風(fēng)險(xiǎn),可靠性:大量的封裝程序和接收程序會(huì)給系統(tǒng)帶來(lái)極大負(fù)載,完全無(wú)法實(shí)現(xiàn)同樣業(yè)務(wù)的接口復(fù)用,而且所有接口還有日志記錄需求,還會(huì)給總部ERP系統(tǒng)帶來(lái)額外的I/O壓力和海量日志數(shù)據(jù)。
易用性: 如果業(yè)務(wù)發(fā)生變動(dòng),需要對(duì)每個(gè)接口封裝程序進(jìn)行調(diào)整,工作成本巨大。
兼容性:不同系統(tǒng)對(duì)SOAP版本的支持不同,可能ERP系統(tǒng)只能提供SOAP1.1的協(xié)議,而基建管控只能接受SOAP1.2的協(xié)議,那么這兩系統(tǒng)如果集成可能還需要進(jìn)行系統(tǒng)升級(jí),而且對(duì)于無(wú)法支持SOAP的系統(tǒng)完全無(wú)法集成。
直連模式無(wú)法解決不同系統(tǒng)兼容性的問(wèn)題,所以無(wú)法實(shí)現(xiàn)業(yè)務(wù)自由集成的,而且直連接口帶來(lái)的安全性,可靠性,易用性使得整個(gè)集成工作變成不可能完成的任務(wù),因此直連模式最佳使用場(chǎng)合就是少數(shù)系統(tǒng)之間不存在兼容性問(wèn)題的接口互聯(lián),所以直連模式根本無(wú)法稱(chēng)之為SOA的解決方式,但是我們可以通過(guò)直連方式了解實(shí)現(xiàn)SOA技術(shù)的內(nèi)部原理。
可擴(kuò)展性:基本沒(méi)有可擴(kuò)展性,
二、總線(xiàn)方式
總線(xiàn)方式是在SOA架構(gòu)提出后,最早使用的使用中間系統(tǒng)集成SOA接口的方式,與直連相比,總線(xiàn)方式可以將所有系統(tǒng)發(fā)布出來(lái)的服務(wù)自己作為消費(fèi)者接收其數(shù)據(jù),然后自己發(fā)布WEBSERVICE服務(wù),再將這些服務(wù)注冊(cè)在自己的服務(wù)定義庫(kù)。和直連方式一樣,總線(xiàn)方式不會(huì)處理傳輸?shù)臄?shù)據(jù),不過(guò)它可以實(shí)現(xiàn)協(xié)議的轉(zhuǎn)換,例如將接收到的SOAP協(xié)議的數(shù)據(jù)轉(zhuǎn)換成FTP或者JMS輸出,或者將接收到的SOAP1.1的協(xié)議轉(zhuǎn)換成SOAP1.2,而且企業(yè)服務(wù)總線(xiàn)對(duì)于消費(fèi)者而言不僅支持HTTP/SOAP,還會(huì)提供多種協(xié)議支持,例如JDBC,JMS或者其它自定義的接口,消費(fèi)者系統(tǒng)就算不支持HTTP/SOAP的傳輸方式也可以接收服務(wù)提供者發(fā)出的數(shù)據(jù),同時(shí)也解決了消費(fèi)者需求不同SOAP版本服務(wù)的問(wèn)題,極大地解決的SOA兼容性的問(wèn)題。
可靠性
由于總線(xiàn)環(huán)境不會(huì)進(jìn)行任何數(shù)據(jù)轉(zhuǎn)換,因此還是和直連一樣,如圖表3中,只有消費(fèi)者需求的信息完全一樣才可以達(dá)到接口復(fù)用的效果,如果消費(fèi)者需要的信息稍有不同,必須針對(duì)其需求在服務(wù)端系統(tǒng)開(kāi)發(fā)新的封裝程序,如果面對(duì)大量的消費(fèi)者,服務(wù)端所需要大量的封裝程序,勢(shì)必會(huì)對(duì)服務(wù)端性能造成極大影響,和直連場(chǎng)景一樣,總線(xiàn)模式無(wú)法降低服務(wù)端的性能壓力??偩€(xiàn)方式可以記錄信息轉(zhuǎn)發(fā)的日志,但是由于數(shù)據(jù)封裝程序和解析程序也都在服務(wù)端和消費(fèi)端,一樣沒(méi)有辦法記錄任何數(shù)據(jù)交換的日志。
安全性
盡管總線(xiàn)場(chǎng)景可以改善直連的安全性問(wèn)題,但是其用戶(hù)授權(quán)驗(yàn)證方式還是針對(duì)接口本身的,因此還是存在對(duì)于同一系統(tǒng)的服務(wù)注冊(cè),還是需要分別對(duì)該系統(tǒng)的不同接口進(jìn)行驗(yàn)證,因此也存在需要該系統(tǒng)提供多個(gè)賬號(hào)分別注冊(cè)不同的接口,這樣不僅配置起來(lái)復(fù)雜,而且提供接口授權(quán)用戶(hù)越多,系統(tǒng)的安全性風(fēng)險(xiǎn)越高。
易用性
如果服務(wù)端業(yè)務(wù)發(fā)生變動(dòng),也需要對(duì)每個(gè)接口封裝程序進(jìn)行調(diào)整,工作成本巨大。
使用總線(xiàn)方式,主要是解決了大型企業(yè)環(huán)境中系統(tǒng)集成的兼容性問(wèn)題,使所有系統(tǒng)集成變成可能,還能解決一部分安全性的問(wèn)題,這是最基本的SOA解決方案,而且由于技術(shù)實(shí)現(xiàn)門(mén)檻低容易實(shí)施,也是很多企業(yè)在嘗試搭建SOA平臺(tái)時(shí)最先考慮的方式,但是總線(xiàn)方式并不是真正的數(shù)據(jù)交換模式,對(duì)于目前大型企業(yè)所需要建立SAAS云的解決方案顯得無(wú)力支持。
三、數(shù)據(jù)交換方式
數(shù)據(jù)交換方式是在提出基于SAAS云(軟件即服務(wù))的SOA架構(gòu)后,為了實(shí)現(xiàn)該架構(gòu)而產(chǎn)生的企業(yè)系統(tǒng)集成方式,其原理就如圖表5一樣,整個(gè)數(shù)據(jù)交換系統(tǒng)就像是云,服務(wù)消費(fèi)者系統(tǒng)全在云端,而服務(wù)提供者則是云的載體,它與總線(xiàn)方式相比有著革命性的不同,具體表現(xiàn)在:
可靠性
由于數(shù)據(jù)交換方式是在中間交換平臺(tái)處理接口邏輯,而服務(wù)消費(fèi)者和接收者系統(tǒng)不需要處理任何轉(zhuǎn)換邏輯,只負(fù)責(zé)輸出業(yè)務(wù)數(shù)據(jù)和接受業(yè)務(wù)數(shù)據(jù),而且服務(wù)提供者系統(tǒng)不需要針對(duì)每個(gè)接口編寫(xiě)輸出程序,一個(gè)業(yè)務(wù)輸出可能可以替代總線(xiàn)架構(gòu)的多個(gè)接口輸出,從而大大的降低了業(yè)務(wù)系統(tǒng)的運(yùn)行壓力。而且鉆換邏輯在數(shù)據(jù)交換系統(tǒng)也意味著數(shù)據(jù)交換的日志也從業(yè)務(wù)系統(tǒng)轉(zhuǎn)移至中間系統(tǒng),從而實(shí)現(xiàn)數(shù)據(jù)交換日志集中存放,使集中監(jiān)控變?yōu)榭赡埽瑯O大地提升了集成的可靠性。
安全性
由于數(shù)據(jù)交換方式對(duì)于系統(tǒng)是緊耦合方式集成,因此對(duì)于接口的集成是基于系統(tǒng)授權(quán)驗(yàn)證,而不是之前的對(duì)每個(gè)接口進(jìn)行授權(quán)驗(yàn)證,服務(wù)提供者系統(tǒng)的驗(yàn)證用戶(hù)也大大減少,這樣可以極大減少業(yè)務(wù)系統(tǒng)的接口用戶(hù)數(shù)量和驗(yàn)證次數(shù),提升業(yè)務(wù)系統(tǒng)安全性,同時(shí)消費(fèi)者系統(tǒng)的授權(quán)則由中間系統(tǒng)根據(jù)數(shù)據(jù)轉(zhuǎn)換內(nèi)容來(lái)控制,并提供多種加密協(xié)議,進(jìn)一步保證了系統(tǒng)集成的安全性。
易用性
即使業(yè)務(wù)發(fā)生變化,只需要調(diào)整業(yè)務(wù)輸出程序和數(shù)據(jù)交換平臺(tái)的業(yè)務(wù)接收程序,不需要針對(duì)每個(gè)接口進(jìn)行調(diào)整,容易實(shí)施。
使用數(shù)據(jù)交換方式是現(xiàn)今最流行,最先進(jìn)的系統(tǒng)集成方式,它是要實(shí)現(xiàn)基于SAAS云的核心組件,但是由于前期投資費(fèi)用巨大,而且對(duì)實(shí)施人員技術(shù)水準(zhǔn)要求高,在中小企業(yè)為了降低成本往往還是會(huì)選擇總線(xiàn)方式集成系統(tǒng),但是對(duì)于存在大量應(yīng)用系統(tǒng)的大型企和合超大型企業(yè),前期大量的投入可以極大的降低后期的運(yùn)維成本和風(fēng)險(xiǎn)。
四、結(jié)論
數(shù)據(jù)集成是現(xiàn)代企業(yè)信息化發(fā)展中不可避免的趨勢(shì),而本文中所提到的基于SOA的幾種集成方式也可以看成SOA架構(gòu)的發(fā)展方向,隨著大型企業(yè)越來(lái)越多的集成需求,搭建SAAS云服務(wù)成為大勢(shì)所趨,數(shù)據(jù)交換方式作為集成系統(tǒng)的中間平臺(tái)無(wú)疑是最佳的選擇,但是總線(xiàn)方式由于其低廉的實(shí)施成本和簡(jiǎn)單的實(shí)施方式也能占有一席之地。
本文對(duì)這幾種方式進(jìn)行了深入淺出的分析和比較,將這幾種方式的優(yōu)劣展現(xiàn)給讀者,希望能為將要準(zhǔn)備實(shí)施SOA系統(tǒng)集成項(xiàng)目的讀者有所幫助。