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