版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 PAGE 31 -面向服務的架構(gòu)(SOA)是一種組織信息處理的方法。各系統(tǒng)為協(xié)同工作在各方面達成了協(xié)議,SOA通過減少這些協(xié)議的數(shù)量,能夠降低信息系統(tǒng)互操作性的成本。如果SOA能得到大范圍的應用,系統(tǒng)將呈現(xiàn)與現(xiàn)在截然不同的前景,這就好比當今貨運行業(yè)有別于集裝箱出現(xiàn)前的貨運業(yè)時代一般。然而,目前的應用方式卻導致了額外的開支卻并未體現(xiàn)出這些互操作性的優(yōu)勢。將適用于數(shù)據(jù)庫時代的范式應用于SOA中,會招致反效果,往往是愚蠢的,有時甚至是十分危險的設(shè)計。這些模式必須由新的思想和行為方式所替代,以確保SOA朝著接口更簡單、IT方案更優(yōu)化以及項目更可控的方向發(fā)展。這一點可以通過遵守以下十大戒條來實現(xiàn)。引言
2、:SOA的的潛在影響面向服務的架構(gòu)構(gòu)(SOA)是一種組織織信息處理的的方法。這種種方法以服務務的形式描述述所有交互活活動,服務請請求者請求代代理完成某些些處理,代理理確保處理得得以完成并將將處理結(jié)果反反饋給服務請請求者。這種種思維方式可可以應用于業(yè)業(yè)務級別,以以描述各組織織機構(gòu)之間的的交互;應用用于功能級別別,以描述組組成業(yè)務流程程的活動的交交互方式;應應用到信息系系統(tǒng)級別,以以描述系統(tǒng)及及系統(tǒng)各部分分的交互方式式。每個級別別的準則都是是相同的:代代理完成所需需工作的方式式與請求者無無關(guān),乃至與與是否完全自自動、完全人人工亦或兩者者兼具都無關(guān)關(guān)系。哪怕代代理將部分或或者甚至全部部工作外包給給其
3、他代理完完成也與請求求者無關(guān)。所所有請求者所所需關(guān)注的是是與代理就以以下方面達成成一致:請求求及響應應該該如何制定,以以及服務的效效果如何。SOA被大肆宣宣揚為一種具具有巨大潛力力的范式,能能夠降低系統(tǒng)統(tǒng)發(fā)展、測試試及維護的成成本。特別需需要指出的是是,SOA承承諾可以通過過大幅度減少少達成協(xié)議的的因素的數(shù)量量,從而降低低信息系統(tǒng)各各模塊協(xié)同工工作的成本。采采用SOA,諸諸如像計算平平臺和數(shù)據(jù)格格式之間的差差別造成的系系統(tǒng)間通信屏屏障會較采用用早期的范式式要少得多。這這使得更大范范圍上的協(xié)作作變得可能,因因為它減少了了障礙,使系系統(tǒng)設(shè)計師們們不必被強行行要求相互達達成一致,就就此而言,也也使得
4、系統(tǒng)配配置員之間不不必被強行要要求達成一致致。如果這種種承諾可以實實現(xiàn),其結(jié)果果將會是革命命性的。就像像汽車改變了了城市區(qū)域形形態(tài),集裝箱箱運輸革新了了貨運行業(yè),以以及交易費用用的降低發(fā)展展了現(xiàn)代自由由市場經(jīng)濟,SSOA將開啟啟新的合作模模式。當SOOA主導我們們應用IT的的方式,系統(tǒng)統(tǒng)前景將與今今日迥然不同同,好比圍繞繞汽車來設(shè)計計規(guī)劃的城市市和圍繞火車車來設(shè)計規(guī)劃劃的城市截然然不同一般。對對我們之中那那些思維受限限于目前技術(shù)術(shù)的人來說,SSOA可以產(chǎn)產(chǎn)生多大的不不同是難以想想象的。然而而SOA所提提供的靈活性性優(yōu)勢就好比比汽車勝過火火車一樣:即即便火車可以以被制造跑得得和汽車一樣樣快,火車
5、還還是絕不可能能像汽車那樣樣提供門到門門的運輸服務務。把火車站站安置在每個個車道的盡頭頭,亦或甚至至把鐵軌鋪設(shè)設(shè)在每條道路路上都是根本本不現(xiàn)實的。為何此影響尚未未實現(xiàn)為獲取新范式帶帶來的好處,我我們必須好好好利用其所能能提供的各種種新的可能性性。遺憾的是是,目前圍繞繞SOA的言言過其實的宣宣傳對這些可可能性的提及及是言之甚少少。大部分討討論似乎都關(guān)關(guān)注于如何利利用SOA幫幫助單獨信息息系統(tǒng)更快速速地開發(fā)。然然而,這并非非SOA所能能創(chuàng)造的最大大價值之處。事事實上,SOOA是否真正正能夠改進以以往的方法,即即各個功能點點通過某一共共同的數(shù)據(jù)池池(通常是以以數(shù)據(jù)庫的方方式實現(xiàn))來來實現(xiàn)交互,還還存
6、在爭議。使使用SOA來來構(gòu)建單獨、孤孤立的信息系系統(tǒng)就像使用用集裝箱在加加工廠附近搬搬運貨物一樣樣:當然,它它限定了內(nèi)部部物流的順序序和組織,但但是集裝箱更更多的是擋了了道路而非提提供幫助。SSOA使信息息系統(tǒng)間達到到更好的互操操作性,就像像集裝箱促使使了運輸商之之間的互操作作性一樣。那那是一種重要要優(yōu)勢,因為為從需求確定定到信息系統(tǒng)統(tǒng)可操作之間間的時間周期期通常很大程程度上是由互互操作性決定定的。要使某某一信息系統(tǒng)統(tǒng)能夠與其操操作環(huán)境中的的其他系統(tǒng)一一起工作,那那將會花費比比重新構(gòu)建這這樣一個系統(tǒng)統(tǒng)更多的時間間和精力。關(guān)注于SOA在在信息系統(tǒng)內(nèi)內(nèi)部而非各系系統(tǒng)之間的使使用是情況更更加惡化的征
7、征兆:因為看看起來SOAA是一種全新新的處理我們們一直以來所所做的事情的的方式,我們們無法直接獲獲取它所帶來來的收益。SSOA概念和和技術(shù)正為目目前的系統(tǒng)開開發(fā)范式所利利用。這些范范式還是數(shù)據(jù)據(jù)庫時代的開開發(fā)產(chǎn)物,同同時也帶有數(shù)數(shù)據(jù)庫技術(shù)的的一些限制。在在這些限制下下應用SOAA將會導致額額外的開支,而而不能獲得額額外的收益。然然而,這些“數(shù)據(jù)庫化”的范式是如如此普遍和有有害以至于我我們常常忽略略了它們對我我們的思維影影響有多大。它它們是如此根根深蒂固,以以至于我們會會不自覺將其其視作常理。遺遺憾的是,這這樣通常招致致相反效果,常常常是愚蠢的的,有時甚至至是相當危險險的。它們導導致了一種不不好
8、的方案,這這種方案集合合了數(shù)據(jù)庫時時代的缺點以以及SOA不不好的一面,而而又不能體現(xiàn)現(xiàn)SOA必定定提供的優(yōu)點點。需要改變什么SOA范式有其其自身的常識識守則,較之之數(shù)據(jù)庫范式式的守則截然然不同。基本本戒律有十項項。前五項關(guān)關(guān)于如何簡化化事物,使其其比數(shù)據(jù)庫化化的范式要求求更加簡化從堅持要要點意義上更更加簡化。如如果我們以此此種方式簡化化事物,同一一問題的不同同解決方案相相互間協(xié)作的的可能性將大大大提升。接接下來的四項項關(guān)于使ITT解決方案優(yōu)優(yōu)于同等數(shù)據(jù)據(jù)庫解決方案案,這是通過過阻止那些戴戴著有色眼鏡鏡、慣于數(shù)據(jù)據(jù)庫思維方式式的人開發(fā)出出無效解決方方案來實現(xiàn)的的。最后一項項關(guān)于如何使使IT更可控
9、控,尤其是組組織系統(tǒng)開發(fā)發(fā)以降低項目目復雜度和風風險。SOAA使這些成為為了可能同樣也是必必須的因為它讓讓更多的功能能交付成為基基礎(chǔ)架構(gòu)。簡化之理論在高空雜技表演演中,高效的的合作的基礎(chǔ)礎(chǔ)是每個空中中飛人演員完完全默契地配配合,對方會會及時地在每每個時點出現(xiàn)現(xiàn)。一些空中中飛人演員非非常自信,他他們經(jīng)常蒙著著眼進行表演演。他們能夠夠接到彼此正正因為他們確確定在某個特特定時刻對方方只可能出現(xiàn)現(xiàn)在一個可能能位置。成功應用SOAA以達到最大大化的協(xié)作性性與高空雜技技表演非常相相似。互操作作性要求關(guān)于于如何進行交交流的解決方方案從數(shù)以百百萬計減少到到只有一個,交交互雙方都可可以依賴該方方案。這并不不意味
10、著其他他方案有問題題:這好比我我們既可以靠靠左行駛也可可以靠右行駛駛,但重要的的是我們必須須都靠同一邊邊行駛。當只有一方執(zhí)行行服務,一方方接受服務時時,只要雙方方協(xié)議好,具具體使用哪種種方案其實并并沒有太大區(qū)區(qū)別。雙方中中任一方的特特異性可以決決定最終方案案,無需做更更多的溝通努努力。畢竟,無無論使用哪種種方案,這些些特異性總要要被處理。但但是如果是多多方請求服務務或者多方執(zhí)執(zhí)行服務,那那將呈現(xiàn)不一一樣的情景。此此時使通信方方案精簡非常常重要,如此此,各方必須須處理各自的的特異性,無無需面對另一一方。將信息通信與外外科移植手術(shù)術(shù)對比很能說說明問題。成成功的移植手手術(shù),要將一一個人身上的的器官移
11、植到到另一個人身身上,要求該該移植器官必必須在多方面面與接收者匹匹配,而其中中大部分匹配配因素與該器器官的生物功功能無關(guān)。換換句話說,被被移植的器官官必須和接受受者本身有相相同的特征。因因此,我們的的器官不能像像拼搭樂高積積木一樣隨便便被移植。目目前的信息通通信恰恰如此此。當一個信信息系統(tǒng)為另另一個系統(tǒng)提提供服務時,它它們必須在很很多方面達成成一致。它們們必須使用相相同的詞匯(元數(shù)據(jù))、相相同的由一方方調(diào)用而另一一方執(zhí)行的功功能集、對于于每個功能請請求應答數(shù)據(jù)據(jù)內(nèi)容的相同同期望、相同同的編碼系統(tǒng)統(tǒng)、相同的技技術(shù)通訊協(xié)議議、相同的用用于信息傳遞遞的尋址模式式、兼容的可可預期的響應應速率、兼容容的
12、確保消息息不被丟失的的技術(shù)、兼容容的認證機制制以確保雙方方安全通信而而不是與冒名名者通信、兼兼容的加密技技術(shù)以及密鑰鑰管理以確保保消息不被竊竊聽或者篡改改等等。為了了促進互操作作性,必須確確保參與各方方從彼此獨立立制定各自標標準變?yōu)樾纬沙杉嫒莸臉藴蕼室?guī)范。只有有當一些非常常嚴謹?shù)囊?guī)則則得到遵守時時這才有實現(xiàn)現(xiàn)的可能,接接口才能減至至精要。如此此一來特異性性將無容身之之地。嚴謹?shù)囊?guī)則都關(guān)關(guān)注于如何使使得服務接口口更為簡單。我我們規(guī)定的越越少,爭議的的余地就越小小。1.不了解你不不需要了解的的你不需要去了解解的東西不會會傷害到你SOA范式的本本質(zhì)在于使得得合作各方或或系統(tǒng)之間達達成最少限度度的協(xié)議
13、卻可可以實現(xiàn)最大大程度的合作作。這是一種種巨大的優(yōu)勢勢,因為任何何你不需要了了解的東西既既不需要被測測試也不需要要被維護。你你不需要去了了解的東西不不會傷害到你你。假設(shè)400%的系統(tǒng)開開發(fā)成本用于于測試上,而而高達80%的信息系統(tǒng)統(tǒng)生命周期的的成本被花費費到了系統(tǒng)維維護階段,任任何SOA范范式讓你無需需了解的東西西都代表了你你能節(jié)省的金金錢。元數(shù)據(jù)你最不需要了解解的就是結(jié)構(gòu)構(gòu)、含義以及及容許值這些元數(shù)據(jù)據(jù)不會被系系統(tǒng)中篩選、排排序或執(zhí)行計計算的邏輯使使用的數(shù)據(jù)。你你并不需要去去了解這些,因因為SOA技技術(shù)使得數(shù)據(jù)據(jù)和元數(shù)據(jù)同同時出現(xiàn)。你你的系統(tǒng)可以以實時解讀元元數(shù)據(jù),所以以如果你要做做的僅僅是
14、獲獲取、呈現(xiàn)或或傳送相應的的數(shù)據(jù),你完完全不需要為為系統(tǒng)構(gòu)建元元數(shù)據(jù)知識。在在有相當精密密的表示(ppresenntatioon)功能的的幫助下,它它甚至可以為為用戶實現(xiàn)各各種各樣特定定的篩選及計計算,且只使使用與已有數(shù)數(shù)據(jù)同時提供供的元數(shù)據(jù),而而不是內(nèi)部構(gòu)構(gòu)建元數(shù)據(jù)。通過解讀數(shù)據(jù)相相應的元數(shù)據(jù)據(jù),而不是把把元數(shù)據(jù)構(gòu)建建到系統(tǒng)中,你你的系統(tǒng)不需需要隨元數(shù)據(jù)據(jù)的改變而改改變。需要改改變的僅僅是是源系統(tǒng)。想想想如果遵守守該守則,你你能在開發(fā)、測測試和維護上上節(jié)省多少金金錢!記住,在在兩個系統(tǒng)上上做更改,平平均來說,其其復雜度是在在單個系統(tǒng)做做更改的四倍倍,因為其中中包含了所有有各方的協(xié)作作。對于很
15、多面對客客戶的系統(tǒng)來來說,表示以以及特定篩選選功能基本是是其主要的功功能。這些系系統(tǒng)只針對最最基本的客戶戶數(shù)據(jù)要求內(nèi)內(nèi)部構(gòu)建元數(shù)數(shù)據(jù)。這并不不包括當前或或過去的訂單單、客戶通訊訊錄、照片、信信函以及任何何可用于展示示的其他數(shù)據(jù)據(jù),所有這些些數(shù)據(jù)都可以以用一種不需需要這些數(shù)據(jù)據(jù)本質(zhì)相關(guān)知知識的方式進進行表示,內(nèi)內(nèi)建于系統(tǒng)中中。技術(shù)許多你不需要了了解的事情是是與技術(shù)相關(guān)關(guān)的。有了SSOA,你不不需要了解你你正在接口的的系統(tǒng)是否采采用“軟件即服務務”(Softtware-as-asservicce),不需需要了解實施施該系統(tǒng)的計計算機安放在在何處,是哪哪種類型的計計算機或者運運行于何種操操作系統(tǒng),防
16、防火墻是如何何配置,使用用的是哪種數(shù)數(shù)據(jù)庫管理系系統(tǒng),亦或可可以使用哪種種交易管理系系統(tǒng)。其他你你不需要了解解的事情是與與你所通信的的系統(tǒng)內(nèi)部相相關(guān)的。尤其其是,你不需需要去了解任任何用于內(nèi)部部數(shù)據(jù)存儲的的元數(shù)據(jù),因因為任何其他他系統(tǒng)需要同同XSD一致致的轉(zhuǎn)換都是是其自身的問問題,而不是是你的。即便如此,使用用SOA進行行通信的各方方必須達成一一致的技術(shù)相相關(guān)的標準還還有很多選擇擇。特別是有有很多與Weeb服務相關(guān)關(guān)的那些標準準,SOA從從業(yè)者將其統(tǒng)統(tǒng)稱為WS-*標準(*指可以使用用很多可能的的標簽替換)。在一定程程度上,這些些標準提出得得很恰當,因因為SOA社社區(qū)并沒有滿滿足于不去了了解它不
17、需要要了解的東西西;本文這個個白皮書給出出了一些指導導以期降低由由這些標準引引起的問題的的影響。遵守守這些指導,SSOA需要的的先期協(xié)議將將比其他方法法要少得多。設(shè)計穩(wěn)定的接口口如果想獲取SOOA提供的種種種好處,不不去了解你不不需要了解的的東西會成為為你的習慣。請請銘記這點!比如說,當當設(shè)計一個訂訂貨服務時,請請記住服務請請求者只需要要知道,當他他需要貨物的的時候該貨物物是否會有貨貨,而不需要要去了解當前前的庫存量。如如果你的程序序調(diào)用某一安安全服務以判判斷請求活動動是否被授權(quán)權(quán),不要在系系統(tǒng)內(nèi)構(gòu)建任任何超過其所所需服務工作作的知識。例例如,如果安安全服務需要要使用輸入到到程序的安全全證書,
18、唯一一必須做的就就是傳遞該證證書!對你來來說,它們只只是被封裝在在輸入消息中中的單個數(shù)據(jù)據(jù)項。該證書書是否是格式式完整的XMML也不要去去驗證。如果果,由于某些些只有那些負負責安全的小小鬼知道的原原因,他們選選擇了違背標標準的SOAA操作或?qū)ψC證書進行了加加密,那么這這是他們的問問題,不是你你的。如果他他們改變了任任何與證書相相關(guān)的東西,你你的程序不應應該為此做任任何改變或調(diào)調(diào)整。任何你你不需要了解解的東西不會會傷害到你。當當然了,除非非你硬要去了了解它,在這這種情況下如如果你們不想想在SOA上上浪費時間的的話,其他人人可能最好離離遠點兒。不去了解那些你你不需要了解解的東西可能能比你想象的的要
19、難。如果果你開發(fā)專門門用于與你通通信的信息系系統(tǒng)的信息檢檢索服務,你你的思路已經(jīng)經(jīng)不對了,因因為你已經(jīng)把把其他系統(tǒng)的的知識歸并到到系統(tǒng)中了。需需求中的任何何更改將會迫迫使雙方系統(tǒng)統(tǒng)都作出更改改。通常來講講,比較好的的方式是采用用數(shù)量有限的的檢索服務暴暴露系統(tǒng)數(shù)據(jù)據(jù),當檢索服服務結(jié)合在一一起使用時,它它們涵蓋了所所有相關(guān)服務務的信息檢索索需求。例如如,某個產(chǎn)品品數(shù)據(jù)庫可能能通過好幾個個服務分別暴暴露出去:一一個簡單的僅僅包含編碼、描描述、部門以以及產(chǎn)品定價價的服務、一一個暴露出所所有該產(chǎn)品財財務方面信息息的服務,以以及一個暴露露出所有該產(chǎn)產(chǎn)品物流方面面信息的服務務。許多系統(tǒng)統(tǒng)僅需簡單服服務即可得
20、到到滿足,大部部分只需要部部分數(shù)據(jù)而非非全部,或財財務或物流的的服務,而有有一些兩者都都需要,但此此外沒有任何何一個需要特特別接口的系系統(tǒng)。這種工工作方式被稱稱為麥當勞方方式:客戶從從標準產(chǎn)品中中搭配出自己己需要的產(chǎn)品品。支持這種種方式并不困困難,因為不不管怎樣你都都需要這些服服務去支持面面向客戶的程程序。你甚至至可以用這種種方式來支持持非常特別的的信息需求,因因為那些不需需要的數(shù)據(jù)可可以在消費前前就過濾掉。如如果不想在巨巨無霸漢堡中中放小黃瓜,扔扔掉它就可以以了!這種方方式的基本思思路是提供過過多的信息要要比提供過少少的信息遇到到的問題少,因因為接收方系系統(tǒng)可以很容容易通過程序序過濾掉不需需
21、要的信息,但但是如果缺少少信息那就麻麻煩了。不去了解你不需需要了解的東東西也會使得得為支持業(yè)務務流程所需的的信息交互大大大簡化。在在SOA的范范式中,當你你請求另一個個代理為你做做一些事,那那就是你所需需要做的全部部。你不需要要為代理提供供可能有助于于完成任務的的或者是其必必需的額外信信息。在點菜菜時,確保有有用于這道菜菜的原料是廚廚師的職責。你你說出想要的的東西,然后后就可以靜候候佳音了。反反過來,代理理會使用信息息檢索服務來來向你咨詢所所有信息,但但是檢索什么么、何時檢索索以及從何檢檢索,這些問問題都應該由由他來決定,你你無須去了解解,更不用將將該知識歸并并至你的系統(tǒng)統(tǒng)中。這樣,在在他那一
22、端的的更改幾乎不不需要你這邊邊作出更改。比比如說,如果果他決定停止止維護對你數(shù)數(shù)據(jù)的拷貝,你你什么更改都都不需要做。當然,不去了解解你不需要了了解的事情確確實會導致效效率低下。原原本只需要一一次交換即可可實現(xiàn)的操作作現(xiàn)在將需要要多個步驟。麥麥當勞方式常常常會導致原原本一個服務務即可滿足卻卻提供了多個個服務的情況況,另一邊卻卻還在檢索信信息,而這些些信息又常常常是冗余而非非十分必要??偪倳霈F(xiàn)一些些情形,可以以通過好的商商業(yè)意識來優(yōu)優(yōu)化這些通信信模式。也會會有很多場合合你會想要優(yōu)優(yōu)化用戶接口口,那也只是是因為當前的的表示設(shè)備并并不擅長提供供給用戶吸引引人的界面。但但是在你優(yōu)化化之前,請考考慮你會
23、失去去什么樣的靈靈活性。另外外絕不要想去去優(yōu)化那些尚尚未穩(wěn)定的功功能需求。2.不要了解你你還不能了解解的事情為時過早的規(guī)范范凍結(jié)數(shù)據(jù)庫范式中,一一個真正的難難題在于:它它要求在你還還未足夠了解解并有能力去去確定數(shù)據(jù)的的具體結(jié)構(gòu)前前,就去做這這件事。因為為它們忽視了了一個生活中中簡單的事實實:只有當用用戶看到他們們不想看到的的東西時,他他們才知道其其真正想要的的是什么。其工作原理是這這樣:一旦完完成了數(shù)據(jù)結(jié)結(jié)構(gòu)的設(shè)計,任任何后續(xù)修改改都會引起雜雜亂的數(shù)據(jù)庫庫轉(zhuǎn)換,除此此之外每個訪訪問該數(shù)據(jù)庫庫的系統(tǒng)也會會改變。所有有這些改變必必須都協(xié)調(diào)好好,當所有對對數(shù)據(jù)庫的操操作都限制在在單個系統(tǒng)時時候,這種
24、協(xié)協(xié)調(diào)是很困難難的,但如果果有多個系統(tǒng)統(tǒng)都在操作,那那就更難了,尤尤其是:如果果其中有些系系統(tǒng)被不受你你控制的參與與方管理的時時候。事實上上,在系統(tǒng)開開發(fā)階段做這這些更改就已已經(jīng)很成問題題了。其后果果是,數(shù)據(jù)庫庫設(shè)計早在系系統(tǒng)開發(fā)階段段就被凍結(jié),然然后數(shù)據(jù)分析析師們再去竭竭力修正這些些設(shè)計?,F(xiàn)在的問題是數(shù)數(shù)據(jù)分析師們們面臨著不可可能完成的工工作。他們必必須在用戶理理解這個設(shè)計計(且不說贊贊賞這個設(shè)計計實際應用如如何)前就確確定該設(shè)計。只只有在過了很很久之后系統(tǒng)已經(jīng)構(gòu)構(gòu)建好之后用戶才能能對該系統(tǒng)有有所體會并對對其是否滿足足自己的需求求作出評估。如如果此時發(fā)現(xiàn)現(xiàn)數(shù)據(jù)結(jié)構(gòu)上上有任何大問問題,要想修修
25、復就太晚了了。SOA原型法你可能會問:“SOA是怎怎么個不同尋尋常呢?”說到底,難難道SOA不不像數(shù)據(jù)庫范范式那樣一樣樣需要結(jié)構(gòu)化化數(shù)據(jù)嗎?這這個問題的簡簡單答案:不不管請求數(shù)據(jù)據(jù)時,被人工工代理處理還還是被自動化化系統(tǒng)處理,SSOA都是管管用的,并且且就算數(shù)據(jù)沒沒有被最優(yōu)結(jié)結(jié)構(gòu)化,人們們還是可以解解讀它。比如如說,用戶可可以判斷信件件是否正在被被發(fā)送至另一一個國家,無無論信件的地地址是用行一一、行二、行行三和行四來來表示的,而而信息系統(tǒng)需需要至少“國家”來作為數(shù)據(jù)據(jù)結(jié)構(gòu)可識別別的一部分。仔細回答這個問問題就包括了了對SOA原原型法的討論論,這種討論論包括以下幾幾方面:識別將被構(gòu)建到到系統(tǒng)中的
26、元元數(shù)據(jù)。把它它放在主命名名空間中,用用傳統(tǒng)方式根根據(jù)其結(jié)構(gòu)把把數(shù)據(jù)存儲到到數(shù)據(jù)庫管理理系統(tǒng)(DBBMS)。例例如,用戶信信息,這個元元數(shù)據(jù)可能由由用戶ID和和用戶名構(gòu)成成。因為這個個元數(shù)據(jù)被構(gòu)構(gòu)建到系統(tǒng)中中,所以為了了使用這些字字段而把邏輯輯也構(gòu)建到系系統(tǒng)中是完全全有可能的,比比如通過用戶戶ID檢索記記錄并基于用用戶名排序和和篩選記錄。對每一條數(shù)據(jù)庫庫記錄,把不不包含在主命命名空間的所所有數(shù)據(jù)放到到一個單獨的的XML字符符串中,該字字符串作為一一個單獨的字字段添加到數(shù)數(shù)據(jù)庫記錄中中。對每個XXML字符串串,構(gòu)建一個個二級命名空空間,開發(fā)XXSD,同時時添加一個單單獨數(shù)據(jù)項到到主命名空間間。對
27、用戶記記錄的初步實實現(xiàn)來說,這這個字符串可可能包括地址址行一、行二二、行三和行行四的元數(shù)據(jù)據(jù)。用戶記錄錄本身的XSSD將會包括括三個字段的的元數(shù)據(jù):用用戶ID、用用戶名和以XXML字符串串包括的附加加的用戶相關(guān)關(guān)數(shù)據(jù)。附加加用戶數(shù)據(jù)的的XSD包括括每條地址行行的元數(shù)據(jù)。使用基于XSDD的邏輯來為為數(shù)據(jù)庫記錄錄的各相關(guān)層層次獲取及展展示所有數(shù)據(jù)據(jù),這可以通通過給每個XXML字符串串(包含對主主記錄的字符符串)增加一一個標準驗證證服務來實現(xiàn)現(xiàn)。如有可能能,利用某種種工具來產(chǎn)生生使用XSDD的接口而不不要自己去編編程。該工具具必須使用二二級XML字字符串所包含含的元數(shù)據(jù)來來將其解包,并并且必須同時時
28、使用主、次次兩級XSDD的邏輯來獲獲取新記錄。其其結(jié)果就是一一個可運行的的原型,用戶戶可用以評估估預期使用的的系統(tǒng)。要盡量適應和修修改基于XSSD的邏輯以以及驗證服務務直到用戶對對系統(tǒng)滿意為為止。就拿用用戶記錄來說說,一個新的的針對字符串串的XSD可可包括以下元元數(shù)據(jù):街道道地址、郵編編、縣市、以以及國家。使使用舊XSDD存儲的數(shù)據(jù)據(jù)仍會正確顯顯示,所以無無需立即將其其轉(zhuǎn)換。而使使用新XSDD將會獲取新新的記錄。一旦用戶和你確確信元數(shù)據(jù)已已經(jīng)穩(wěn)定了,那那么請考慮把把數(shù)據(jù)遷移到到傳統(tǒng)的數(shù)據(jù)據(jù)結(jié)構(gòu)和主命命名空間。當然,SOA原原型法并不總總是必要的。當當需求受限于于如此多的不不確定性時,請請使用原
29、型法法,這樣先做做原型然后再再將其穩(wěn)定比比較經(jīng)濟。但但是請記住這這個肯定要比比數(shù)據(jù)庫化原原型法要簡單單的多。在數(shù)數(shù)據(jù)庫化的時時代,原型法法只是可有可可無,但是在在SOA的時時代,它便是是家常便飯。不不要將設(shè)計細細節(jié)固定,除除非你確定它它們是正確的的;就是這么么簡單。3.除了要求的的不要多做產(chǎn)品驅(qū)動的服務務分解SOA主要的優(yōu)優(yōu)勢就是它是是一個能被轉(zhuǎn)轉(zhuǎn)化成技術(shù)的的業(yè)務概念,不不像數(shù)據(jù)庫世世界里那樣,技技術(shù)概念總想想試圖跟上業(yè)業(yè)務的步伐。在在SOA中,每每個服務必須須明確地增加加價值,不只只是在抽象意意義層面上,而而更具體地要要針對那些調(diào)調(diào)用方而言。發(fā)發(fā)生的一切之之所以這樣發(fā)發(fā)生了,是因因為服務請求
30、求者要求其如如此。通過不不實現(xiàn)任何服服務請求者沒沒有明確要求求的東西,服服務可以被限限定在它們的的核心功能上上。如果SOOA中所有的的參與者都積積極這樣去做做,那么將會會使互操作性性大大增加。SOA中最高層層次的服務是是業(yè)務交易:某個客戶下下了一個貨物物或服務的訂訂單除非訂單單被供應商拒拒絕否則這就就開始了一個個訂單交付。在在SOA范式式中,任何從從接受訂單到到訂單交付之之間所發(fā)生的的都可以也應應該以服務的的形式實現(xiàn)。為為實現(xiàn)訂單交交付而要求的的每個中間產(chǎn)產(chǎn)品或狀態(tài),供供應商會要求求某些人或某某些組織機構(gòu)構(gòu)不一定是是供應商內(nèi)部部的組織來執(zhí)行交付付。然后這些些中間服務自自身又可以分分解成多個服服
31、務,一直到到增加價值的的基本組織層層面。層次服務分解是是SOA范式式中非常重要要的一部分,因因為它使服務務交付通過服服務水平協(xié)議議的方式管理理。它可以確確保每個服務務都有專人負負責,并且服服務消費者們們知道他們會會得到什么。通用的中間產(chǎn)品品和通用的服服務服務分解都是關(guān)關(guān)于產(chǎn)品的。只只有當組成服服務的那些子子服務不能立立即執(zhí)行時流流程才會出現(xiàn)現(xiàn)。例如,如如果決定是否否接受客戶訂訂單的服務要要求:先執(zhí)行行判斷訂單價價值的子服務務,再執(zhí)行確確定客戶信用用狀態(tài)的子服服務,那么實實現(xiàn)該服務就就包含了一個個流程。每個個這樣的流程程只與一個服服務相關(guān)。如如果你發(fā)現(xiàn)有有個流程不僅僅限于單個這這樣的服務,那那么
32、你很有可可能是忘了把把客戶的初始始需求建模為為服務了。有可能出現(xiàn)這樣樣的情況,相相同的中間產(chǎn)產(chǎn)品當然還有有相同的服務務可能會被被不同的高級級別產(chǎn)品需要要。比如,那那些要求明顯顯區(qū)分交付過過程的商品,在在中間產(chǎn)品的的環(huán)節(jié),其中中的差別一般般來說幾乎微微乎其微,中中間產(chǎn)品其實實也是由客戶戶來支付為了從客戶戶那里賺取利利潤,我們需需要金額、日日期以及讓我我們可以冠冕冕堂皇地向客客戶要求支付付的條款,實實際是什么則則并不用去理理會。在這種種情況下,正正常的基準是是如果存在通通用的中間產(chǎn)產(chǎn)品,那么它它應該由單個個服務來實現(xiàn)現(xiàn),而這個服服務能夠被多多個高級別的的服務調(diào)用。這種服務只有結(jié)結(jié)果是重要的的不是開
33、始始因為收集集對交付服務務有用的信息息是服務本身身的一部分,而而不是請求服服務源頭的一一部分。需要要注意的是:是否需要單單個服務是由由業(yè)務決定的的,和信息技技術(shù)沒有任何何關(guān)系。如果果不管是現(xiàn)在在還是相關(guān)的的未來,交付付相同的中間間產(chǎn)品都是切切實有用的,那那么就應該有有單個服務。除除非在現(xiàn)在或或相關(guān)的未來來有商業(yè)力量量發(fā)揮作用使使中間產(chǎn)品發(fā)發(fā)生結(jié)構(gòu)性分分化,那我們們最好不要為為每組需求分分別提供相應應服務。然而而事實偏偏相相反。在SOOA,事物是是由相同走向向不同,而在在數(shù)據(jù)庫化的的方法中,事事物則是由不不同走向相同同。帶有多種行為的的通用服務你可能會問,如如果需要兩種種完全不同的的行為而你只只
34、為其提供一一種服務,這這樣做的意義義何在呢?難難道我們還在在被同樣困擾擾數(shù)據(jù)庫世界界的“一刀切”做法限制?比如,如果果我們出售兩兩種類型的產(chǎn)產(chǎn)品,其中一一種使用固定定價格而另一一種則根據(jù)某某些復雜的公公式計算出變變動價格,為為什么不用兩兩種結(jié)算服務務,為每種特特定的產(chǎn)品各各訂制一種呢呢?這些問題很好,但但問錯了地方方。它們是好好問題,那是是因為任何不不能充分應對對發(fā)生在問題題域內(nèi)變化的的設(shè)計方法注注定會失敗。但但是它們問在在了錯誤的地地方,這是因因為根據(jù)問題題域中的變化化來調(diào)整方案案的靈活性應應該構(gòu)建到服服務中,而不不是圍繞著服服務來構(gòu)建。就就拿結(jié)算服務務來說,每次次調(diào)用一種方方法時,它應應該
35、決定這兩兩種算法應該該使用哪一種種。那樣的話話,如果引入入第三種結(jié)算算算法,那么么只有結(jié)算服服務需要去做做調(diào)整。請注注意這并不意意味著結(jié)算服服務必須被設(shè)設(shè)計成某種“萬能”機器;它同同樣可以很好好地為每個算算法分別調(diào)用用相應的子服服務。這種選選擇介于多功功能解決方案案和包含不同同組件的框架架之間是一種可可以根據(jù)服務務來決定的選選擇,因為它它不需要被服服務請求者知知道。在SOOA中,這種種選擇更常見見,但目前的的做法則常常常導致產(chǎn)生框框架解決方案案,因為需要要多功能方案案的感覺在很很大程度上是是由于不能從從那些需要執(zhí)執(zhí)行的信息里里識別出服務務請求造成的的。這種需要要高素質(zhì)專家家來實現(xiàn)的帶帶有如此多
36、參參數(shù)的以一應應十的多功能能方案的日子子不會長久了了。堅持要點流程驅(qū)動方法也也可以使我們們分清我們是是代表服務請請求者做事還還是為自己做做事。以服務務請求者身份份做的事應該該作為服務的的一部分來執(zhí)執(zhí)行,而其余余的就不應該該了。通過這這種區(qū)分,我我們可以讓服服務盡可能簡簡單,這樣可可以在不需要要改變各式各各樣其他東西西的情況下替替換掉該服務務。舉例來說說,我們會生生產(chǎn)產(chǎn)品來滿滿足外部服務務請求,但是是維護簿記系系統(tǒng)是為了滿滿足我們自己己的需求,而而不是請求者者的。如果要要開發(fā)一項服服務將客戶訂訂單轉(zhuǎn)變成制制造活動及賬賬目簿記,那那么只要我們們實現(xiàn)一個新新的簿記系統(tǒng)統(tǒng),我們就要要去修改一次次這個服
37、務。這這聽起來似乎乎還不是太糟糟糕,但試想想一下所有事事情都是為我我們自己而做做,那就太糟糟糕了。包含含最新數(shù)據(jù)的的數(shù)據(jù)倉庫的的簿記、日志志、儲存、員員工績效數(shù)據(jù)據(jù)的維護:所所有這些及其其他事情一般般都由系統(tǒng)完完成,這些系系統(tǒng)隨組織機機構(gòu)和時間的的不同而不同同,因此在業(yè)業(yè)務服務中包包含這些知識識會降低互操操作性,增加加了用其他系系統(tǒng)來實現(xiàn)服服務替換的難難度。我們可可以通過產(chǎn)生生通知的方式式來避免此類類問題,即:如果對這些些功能很重要要的事情發(fā)生生了,就發(fā)出出通知,然后后它們可以使使用通用服務務檢索處理事事件所需的信信息。另一類不應作為為服務一部分分執(zhí)行的業(yè)務務活動包括那那些一旦服務務請求被撤銷
38、銷就無法逆轉(zhuǎn)轉(zhuǎn)的活動。通通常來說,這這類活動包括括諸如因客戶戶訂貨導致庫庫存量低于補補貨水平從而而需要訂購補補給、注冊新新用戶以及更更新現(xiàn)有用戶戶信息。這些些活動是整個個流程中的各各個步驟,應應使用單獨的的服務一一執(zhí)執(zhí)行。當然,這種思維維方式可以與與數(shù)據(jù)庫范式式緊密結(jié)合。但但并不是其所所特有的,因因為它與SOOA有關(guān)。結(jié)結(jié)果是,許多多SOA的實實現(xiàn)與數(shù)據(jù)庫庫化的思維方方式背道而馳馳,而正是這這種思維方式式激發(fā)了他們們以自下而上上的方式識別別服務,而非非SOA的自自上而下方式式。在自下而而上方式中,原原本一開始為為某個問題開開發(fā)的服務也也可以為其他他問題復用,這這多虧了設(shè)計計它的人對于于如何更廣
39、泛泛地應用做了了認真的思考考。SOA中中,在多個上上下文中使用用某個服務是是縝密設(shè)計的的結(jié)果,而不不是靠直覺,并并且從設(shè)計之之初就將所有有那些上下文文都考慮了進進來。說到復復用某一服務務來交付某一一通用的中間間產(chǎn)品就好比比說重復使用用前門進入房房子,不管那那扇門是通向向客廳、廚房房,還是衛(wèi)生生間。你能想想象廚房設(shè)計計師說:“真妙!那家家伙設(shè)計的室室外通向客廳廳的入口正好好可以被我用用來作為通向向廚房的室外外入口!”嗎?任何談談論“復用”(如復用支支付服務)的的人都還沒有有實現(xiàn)它。請請注意,這并并不是錯誤的的,只是有點點奇怪和沒有有什么啟發(fā)性性罷了。服務遵從業(yè)務采用SOA方式式思考問題的的一個結(jié)
40、果就就是SOA會會使得服務依依據(jù)其業(yè)務意意義而非機械械的實現(xiàn)來表表述。例如,名名為增加用戶戶記錄的服務務是數(shù)據(jù)庫化化的,而名為為注冊新用戶戶的服務就是是SOA的,即即便這兩個服服務做的事情情完全一樣。我我們對服務的的命名十分重重要,因為它它告訴我們是是誰在請求該該服務,以及及為什么他要要請求這項服服務。在這個個特定的例子子中,SOAA自上而下的的方法會得到到一個結(jié)論,那那就是業(yè)務流流程需要一個個有效的用戶戶注冊服務,該該服務通過修修改現(xiàn)存的注注冊服務(如如果有的話)來完成,而而不是重新自自動創(chuàng)建一個個新的。在SSOA中,這這是用戶注冊冊服務的責任任,而數(shù)據(jù)庫庫化的方法卻卻會把這個責責任推到服務
41、務請求者身上上。類似地,SSOA注冊用用戶服務自身身會決定用戶戶ID是什么么,而數(shù)據(jù)庫庫化的服務可可能就會干脆脆讓服務請求求者做這個決決定。匯聚到單個方案案總的看來,SOOA由上至下下的思維方式式使得很多設(shè)設(shè)計決策只存存在一個選項項,而數(shù)據(jù)庫庫化的思考者者會把該選項項僅僅看作眾眾多可選方案案之一。這是是SOA很重重要的一個優(yōu)優(yōu)勢,考慮到到SOA是以以互操作性為為導向的,而而互操作性要要求我們行車車時都在同一一邊行駛而不不用去和我們們碰到的每輛輛車去交涉。那那些忽視這點點的人比如通過主主張Web服服務只是眾多多實現(xiàn)跨系統(tǒng)統(tǒng)邊界SOAA的一種方式式能夠一直成成功的機會和和那些只考慮慮下一步的棋棋手
42、差不多。誠誠然,總是有有比Web服服務更簡單的的方法去連接接兩個系統(tǒng),但但是為了讓呼呼叫中心或輸輸出管理設(shè)施施能使用相同同數(shù)據(jù)你會怎怎么做?為了了確保數(shù)據(jù)倉倉庫能夠在你你把事件從一一個系統(tǒng)轉(zhuǎn)換換到另一個系系統(tǒng)時得到通通知,或者事事件一發(fā)生便便能及時通知知你的客戶,你你又會怎么做做呢?在SOOA的世界里里,數(shù)據(jù)和事事件必須在多多個系統(tǒng)中可可用,而Weeb服務是能能夠確保在低低投資和低維維護成本的前前提下達到這這一效果的最最有效的方法法。存在這一明顯差差異的一個領(lǐng)領(lǐng)域就是電子子數(shù)據(jù)交換(EDI)。傳傳統(tǒng)的電子數(shù)數(shù)據(jù)交換(EEDI)技術(shù)術(shù)旨在確定組組織之間通信信可能需要的的信息,并為為該信息定義義詞
43、匯。那和和定義某一特特定的信息交交互不是一回回事。比如,你你可以使用相相同的EDII報文來下訂訂單、查詢其其進展以及修修改它。兩個個組織想通過過這些規(guī)范進進行通信必須須坐下來一起起就這一詞匯匯的使用方式式達成一致。SSOA分離了了這些關(guān)注點點:詞匯由命命名空間來處處理,而這些些命名空間可可能會被多個個服務使用,每每個服務有各各自特定的目目的?!癝OA由上至至下方式導致致更具體的結(jié)結(jié)論”的另一領(lǐng)域域是這樣一個個問題:是什什么筑起了一一個編排過的的流程邊界。通通常,這個問問題會引起無無休止的爭論論。比如,采采用輸出管理理服務給客戶戶發(fā)送確認信信息是否應被被編排為用戶戶流程的一部部分,如果是是的話,
44、它應應該采用即發(fā)發(fā)即棄(fiire-annd-forrget)的的方式處理還還是應該由輸輸出管理服務務來報告動作作成功完成?按SOA的的話講,所有有這些東西都都是用戶意圖圖的一部分,因因此都應該被被編排的。其其他一些行為為,比如考慮慮到新用戶訂訂單的更新數(shù)數(shù)據(jù)倉庫或者者更新總分類類,很顯然都都不是用戶意意圖的一部分分,不應該包包含在流程編編排中,哪怕怕它們是同一一方執(zhí)行的。4.不要自己做做瑣事通用功能業(yè)務服務應該只只包含特定于于該服務的那那些功能邏輯輯。它應該把把其他功能都都委托出去。那那樣的話,服服務自身就可可以盡可能簡簡單。這使得得設(shè)計、測試試以及替換服服務,如有必必要的話,更更容易。這是
45、是個基本的數(shù)數(shù)學知識:新新軟件模塊需需要匹配的因因素越多,那那么同價位下下的成品軟件件(COTSS)的共性越越少,而且若若恰好有個方方案可用時它它也會更貴。如如果可以將這這些非特定功功能委托給標標準服務,那那么就可以降降低需要匹配配的因素個數(shù)數(shù)。服務可以代勞的的首要任務是是瑣事:都是是些“家務事”而非真正業(yè)業(yè)務相關(guān)的功功能。這些瑣瑣事天生就是是普遍的,換換句話說完成成這些瑣事的的方式并不是是為支持業(yè)務務上下文的服服務量身定制制的。通用用戶接口當你得知信息系系統(tǒng)最不應該該做的一大瑣瑣事就是管理理用戶體驗時時你可能會覺覺得驚訝。這這是一個通用用的功能,應應該盡可能的的采用標準工工具來處理。用用戶體
46、驗包括括用戶可以選選擇要執(zhí)行工工作項的工作作列表,工作作項執(zhí)行的工工具比如通過過啟動一個用用戶界面(如如果有的話)來關(guān)閉已完完成的工作項項。它包含了了用戶有可能能執(zhí)行的交易易甄選,輸入入信息屏幕的的表示一般是從從XSD生成成以及使用用和交易相對對應的標準驗驗證服務進行行驗證。它包包括了保持當當前用戶上下下文環(huán)境,這這樣他就無需需再次輸入當當前的客戶、產(chǎn)產(chǎn)品、項目、流流程實例或者者其他任何東東西,而是可可以使用這些些默認值或者者在必要時候候重寫它們。它它包括了和當當前用戶上下下文環(huán)境相關(guān)關(guān)的所有文檔檔的介紹。它它包含了用戶戶可能需要作作出響應的提提示對話框。所有這些東西都都可以使用無無需包含任何
47、何業(yè)務知識的的工具實現(xiàn)??偪偟膩碚f,給給用戶提供一一個統(tǒng)一、包包含所有東西西的環(huán)境遠比比為某個特定定行為而優(yōu)化化的用戶界面面要好。如果果有業(yè)務案例例違背了這一一原則,請至至少記住這點點:在穩(wěn)定用用戶界之前,不不要去優(yōu)化它它。典型通用功能其他的瑣事還包包括,但并不不僅限于以下下幾個方面:安全:建立服務務請求者身份份和訪問權(quán)限限。通知:確認某一一業(yè)務事件應應通知哪些人人。這包括了了維護基于此此的事件訂閱閱。輸出管理:在線線下進行信息息通信,而不不是作為一種種服務響應。典典型例子就是是當客戶請求求必須被正式式確認時,比比如使用電子子郵件來確認認你剛剛通過過瀏覽器所做做的網(wǎng)上采購購。對那些主主動提供的
48、消消息也是需要要的,比如每每月的賬單。輸輸出管理必須須決定通過哪哪條渠道去發(fā)發(fā)送信息,以以及使用哪個個地址來發(fā)送送。它應該把把消息轉(zhuǎn)換成成接收方能夠夠接收的格式式,發(fā)送消息息,并把消息息添加到歸檔檔文檔。輸出出管理包括維維護那些被用用來將數(shù)據(jù)轉(zhuǎn)轉(zhuǎn)換成用戶可可理解消息的的模板,以及及潛在接收者者的地址和渠渠道偏好。數(shù)據(jù)轉(zhuǎn)換:把數(shù)數(shù)據(jù)從一種格格式轉(zhuǎn)換為另另一個,把獨獨立的各個服服務打包為一一個服務用麥當勞的的說法,開心心樂園餐以及分解拆拆包,將服務務請求拆分成成適用于不同同人群的各個個獨立請求,匯匯集各個回應應,排隊及出出列,或協(xié)議議轉(zhuǎn)換。流程編排:編排排某一流程,以以確保按適當當順序且僅相相關(guān)時
49、來執(zhí)行行那些組成流流程的服務,確確??煲馄谄跁r發(fā)送告警警信息,以及及確保因輔助助信息或者逾逾期打斷從而而引起的新流流程分支被啟啟用。歸檔管理:維護護及訪問相關(guān)關(guān)的歸檔信息息。這些可能能是虛擬的檔檔案,從某種種意義上是展展現(xiàn)給用戶的的信息,當他他需要某個檔檔案時可以使使用查詢來檢檢索。對那些些從數(shù)據(jù)庫中中抽取的內(nèi)容容,這被認為為是正常的,但但是沒有特殊殊理由不對文文檔使用相同同的方法。在在某些情況下下應使用設(shè)備備來特別增加加指派文檔至至檔案中。記錄管理:維護護那些不允許許被更改的信信息。至下而上敘述這些實現(xiàn)瑣事的的服務不能形形成業(yè)務服務務層次的部分分。不能使用用自上而下的的方式去設(shè)計計它們,因
50、為為這些服務都都沒有所謂的的“上”。對這樣的的服務,使用用旨在實現(xiàn)最最大程度重用用的自下而上上的方法會更更適合。這使使得從這個階階段起就能夠夠?qū)崿F(xiàn)服務的的優(yōu)勝劣汰。采用數(shù)據(jù)庫化的的方法,很少少能夠?qū)嶋H把把次等通用功功能用更好的的替換,因為為這要求修改改所有使用該該方法的應用用。使用SOOA則不同,這這種替換很簡簡單,前提是是已經(jīng)應用了了“不去了解你你不需要了解解的事情”這條規(guī)則,包包括其推論:服務請求不不應該包含超超過指定該請請求必要信息息之外的其他他信息,而且且服務本身應應該在需要時時主動要求更更多信息。如如授權(quán)服務,該該服務由某應應用調(diào)用,旨旨在決定是否否允許某特定定用戶在某客客戶數(shù)據(jù)上執(zhí)
51、執(zhí)行某項功能能比如說:“我們的雇員員Donalld Jonnes是否被被授權(quán)可以訪訪問Acmee Widggets ccompanny公司相關(guān)關(guān)的財務數(shù)據(jù)據(jù)?”。服務的簡簡單版本可能能具備處理某某些特定情況況的能力,在在此特定情形形下可以通過過使用雇員功功能對應表來來回答這些問問題。稍微復復雜一點的版版本可能會識識別出Donnald JJones屬屬于某個或多多個組的成員員,除了個人人權(quán)限外還擁擁有該組的權(quán)權(quán)限。再更近近一步,授權(quán)權(quán)服務可能會會使用用戶證證書去區(qū)別雇雇員和客戶,并并允許客戶只只能夠訪問他他們自己的數(shù)數(shù)據(jù)。一個完完善的版本可可能會使用標標準化的服務務去調(diào)用業(yè)務務流程管理系系統(tǒng)或者
52、項目目管理系統(tǒng),詢詢問Donaald Joones是否否已經(jīng)被賦予予了任何我們們和Acmee Widggets交易易相關(guān)的職責責。更好的做做法是,授權(quán)權(quán)服務會記錄錄請求和應答答的日志,而而簡單的版本本不會這樣做做。組織可以以從一個服務務的版本切換換到另一個而而無需對調(diào)用用服務的應用用做任何改變變。也有可能設(shè)計出出根據(jù)操作必必需的條件自自動配置自己己的通用服務務。例如,授授權(quán)服務可以以檢查是否有有服務可以告告知它員工對對某些特定客客戶有職責,并并在該服務不不可用的情況況下決定只使使用個人還是是群組的訪問問權(quán)限。用這這種方式,服服務可以在很很多組織之間間復用。5.不要在測試試上自尋煩惱惱為什么SO
53、A更更容易測試對SOA缺點的的一種看法是是測試困難。這這種看法完全全不恰當,原原因有很多。首先,在SOAA中使用元數(shù)數(shù)據(jù)可以避免免錯誤被植入入到系統(tǒng)中??煽梢栽谠獢?shù)據(jù)據(jù)層次就對系系統(tǒng)進行驗證證,例如,保保證所有需要要處理的數(shù)據(jù)據(jù)在使用前就就被匯總并校校驗。在整個個業(yè)務流程范范圍內(nèi)都可以以實現(xiàn)這點。當當你可以驗證證設(shè)計的時候候就不要測試試整個系統(tǒng)。其次,幾乎所有有測試,包括括所有系統(tǒng)集集成測試,一一旦測試基準準被建立后都都可以自動完完成。但是,需需要一些前提提條件。表現(xiàn)現(xiàn)層和業(yè)務執(zhí)執(zhí)行層必須被被嚴格的區(qū)分分。好在這是是使用SOAA的一種很自自然的方式。對對所有輸入,都都應該存在相相應的XSDD。
54、使用該XXSD,可以以生成測試記記錄。同理,也也可以生成帶帶有預期輸出出結(jié)果的測試試記錄。在測測試過程中,不不能產(chǎn)生可以以證明系統(tǒng)運運行正常的任任何輸出地方方,必須在測測試腳本中添添加專門為此此生成的附加加輸出的查詢詢語句。當測測試開始運行行時,測試記記錄被一條條條輸入系統(tǒng),然然后輸出的結(jié)結(jié)果自動和期期望的結(jié)果進進行對比。這這會產(chǎn)生一個個異常列表,其其中每項都應應仔細考慮。測測試可以按需需進行。自然然,測試的結(jié)結(jié)果可能取決決于存積在數(shù)數(shù)據(jù)庫中的數(shù)數(shù)據(jù),所以這這點需要進行行彌補。而且且,系統(tǒng)不可可表現(xiàn)出時間間相關(guān)的行為為。系統(tǒng)必須須有能力響應應每隔一段時時間(它對自自動化測試序序列更適合)就產(chǎn)生
55、的事事件,而不是是花上一周時時間去等待某某個基于時間間的觸發(fā)器被被觸發(fā)。用戶戶界面的測試試應該單獨進進行,而且永永遠不在集成成測試中使用用。第三,SOA的的設(shè)計趨向于于產(chǎn)生更加健健壯的系統(tǒng):系統(tǒng)出錯的的機會更少。SSOA減少了了信息系統(tǒng)為為了協(xié)同工作作而需要達成成協(xié)議的因素素數(shù)量,這樣樣一來,導致致在某關(guān)鍵因因素上產(chǎn)生分分歧的設(shè)計錯錯誤的概率也也減少了。就就算真的出錯錯,也能夠在在造成損害之之前檢測到。使使用SOA,消消息在被處理理前會被驗證證,這樣可以以判斷消息是是否格式正確確、是否符合合相應的XSSD。可行性測試最后,作為數(shù)據(jù)據(jù)庫時代特有有的產(chǎn)物測試環(huán)境和和生產(chǎn)環(huán)境必必須嚴格區(qū)分分,從此不
56、再再需要了,而而且有時候這這也是不適合合的。這是很很有可能的,這這是因為我們們不再實際進進行系統(tǒng)測試試了,而是對對測試通路和和信息處理的的方式進行測測試。SOAA提供了三重重安全的、有有效區(qū)分測試試消息和生產(chǎn)產(chǎn)消息的方法法。除了被封封裝好的消息息,其他每個個消息自身和和相應的命名名空間都包含含版本號。而而且每個消息息都包含一個個標簽用以指指示它是用于于測試還是生生產(chǎn)。所需的的只是一個SSOA網(wǎng)關(guān),它它存在于防火火墻內(nèi)部,對對每條進入消消息進行如下下處理:校驗消息以確定定其是否與一一個已知XSSD的版本相相符(被封裝裝好的消息除除外)。使用我們對相應應XSD的副副本對消息進進行校驗,以以確定其是
57、否否有效。如果消息用于生生產(chǎn)的,就驗驗證消息版本本號是否被允允許用于生產(chǎn)產(chǎn)。只有這樣樣,消息才能能夠被傳遞到到生產(chǎn)系統(tǒng)。其其他所謂的“生產(chǎn)”消息都會被被拒絕。如果消息用于測測試,消息可可能會被傳遞遞到指定的測測試版系統(tǒng)。在在特殊情況下下,消息如果果只是用來做做數(shù)據(jù)檢索,那那也有可能被被傳遞到生產(chǎn)產(chǎn)系統(tǒng)。只有在消息被完完全測試過后后,生產(chǎn)版本本的注冊庫和和XSD才能能得以更新。這樣的處理方法法不僅僅只是是三重安全的的,而且使得得消息的路由由能以一種合合乎實際的方方式得到測試試。這也大大大降低了從測測試系統(tǒng)切換換到生產(chǎn)系統(tǒng)統(tǒng)時重新進行行配置的需求求。因為這種種重新配置天天生就是不可可測試的,常常常
58、成為錯誤誤的根源。發(fā)發(fā)布經(jīng)理只能能通過在半夜夜或者周末發(fā)發(fā)布新的版本本軟件來彌補補這類錯誤;這樣,就算算新版本出現(xiàn)現(xiàn)了任何錯誤誤,也可以在在有人發(fā)現(xiàn)錯錯誤之前恢復復到老版本。但但如果這樣的的變化影響到到了其他組織織那就沒有辦辦法這樣操作作了。SOAA發(fā)布管理要要簡單得多!我們對于SOAA測試的一般般認識是時候候該改變了。SSOA是能夠夠把測試需求求和設(shè)置測試試的工作減少少到最低的一一種方案。它它能使重要測測試更自動化化的完成,結(jié)結(jié)果也更好。完善之理論SOA使得信息息系統(tǒng)的開發(fā)發(fā)和部署能夠夠比使用數(shù)據(jù)據(jù)庫化的方法法支持更為豐豐富的用戶體體驗。這樣的的系統(tǒng)能夠涵涵蓋更多的信信息格式、更更廣的行為集
59、集合,其行為為上也可以達達到更高層次次的統(tǒng)一和一一致以及更加加可靠,不管管是從客戶還還是從組織內(nèi)內(nèi)關(guān)注合規(guī)的的人員的觀點點來衡量。然然而,要想獲獲得這些好處處需要我們跟跟已有的數(shù)據(jù)據(jù)庫方法實踐踐說再見。6.始終信守你你的諾言為什么數(shù)據(jù)庫不不能一直信守守諾言接收一個服務請請求的動作是是通過定義一一個承諾,即即向請求者承承諾服務請求求會被執(zhí)行,來來確定的。這這種執(zhí)行定義義了一個流程程,其至少包包含一個步驟驟,但通常是是多個步驟。數(shù)據(jù)庫化的思考考和流程不能能融洽相處。從從它們各自的的本質(zhì)來看,數(shù)數(shù)據(jù)庫就像是是一個個孤島島。而孤島會會促使偏狹地地思考問題:任何孤島之之外的東西都都不重要??煽梢酝ㄟ^數(shù)據(jù)
60、據(jù)庫中的事務務概念來形象象地解釋這個個問題:某個個工作單元把把數(shù)據(jù)庫從一一種一致性狀狀態(tài)轉(zhuǎn)移到另另一個。在一一些特殊的情情況下,該概概念可能會被被擴展到多個個數(shù)據(jù)庫,雖雖然可以通過過兩階段提交交技術(shù)來做,但但這也有局限限性。邏輯一一致性可能需需要貫穿整個個業(yè)務流程得得以維護,而而不只是恰好好在某個時刻刻;需要在信信息改變波及及的所有地方方去維護,其其中不僅包括括數(shù)據(jù)庫還有有流程管理系系統(tǒng)、信息以以及發(fā)送和接接受信息的人人工代理,而而這一切從數(shù)數(shù)據(jù)庫世界的的觀點看來是是完全陌生的的。SOA交易概念念對數(shù)據(jù)庫世界陌陌生的東西對對與SOA來來說卻是再自自然不過了。業(yè)業(yè)務交易實現(xiàn)它的一一般是一個流流程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)境暴露生物標志物與伴隨健康監(jiān)測
- 產(chǎn)品設(shè)計經(jīng)理面試題目與解答指南
- 特殊職業(yè)人群糖尿病口腔健康風險分析
- 特殊群體(殘障)患者的知情同意替代方案與隱私
- 中國平安保險產(chǎn)品經(jīng)理面試題及答案
- 花灑、淋浴頭項目可行性研究報告(總投資10000萬元)(49畝)
- 特殊人群健康促進資源共享策略
- 深度解析(2026)GBT 18491.5-2010信息技術(shù) 軟件測量 功能規(guī)模測量 第5部分:功能規(guī)模測量的功能域確定
- 鄉(xiāng)鎮(zhèn)助理醫(yī)師課件
- 物流管理崗倉儲與配送面試問題解析
- 2022室外排水設(shè)施設(shè)計與施工-鋼筋混凝土化糞池22S702
- 工程維保及售后服務方案
- GB/Z 43482-2023液壓傳動軟管和軟管總成收集流體樣本分析清潔度的方法
- 急性中毒的處理與搶救
- 淤泥消納施工方案
- 附表:醫(yī)療美容主診醫(yī)師申請表
- 跌落式熔斷器熔絲故障原因分析
- 2023年全市中職學校學生職業(yè)技能大賽
- 黑布林英語閱讀初一年級16《柳林風聲》譯文和答案
- 倉庫安全管理檢查表
- 嶺南版美術(shù)科五年級上冊期末素質(zhì)檢測試題附答案
評論
0/150
提交評論