面向服務(wù)的一般原則---摘自《SOA概念、技術(shù)與設(shè)計(jì)》第八章
在第
3章
中我們建立了不止一個(gè)
SOA
定義。也有不止一個(gè)掌控定義面向服務(wù)背后原則的標(biāo)準(zhǔn)體。同樣,對(duì)于面向服務(wù)的組成,也有許多源自公開(kāi)的
IT
組織、廠商及咨詢機(jī)構(gòu)觀點(diǎn)。
據(jù)稱面向服務(wù)的根源在于軟件工程理論所謂的“關(guān)注點(diǎn)分離”。這一理論基于這樣的觀念:將一個(gè)大的問(wèn)題分解為一系列單個(gè)關(guān)注點(diǎn)是有益的。這使得邏輯將需要解決的問(wèn)題分解成更小的、相關(guān)片段的集合。每一段邏輯處理一個(gè)特定的關(guān)注點(diǎn)。
這個(gè)理論已經(jīng)被不同的開(kāi)發(fā)平臺(tái)以不同的方式實(shí)現(xiàn)。例如,面向?qū)ο蟮木幊膛c基于組件的編程方法,通過(guò)使用對(duì)象、類和組件而實(shí)現(xiàn)了關(guān)注點(diǎn)分離。
面向服務(wù)能夠被視作以截然不同的方式來(lái)實(shí)現(xiàn)關(guān)注點(diǎn)分離。面向服務(wù)原則提供了一個(gè)支持此理論的方法,同時(shí)實(shí)現(xiàn)了一種基本范式,在此基礎(chǔ)上可構(gòu)建諸多當(dāng)代
SOA
特征。實(shí)際上,如果你再次研究這些特征,將會(huì)注意到數(shù)個(gè)(直接或間接)與關(guān)注點(diǎn)分離理論有聯(lián)系。
如前所述,沒(méi)有官方的面向服務(wù)原則。然而,卻有一些最常與面向服務(wù)關(guān)聯(lián)的原則。現(xiàn)將這些原則羅列如下,本節(jié)將做進(jìn)一步描述。
l
服務(wù)可復(fù)用
不管是否存在即時(shí)復(fù)用的機(jī)會(huì),服務(wù)被設(shè)計(jì)為支持潛在可復(fù)用。
l
服務(wù)共享一個(gè)正式契約
為了與服務(wù)交互,只需要共享描述每個(gè)服務(wù)信息交換術(shù)語(yǔ)定義的正式契約。
l
服務(wù)是松散耦合的
服務(wù)被設(shè)計(jì)為無(wú)需緊密的、跨服務(wù)的依賴而交互。
l
服務(wù)是底層邏輯的抽象
只有經(jīng)由服務(wù)契約所暴露的部分服務(wù)對(duì)于外部世界是可見(jiàn)的。契約之外所表達(dá)的底層邏輯是不可見(jiàn)的,且與服務(wù)請(qǐng)求者無(wú)關(guān)。
l
服務(wù)是可組合的
服務(wù)可能組合其他服務(wù)。這允許表示不同粒度的邏輯,并促進(jìn)復(fù)用及抽象層的創(chuàng)建。
l
服務(wù)是自治的
邏輯由服務(wù)所控制,并位于一個(gè)清晰的邊界內(nèi)。服務(wù)已經(jīng)在這個(gè)邊界內(nèi)被控制,并且不依賴于執(zhí)行其控制的其他服務(wù)。
l
服務(wù)是無(wú)狀態(tài)的
服務(wù)應(yīng)當(dāng)不需要管理狀態(tài)信息,因此能夠其維持松耦合性。服務(wù)應(yīng)當(dāng)盡可能設(shè)計(jì)成無(wú)狀態(tài)的,即便這意味著要將狀態(tài)管理移至別處。
l
服務(wù)是可發(fā)現(xiàn)的
服務(wù)應(yīng)當(dāng)允許其描述被發(fā)現(xiàn),并被人工和可能會(huì)利用其邏輯的服務(wù)請(qǐng)求者所理解。
在這八條原則中,自治性、松散耦合、抽象、以及需要正式契約被視為形成
SOA
根本基礎(chǔ)的核心原則。如同在本章后面面向服務(wù)原則內(nèi)部如何關(guān)聯(lián)一節(jié)所解釋,這四個(gè)原則直接支持其他原則(及其相互之間)的實(shí)現(xiàn)。
還有其他與服務(wù)和面向服務(wù)相關(guān)的一般品質(zhì)。示例包括自描述的和粗粒度的接口設(shè)計(jì)特征。我們更多地將這些作為服務(wù)的設(shè)計(jì)指導(dǎo)方針,并且因此在
第
15
章
作為設(shè)計(jì)指導(dǎo)方針的部分進(jìn)行探討
.