面向服務的架構承諾,一旦被采用,將會帶來許多好處。任何新方法所帶來的典型問題都是,如何克服初始成本和中斷采用的問題。對于 SOA 來說,其現實問題是,大多數企業信息尚未支持 Web Service,甚至無法以XML 格式交付數據,F實中的數據仍被“老信徒”們所統治著的——從逗號分隔的數據到 Cobol 數據格式。更有甚者,許多使用這些格式的系統恐怕根本就碰不得——它們太重要或者太脆弱了,不能亂動,也就無法達到啟用Web Service的目的。
就在我們思討如何把數據傳遍整個企業時,一個類似的問題出現了。雖然很多人會采用基于 JMS 的可靠消息傳遞來形成規則的傳輸機制,但是,多數情況下,數據是通過 FTP 傳送的,甚至遺留在目錄中有待收集。
然而,我們不應該舉手投降。再次提出的是,確保所采用的方法在本質上持續增量,并允許這些遺留數據格式化和遷移,從而成為 SOA 的一部分,這還真是一個問題——如何把遺留系統帶入現代系統。
新新事物
新技術的出現往往很容易使人狂熱失控。IT 歷史就是一長串改變一切的新“范例”。但是,人們難以吸取的教訓是,這只是一個罕見的特例,并且,對于新技術來說,無論它們的倡導者多么偉大,它們都必須學會在充斥著現有系統的現實世界中生存,這個世界是一個雜亂無章且時常讓人迷惑的地方。
對于 SOA 而言,若要重新配置正在運行的現有系統,則很少有企業樂意大規模地轉移到這種方法。有些 SOA 倡導者會成功地建立一些引人注目的商業案例,并使企業確信能夠獲得長期收益。還有些 SOA 倡導者在宣傳這種轉換時正好幸運地趕上了某個企業正準備進行大規模改造。然而擺在大多數 SOA 倡導者面前的事實是,確實難以通過采用一套新的架構來獲得長期收益。
我曾在前面指出,確實可能有一種本質上持續增量的方法,并因而減少新架構所帶來的系統中斷成本。在本文所述情況下,這種持續增量的方法表明,成功 SOA 的設計方式必須是,使它能與現有的技術共存,并盡可能簡單和不影響現有系統。
共存的兩個方面
總的說來,在這兩個關鍵領域中,SOA 必定會實施過程中遭遇“遺留”系統。這就是遺留應用程序和傳輸協議。
首先看看遺留應用程序,最初的解決方案看起來似乎很直觀:使用一個web service啟動工具,并創建一個面向現有系統的新接口。然而,當使用這個工具時,仍然存在著很多問題,因為通常都需要這個工具能夠直接訪問應用程序的接口或數據。這基本上是不可能的,因為應用程序不會公開這些接口或數據,相反它是批處理驅動的——在特定時間間隔內創建一個報告。
換言之,幾乎不可能簡單地直接訪問,因為應用程序屬于另一個企業,沒有理由認為,該企業會為了改造成 SOA 而冒險花錢。最后一個問題在任何 B2B 服務供應場景中都很常見。舉個金融服務業的例子:首要經紀人賴以生存的能力是,根據各個對沖基金客戶的不同需求,導入或導出不同的消息格式。對于對沖基金來說,沒有任何理由改變和引入web services,以減輕首要經紀人的工作。
它們所支持的傳輸協議和現有業務流程同樣存在著錯綜復雜的問題。實際情況是,很多此類問題仍然是基于批處理的,甚至是使用 FTP 或 email 來分發非 XML 文檔(如 Excel 文件)。同時,一些綜合項目可能選擇 HTTP,這種方式適用于靈活而又資源占用少的消息傳遞,或者是選擇 JMS,這種方式適合于健壯而可靠的實現,這增加了現有系統的復雜性。
很明顯,在消息格式和傳輸方式這兩個問題上,SOA 實現都必須在企業涉及的范圍內進行調整和集成,而無需任何外來的壓力。
實際步驟
這對于 SOA 部署來說意味著什么?
首先,成功與否取決于 SOA 能否與現有技術有效地并行工作。這意味著能夠訪問應用程序所能公開的信息——即目錄中的文件或隊列中的信息。這同時也意味著 XML 是否保留“普通格式”,并且我們能夠繼續利用它的獨特屬性來處理編排與調解,SOA 實現必須使非 XML 格式與 XML 格式之間盡可能無縫地相互轉換。
這是一種相對直接的方法,可以通過映射技術來實現它,這種映射技術能夠采用類似于 XML 轉換一樣的方式來定義這些轉換。接著,在運行時執行,并提供了全自動化以及跨多種數據格式的多種交付的能力。步入 XML 世界后,接下來提供 Web Service 并完成整個過程就相關直接了。
其次,SOA 實現的核心部分當然是業務流程的快速自動化。這種自動化必須能夠包括不基于Web Services的步驟;氐绞滓浖o人的例子中來,對沖基金可能正在通過 FTP 向服務提供者傳輸 Excel 文件,那么有效的 SOA 實現應該使用目錄輪詢和數據格式轉換技術來自動地從相應目錄提取數據,并將其轉換成內部格式——無需在該事務的另一邊對業務進程作任何技術上的改動。
這一切說明了一個重要事實:SOA 的遷移必須受業務需求的驅動,而不應是感覺到需要選擇和交付單一的“聚合性”架構。成功的 SOA 實現涉及到接收一些無法改變的事物,并將它們合并在一起。
原文出處
http://www.webservices.org/ws/content/view/full/57752
文章來源于領測軟件測試網 http://www.kjueaiud.com/