中培偉業(yè)IT常青樹專家組在前面章節(jié)講述了企業(yè)ESB的架構、使用場景,以及服務標準規(guī)范,接下來他們介紹ESB服務化實現(xiàn)的兩個基本點,即業(yè)務服務規(guī)劃和ESB服務的技術實現(xiàn)。
ESB服務化的目標是建立標準化、規(guī)范化、可復用的服務體系,提升業(yè)務響應速度,靈活應對市場挑戰(zhàn)和業(yè)務變革;在服務體系的建立過程中,企業(yè)逐步形成重要的可復用的軟資產(chǎn),更好地支撐的業(yè)務戰(zhàn)略目標。
服務化的實現(xiàn)包括兩大部分任務,一部分是業(yè)務服務的設計,提供開放的、基于標準的服務定義與實現(xiàn)。另一部分,ESB采用SOA理念,實現(xiàn)服務的注冊、發(fā)布、消費、監(jiān)控,以及服務的全生命周期管理。本章介紹第一部分,業(yè)務服務的規(guī)劃。
1章 業(yè)務服務的規(guī)劃
業(yè)務服務的規(guī)劃,是指企業(yè)通過對現(xiàn)有服務資產(chǎn)的梳理和分析,逐步建立、完善服務體系,規(guī)劃并指導各系統(tǒng)定義和發(fā)布業(yè)務服務或技術服務。
業(yè)務服務的規(guī)劃,注重效率和重用,可以將業(yè)務系統(tǒng)的公共技術部分和公共應用部分提煉出來,形成可重用的服務。公共技術部分,比如用戶認證授權、文件管理、業(yè)務流程管理、數(shù)據(jù)質量管理等,形成統(tǒng)一的基礎技術服務平臺;公共應用部分,是指將應用的公共部分提煉出來,不同行業(yè)有不同的業(yè)務和應用特點,這部分要具體情況具體分析。如下圖所示:
對于新的業(yè)務需求,盡量多地通過對現(xiàn)有服務的組織,來滿足需求。這樣,加快了反應速度和質量,減少了開發(fā)、測試的工作量。
那么,具體說來,服務規(guī)劃有什么樣的方法論指導,規(guī)劃的策略、原則和具體方法是什么呢?所幸,SOAD為企業(yè)SOA的實現(xiàn)提供了一種全新的方法論,搭建了業(yè)務和 IT 之間的橋梁,全面支持SOA項目的分析和設計階段,它以現(xiàn)有的經(jīng)過實踐檢驗的OOAD、EA和 BPM 為基礎建立了創(chuàng)新的交叉學科的方法,規(guī)劃了一個整體的建模規(guī)則。下面描述服務規(guī)劃的策略、原則和開發(fā)步驟方法。
2章 服務規(guī)劃的策略
服務策略是實施服務設計的指導方針,在技術層面和管理層面定義了那些做法是正確的,策略會隨著時間推移不斷演化。常見的服務策略包括以下幾種:
a)安全策略,包括服務授權,采用數(shù)字證書、加密技術實現(xiàn)對服務報文的完整性、保密性和不可抵賴性等。
b)服務的互操作性
c)語義、數(shù)據(jù)和schema策略
d)服務質量和服務等級協(xié)議策略
e)可靠性策略
f)服務版本策略。
3章 面向服務的架構設計原則
服務規(guī)劃遵循面向服務架構的設計原則,包括以下:
服務標準化:指服務設計開發(fā)必須遵循的技術標準和開發(fā)步驟規(guī)范,包括XML、WSDL、SOAP、WS-policy、XML Schema等。這是應用系統(tǒng)作為服務提供者和服務使用者必須遵循的,保證服務在整個生命周期具有一致的統(tǒng)一的規(guī)范和技術標準。
服務松耦合:松耦合是一個服務請求另一個服務的同時依舊保持服務獨立性,通過使用服務契約來達到松散耦合。何為服務契約?服務源于對現(xiàn)實世界的模擬,現(xiàn)代社會是一個契約社會,服務的提供者和消費者雙方基于契約行事,契約約定了服務內(nèi)容和責任義務。
服務可重用:服務是獨立的、上下文無關的。以服務為導向鼓勵所有服務的可重用性,而不用過多考慮是否存在直接的重用需求。
服務透明性:服務透明性原則允許將服務當作黑盒,提供公共方法供服務使用者調用,對外部隱藏細節(jié)。對于服務請求者來說只關心請求服務的結果,而不用關注服務的具體實現(xiàn)過程。
服務可發(fā)現(xiàn):應用系統(tǒng)需要有效的方法知道有哪些可用服務,以及如何獲取和使用這些服務。服務的可發(fā)現(xiàn)性有利于避免多余的服務,或者實現(xiàn)多余邏輯的服務。
服務可組合:服務可組合性原則,是為了保證服務能夠成為組合業(yè)務操作服務的有效成員;在常見的編排層服務設計過程中,需要組合不同的服務,調用不同的操作邏輯,這就要保證設計出來的服務能夠被組合起來實現(xiàn)業(yè)務服務的操作過程。
4章 服務設計的開發(fā)方法
服務的設計、開發(fā)應遵循面向服務架構的設計、開發(fā)規(guī)范,即SOAD規(guī)范。SOAD包括服務分析、服務設計、服務實現(xiàn)三個主要步驟。其中步驟執(zhí)行順序和每一步驟主要完成的工作如下圖所示:
服務分析,服務分析通常采用從頂至下的設計方法,通過對企業(yè)應用架構的全面功能分析,注重效率和重用,識別出可重用的服務,包括可重用的基礎技術服務和基礎業(yè)務服務,以及潛在的業(yè)務服務。
服務設計,服務設計要遵從面向服務的架構設計原則,要求簡單明晰,同時兼顧靈活性,原子設計和組合設計相結合,并能夠支持不同類型的服務方式。原子設計是指以實體為中心的設計,即基本功能點設計,主要是完成一次交互的請求響應處理,比如對應于后臺的查詢、檢查、驗證等,服務設計時要注意原子服務粒度。組合服務由原子服務組成的,主要完成跨系統(tǒng)的原子服務的組合訪問,形成應用服務設計和以任務為中心的服務設計。組合的服務個數(shù)不宜過多,當組合的原子服務過多,業(yè)務邏輯處理變得復雜,服務質量將大大降低。組合服務統(tǒng)一對外發(fā)布標準的接口,遵循SOA規(guī)范。
服務實現(xiàn),指服務的具體實現(xiàn),包括服務的開發(fā)、測試和部署。服務開發(fā)遵從SOA標準規(guī)范,比如JAX-WS規(guī)范,在 JAX-WS中,一個遠程調用可以轉換為一個基于XML的協(xié)議例如SOAP,在使用JAX-WS過程中,開發(fā)者不需要編寫任何生成和處理SOAP消息的代碼。JAX-WS運行時會將這些API的調用轉換成為對應的SOAP消息。
5章 結束語
服務設計和開發(fā)通常采用迭代開發(fā)方法,每一輪迭代周期都包括服務分析、服務設計和服務實現(xiàn)。在每一輪迭代均要有業(yè)務人員的參與,并提供反饋,為下一輪迭代提供指導。這樣可以降低服務建設的風險,提高用戶滿意度。下一章節(jié)講述ESB服務的技術實現(xiàn)。