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