了解不同的面向服務(wù)的體系結(jié)構(gòu) (SOA) 反模式,這些反模式對(duì)通常出現(xiàn)的會(huì)產(chǎn)生確定性負(fù)面結(jié)果的情形或解決方案進(jìn)行了描述。隨著越來(lái)越多的企業(yè)開(kāi)始大舉從 Web 服務(wù)轉(zhuǎn)向 SOA,引入、采用和成功實(shí)現(xiàn) SOA 方面的各種障礙變得越來(lái)越明顯。其中一些障礙與導(dǎo)致過(guò)去的關(guān)鍵活動(dòng)失敗的因素類似;而其他障礙則是 SOA 特有的。對(duì)這些障礙和最差實(shí)踐進(jìn)行記錄,將幫助顧問(wèn)、架構(gòu)師和專業(yè)人員不再犯同樣的錯(cuò)誤,并學(xué)習(xí)如何避免這些問(wèn)題的發(fā)生。此處匯集和說(shuō)明的反模式是由作者通過(guò)作為 IBM 架構(gòu)師的個(gè)人經(jīng)驗(yàn)、研究過(guò)去和當(dāng)前的 SOA 應(yīng)用案例以及通過(guò)分析那些參與客戶 SOA 應(yīng)用的技術(shù)先驅(qū)提供的信息而得到的。
模式與反模式
“示例不是另一種學(xué)習(xí)的方法,而是學(xué)習(xí)的唯一方法。”——阿爾貝特·愛(ài)因斯坦
模式和模式語(yǔ)言捕獲并正式地將良好設(shè)計(jì)和基于經(jīng)驗(yàn)的最佳實(shí)踐系統(tǒng)化,以供其他人員對(duì)其進(jìn)行重用。它們成功而清楚地表述了常見(jiàn)問(wèn)題及其解決方案。總的來(lái)說(shuō),常見(jiàn)概念、描述這些概念的詞匯以及將其聯(lián)系在一起的語(yǔ)言是所有采用這些設(shè)計(jì)和實(shí)踐的學(xué)科和領(lǐng)域的基礎(chǔ)。
Christopher Alexander 關(guān)于建筑物和城市設(shè)計(jì)的研究通常被認(rèn)為是基于模式的思維最早的成果(請(qǐng)參閱參考資料)。他提出了術(shù)語(yǔ)“模式語(yǔ)言”,以此代表他認(rèn)為人類進(jìn)行設(shè)計(jì)的能力和使用語(yǔ)言的能力都是天生的這一信念。
很多學(xué)科都在使用模式和模式語(yǔ)言的概念,包括從生理學(xué)和流程到項(xiàng)目管理和軟件工程等領(lǐng)域。在 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides(經(jīng)常將他們稱為 Gang of Four)的“Design Patterns: Elements of Reusable Object-Oriented Software”一書(shū)出版后,軟件設(shè)計(jì)模式得到了廣泛的認(rèn)可和使用。
軟件社區(qū)目前正使用模式來(lái)解決在軟件生命周期中遇到的不斷重復(fù)的問(wèn)題,包括軟件體系結(jié)構(gòu)和設(shè)計(jì),以及近來(lái)的軟件開(kāi)發(fā)流程和拓?fù)洹_@些模式全面捕獲了一個(gè)知識(shí)體系,以標(biāo)識(shí)我們對(duì)可以實(shí)現(xiàn)設(shè)計(jì)良好的軟件解決方案的結(jié)構(gòu)和機(jī)制的理解。
模式經(jīng)常被定義為“泛型化的、命名的問(wèn)題到解決方案的映射”。它捕獲在特定環(huán)境中重復(fù)出現(xiàn)的問(wèn)題的成功解決方案。
通常使用與表 1“模式模板”中描述的模板類似的模板來(lái)記錄軟件模式。
表 1. 模式模板
內(nèi)容 |
說(shuō)明 |
名稱: |
用于進(jìn)行標(biāo)識(shí)的名稱 |
問(wèn)題: |
在領(lǐng)域中重復(fù)出現(xiàn)的問(wèn)題 |
解決方案: |
該問(wèn)題的最佳實(shí)踐解決方案 |
結(jié)果: |
所建議的解決方案的優(yōu)點(diǎn)和缺點(diǎn) |
示例 |
一些已經(jīng)應(yīng)用了所建議的解決方案的示例 |
軟件模式提供了一個(gè)在架構(gòu)師和設(shè)計(jì)人員中捕獲知識(shí)和經(jīng)驗(yàn)的機(jī)制。它們提供了一種公共語(yǔ)言,可促進(jìn)對(duì)其他地方成功應(yīng)用的方法的重用,從而為軟件項(xiàng)目帶來(lái)以下方面的好處:風(fēng)險(xiǎn)更低、質(zhì)量更好且交付時(shí)間更短。
而在另一方面,反模式則記錄出現(xiàn)錯(cuò)誤的情況。對(duì)數(shù)百個(gè)軟件開(kāi)發(fā)項(xiàng)目的各種調(diào)查勿庸置疑地證明了軟件開(kāi)發(fā)會(huì)出現(xiàn)錯(cuò)誤(實(shí)際上經(jīng)常是這樣)。研究表明每六個(gè)項(xiàng)目中就有五個(gè)會(huì)不成功:交付遠(yuǎn)遠(yuǎn)超過(guò)預(yù)期預(yù)算、嚴(yán)重滯后或被取消。這就表明可能(至少)值得投入精力研究一下老是失敗而很少成功的原因(注意 Bitter Java 的作者 Bruce Tate 在他的 developerWorks 文章中說(shuō)明了為什么反模式是設(shè)計(jì)模式的必要和互補(bǔ)的同伴——有關(guān)更多信息,請(qǐng)參閱參考資料)。
應(yīng)該對(duì)這些重復(fù)失敗的軟件開(kāi)發(fā)項(xiàng)目或“反解決方案”加以研究,以收集關(guān)于出現(xiàn)了什么問(wèn)題以及為什么會(huì)這樣的有用知識(shí)。很顯然,只對(duì)錯(cuò)誤的原因進(jìn)行分類并不一定非常有用,而還應(yīng)研究如何加以避免以及出現(xiàn)時(shí)如何恢復(fù)。系統(tǒng)化后,這個(gè)知識(shí)集合可以提供軟件模型的有價(jià)值的擴(kuò)展(歸類為反模式)。
反模式 使用非常頻繁,但主要是問(wèn)題的無(wú)效解決方案。這個(gè)術(shù)語(yǔ)最初是用于指示設(shè)計(jì)模式出現(xiàn)了錯(cuò)誤。與模式類似,反模式的使用也擴(kuò)展到了軟件開(kāi)發(fā)的各個(gè)階段,并深入到了其他領(lǐng)域中。反模式記錄常見(jiàn)的對(duì)效率有負(fù)面影響的重復(fù)解決方案。它們通常捕獲重構(gòu)解決方案描述,說(shuō)明如何更改反模式,以得到更為穩(wěn)定的解決方案。反模式通常使用模板進(jìn)行描述,在其中標(biāo)識(shí)癥狀、結(jié)果、根本原因和可能的解決方案。盡管與模式相比,反模式的研究并不很廣泛,相關(guān)文檔也不多,但軟件領(lǐng)域?qū)ζ渲幸恍┚哂幸瞬毮康姆茨J剑ㄈ绶治鐾nD、Blob、意大利面條式代碼和“煙囪”系統(tǒng))已耳熟能詳。表 2 提供了一些這些示例的概述,這些示例均摘自 Brown 等的關(guān)于反模式的書(shū)中(有關(guān)更多信息,請(qǐng)參閱參考資料部分)。
表 2. 已知反模式的示例
錯(cuò)誤類別 |
反模式 |
描述 |
設(shè)計(jì) |
Blob |
一個(gè)大型類具有太多的屬性,且是系統(tǒng)的“核心”所在 |
設(shè)計(jì) |
Poltergeists |
非必要類且抽象過(guò)多 |
結(jié)構(gòu) |
意大利面條式代碼 |
程序代碼沒(méi)有結(jié)構(gòu)(很多 goto 語(yǔ)句) |
結(jié)構(gòu) |
“煙囪”系統(tǒng) |
應(yīng)用程序是唯一的也是孤立的 |
技術(shù) |
Wolf ticket |
聲明具有開(kāi)放性的技術(shù)并與標(biāo)準(zhǔn)測(cè)試不相符 |
技術(shù) |
不斷退化模式 |
試圖使用最新的版本 |
重用 |
剪切與粘貼 |
軟件錯(cuò)誤被復(fù)制 |
重用 |
Golden hammer |
強(qiáng)制所有內(nèi)容適應(yīng)一個(gè)選定的工具 |
反模式為什么重要?反模式是用于防止問(wèn)題的工具,可在問(wèn)題出現(xiàn)之前對(duì)其進(jìn)行標(biāo)識(shí),并能提供關(guān)于如何防止其發(fā)生的知識(shí)。通過(guò)將錯(cuò)誤原因正式地系統(tǒng)化,我們可以更容易對(duì)其加以理解。一旦出現(xiàn)問(wèn)題,反模式可以提供幫助,能說(shuō)明如何從其進(jìn)行恢復(fù)。
簡(jiǎn)要總結(jié)一下,反模式包括以下元素:
- 關(guān)于不能工作的方案的記錄
- 常見(jiàn)術(shù)語(yǔ)表
- 詳細(xì)的修復(fù)方法
- 環(huán)境的描述和備選解決方案
- 可能成為將來(lái)的反模式的熱門解決方案
圖 1
說(shuō)明了模式和反模式之間的區(qū)別。模式從試圖解決的問(wèn)題開(kāi)始,記錄針對(duì)此問(wèn)題的可重復(fù)成功解決方案。此解決方案可帶來(lái)一些好處、相應(yīng)的結(jié)果以及可能會(huì)有一些問(wèn)題。反模式說(shuō)明對(duì)效率具有負(fù)面影響的常用的問(wèn)題解決方案。它描述導(dǎo)致出現(xiàn)問(wèn)題的原因,并說(shuō)明如何防止或?qū)鉀Q方案進(jìn)行修正。
圖 1. 模式與反模式(摘自 Brown 等的“AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis”)
SOA:簡(jiǎn)要介紹
在過(guò)去五年中,有大量的文章談面向服務(wù)、SOA,而最近幾乎所有的東西都可以面向服務(wù)了。但我們所說(shuō)的服務(wù)和面向服務(wù)到底指什么?
有很多不同的定義,而這些定義在不斷地發(fā)生變化,以反映行業(yè)和 SOA 實(shí)踐的成熟。我們將在此給出一些本文中將要使用的基本定義。這些定義在圖 2 中得到了反映。
圖 2. SOA 的定義
- 首先,什么是服務(wù)?服務(wù)是業(yè)務(wù)任務(wù)的可重復(fù)邏輯表現(xiàn)形式。此處有必要強(qiáng)調(diào)的是,我們所談的是業(yè)務(wù)流程的一部分,而不是軟件或 IT 的一部分。
通過(guò)技術(shù)實(shí)現(xiàn)后,“服務(wù)”這一術(shù)語(yǔ)則應(yīng)用到使用外化規(guī)范的軟件資源(可發(fā)現(xiàn)的)。此服務(wù)規(guī)范可以供服務(wù)使用者進(jìn)行搜索、綁定和調(diào)用。服務(wù)提供者對(duì)服務(wù)規(guī)范實(shí)現(xiàn)進(jìn)行實(shí)現(xiàn),并向服務(wù)使用者交付服務(wù)質(zhì)量要求。服務(wù)將由聲明性策略進(jìn)行控制,因此支持可動(dòng)態(tài)重新配置的體系結(jié)構(gòu)樣式。
- 第二,什么是面向服務(wù)?以我們的服務(wù)定義為基礎(chǔ),面向服務(wù)是一種將業(yè)務(wù)作為一組相關(guān)聯(lián)的服務(wù)集成的方式。我們談的仍然不是技術(shù);我們談?wù)摰氖且环N看待業(yè)務(wù)及其操作方式的新方法。
- 什么是 SOA?SOA 是一種支持面向服務(wù)的體系結(jié)構(gòu)樣式。SOA 是一種用于根據(jù)需要對(duì)資源進(jìn)行關(guān)聯(lián)的企業(yè)級(jí) IT 體系結(jié)構(gòu)。這些資源被表示為與業(yè)務(wù)一致的服務(wù),這些服務(wù)可以參與和包含到價(jià)值網(wǎng)、企業(yè)或業(yè)務(wù)線中,以滿足業(yè)務(wù)需求。
- 最后,什么是組合應(yīng)用程序?它是一組集成的服務(wù)。組合應(yīng)用程序是為了支持業(yè)務(wù)的各項(xiàng)功能而裝配和組合到一起的實(shí)際運(yùn)行的服務(wù)。SOA 應(yīng)用程序的主要結(jié)構(gòu)化元素是服務(wù),而不是子系統(tǒng)、系統(tǒng)或組件。
標(biāo)識(shí) SOA 反模式的方法
SOA 反模式是通過(guò)使用以下方法標(biāo)識(shí)的:
- 已發(fā)布反模式的調(diào)查文獻(xiàn)
- 作者在與客戶會(huì)談中發(fā)現(xiàn)而記錄下的反模式
- 通過(guò)調(diào)查 SOA CoE 和 CoP 成員的經(jīng)驗(yàn)而得到的反模式
- 已使用的被認(rèn)可的反模式模板/語(yǔ)言
- 本文中包含的得到了三位作者一致認(rèn)可的反模式
反模式模板/語(yǔ)言
反模式是使用以下模板/語(yǔ)言進(jìn)行描述的:
- 名稱
可表達(dá)反模式的特征的簡(jiǎn)潔名稱
- 問(wèn)題/錯(cuò)誤解決方案
與反模式相關(guān)的經(jīng)常出現(xiàn)的錯(cuò)誤或錯(cuò)誤解決方案
- 癥狀
問(wèn)題的表現(xiàn)或標(biāo)志
- 結(jié)果
應(yīng)用此反模式的結(jié)果
- 根本原因
此項(xiàng)提供反模式的環(huán)境,即模式應(yīng)用不正確而導(dǎo)致問(wèn)題或解決方案失敗的情況
- 建議的解決方案
可以解決問(wèn)題并確保能帶來(lái)更多好處的重構(gòu)解決方案
SOA 反模式
已標(biāo)識(shí)的反模式分為三類:
- SOA 采用反模式:此類為阻礙或延遲客戶和業(yè)務(wù)的 SOA 采用進(jìn)程的反模式。討論的屬于此類的反模式有:
- A1. 技術(shù)跟風(fēng)
- A2. 老調(diào)重談
- A3. 大爆炸
- 服務(wù)標(biāo)識(shí)和設(shè)計(jì)反模式:此類反模式是技術(shù)先驅(qū)在作為 SOA 活動(dòng)的一部分對(duì)服務(wù)進(jìn)行標(biāo)識(shí)和設(shè)計(jì)時(shí)遇到的反模式。討論的屬于此類的反模式有:
- I1. Web 服務(wù) = SOA
- I2. 豎井( Silo) 方法
- I3. 注冊(cè)中心行為不正常
- 服務(wù)實(shí)現(xiàn)反模式:此類反模式捕獲實(shí)現(xiàn)服務(wù)的最差實(shí)踐。很多此類反模式主要關(guān)注 Web 服務(wù)實(shí)現(xiàn)(最常見(jiàn)的 SOA 實(shí)現(xiàn))。在本文中,我們給出的是不關(guān)注 Web 服務(wù)的 SOA 實(shí)現(xiàn)反模式的部分列表,因?yàn)閷?duì)于以 Web 服務(wù)為中心的 SOA 實(shí)現(xiàn)反模式在 Web 服務(wù)專門論壇上已經(jīng)進(jìn)行了大量的討論。討論的屬于此類的反模式有:
- R1.通信較多的服務(wù)
- R2.點(diǎn)到點(diǎn)服務(wù)
- R3.無(wú)組件的服務(wù)
隨著 SOA 越來(lái)越成熟,其應(yīng)用越來(lái)越多,則有希望標(biāo)識(shí)越來(lái)越多的反模式。
表 3. 反模式列表
類別 ID |
反模式 |
描述 |
采用-A1 |
技術(shù)跟風(fēng) |
一種非常值得注意的常見(jiàn)趨勢(shì),在此情況下,企業(yè)決定采用流行的新技術(shù),而沒(méi)有仔細(xì)考慮此技術(shù)是否對(duì)業(yè)務(wù)有所幫助。 |
采用-A2 |
老調(diào)重談 |
缺乏對(duì) SOA 和以前的計(jì)算范例之間區(qū)別的了解,從而使其提出置疑,認(rèn)為 SOA 不過(guò)是同樣的舊技術(shù)的一個(gè)名稱而已。結(jié)果是,即使采用 SOA 能為業(yè)務(wù)帶來(lái)好處,也反對(duì)采用它。 |
采用-A3 |
大爆炸 |
此反模式也稱為“囫圇吞棗”。當(dāng)將 SOA 視為萬(wàn)能的,而立即對(duì)所有企業(yè)系統(tǒng)和體系結(jié)構(gòu)進(jìn)行全面更改時(shí),采用的就是此反模式。這樣急于求成地采用 SOA 會(huì)導(dǎo)致一些會(huì)不公平地歸咎于 SOA 的錯(cuò)誤。 |
標(biāo)識(shí)和設(shè)計(jì)-I1 |
Web 服務(wù) = SOA |
當(dāng)架構(gòu)師將 SOA 與 Web 服務(wù)劃上等號(hào)時(shí),他們實(shí)際上在冒險(xiǎn),可能會(huì)使用不具有合適體系結(jié)構(gòu)的 Web 服務(wù)替換現(xiàn)有 API。這樣將導(dǎo)致標(biāo)識(shí)很多與業(yè)務(wù)不一致的服務(wù)。 |
標(biāo)識(shí)和設(shè)計(jì)-I2 |
豎井方法 |
在此反模式中,服務(wù)是根據(jù)獨(dú)立的應(yīng)用程序標(biāo)識(shí)的,因此不同的小組可能會(huì)使用不同的名稱標(biāo)識(shí)同樣的服務(wù)。因此,不能實(shí)現(xiàn)公共服務(wù)或服務(wù)共享。 |
標(biāo)識(shí)和設(shè)計(jì)-I3 |
注冊(cè)中心行為不正常 |
重復(fù)的服務(wù)注冊(cè)表項(xiàng),所屬關(guān)系重復(fù)、不清楚,從而由于重復(fù)而導(dǎo)致管理災(zāi)難和運(yùn)行時(shí)混淆、潛在的性能低下和計(jì)劃外成本。 |
實(shí)現(xiàn)-R1 |
通信較多的服務(wù) |
此反模式描述了一個(gè)常見(jiàn)錯(cuò)誤,開(kāi)發(fā)人員在通過(guò)實(shí)現(xiàn)很多 Web 服務(wù)(這些服務(wù)彼此需要就一小部分?jǐn)?shù)據(jù)進(jìn)行通信)而實(shí)現(xiàn)服務(wù)時(shí),通常可能犯這個(gè)錯(cuò)誤。這將導(dǎo)致實(shí)現(xiàn)大量服務(wù),從而導(dǎo)致性能下降,開(kāi)發(fā)成本增加。 |
實(shí)現(xiàn)-R2 |
點(diǎn)到點(diǎn)的服務(wù) |
在應(yīng)用程序間使用 XML 或 SOAP over HTTP 代替點(diǎn)到點(diǎn) Web 服務(wù)的中間件,將導(dǎo)致點(diǎn)到點(diǎn)集成的出現(xiàn),而成為事實(shí)上的集成模式。 |
實(shí)現(xiàn)-R3 |
無(wú)組件的服務(wù) |
不清楚與所屬組件關(guān)聯(lián)的情況下就直接進(jìn)行 Web 服務(wù)的開(kāi)發(fā)和實(shí)現(xiàn),將會(huì)導(dǎo)致未結(jié)構(gòu)化、不受約束的體系結(jié)構(gòu)(沒(méi)有嚴(yán)格的分層機(jī)制)。這將導(dǎo)致服務(wù)接口后端和保留現(xiàn)有應(yīng)用程序和軟件包的遺留限制方面的靈活性低下。 |
|
|
SOA 采用反模式
這些是阻礙或延遲客戶和業(yè)務(wù)的 SOA 采用進(jìn)程的反模式。
A1:反模式名稱:技術(shù)帶寬(另請(qǐng)參閱:Web 服務(wù) = SOA)
- 問(wèn)題
我們發(fā)現(xiàn),很多公司從 IT 的角度開(kāi)始著手 SOA 工作,而不是從業(yè)務(wù)角度看待問(wèn)題。實(shí)現(xiàn)可能從技術(shù)角度而言是可行的,有時(shí)候也能成功,但由于首先沒(méi)有考慮業(yè)務(wù),因此其對(duì)業(yè)務(wù)的影響可能無(wú)法實(shí)現(xiàn)。
- 環(huán)境
此反模式主要出現(xiàn)在建立了良好的 IT 部門的大型企業(yè)中,此部門主要雇傭的是技術(shù)人員,決策方面受到技術(shù)層面的影響更多。
- 癥狀
此反模式的常見(jiàn)癥狀表現(xiàn)為發(fā)起人不能清楚地闡釋采用 SOA 的價(jià)值主張。此外,另一個(gè)癥狀可能表現(xiàn)為缺乏針對(duì) SOA 實(shí)現(xiàn)的業(yè)務(wù)/項(xiàng)目一致性。
- 結(jié)果
由于此反模式,IT 成本將會(huì)上升,卻沒(méi)有實(shí)現(xiàn)任何投資回報(bào) (ROI)。此外,公司可能會(huì)失去為 IT 投資組合注入靈活性的機(jī)會(huì)。
- 根本原因
在大多數(shù)情況下,此反模式的根本原因在于,為了趕上通過(guò)采用此技術(shù)可能實(shí)現(xiàn)領(lǐng)先地位的競(jìng)爭(zhēng)者所宣稱的能力,公司因此而承受壓力。由于這個(gè)原因,公司可能發(fā)現(xiàn)開(kāi)展基于技術(shù)的工作來(lái)引入 SOA 更為容易,而不會(huì)花時(shí)間和精力將其與業(yè)務(wù)需求結(jié)合。
- 解決方案
處理此反模式的最佳方法是建立沒(méi)有浮夸的 SOA 價(jià)值主張,可以通過(guò)標(biāo)識(shí)和描述特定于客戶的難點(diǎn)或業(yè)務(wù)挑戰(zhàn)來(lái)實(shí)現(xiàn)這一點(diǎn)。此方法可以通過(guò)開(kāi)發(fā)用于在業(yè)務(wù)的支持下恰當(dāng)?shù)匾爰夹g(shù)的路線圖來(lái)進(jìn)行互補(bǔ)。
- 解決方案示例:根據(jù)沒(méi)有浮夸的 SOA 價(jià)值主張開(kāi)發(fā) SOA 平臺(tái)
一家全球汽車租賃公司了解可支持其關(guān)鍵業(yè)務(wù)動(dòng)力的 SOA 解決方案的價(jià)值主張:
- 可提供一個(gè)靈活的業(yè)務(wù)模型,以提高交付新業(yè)務(wù)服務(wù)的速度和靈活性
- 通過(guò)簡(jiǎn)化流程來(lái)降低操作成本,從而使成本下降
- 通過(guò)為其客戶提供率先推向市場(chǎng)的創(chuàng)新服務(wù)來(lái)縮短外部業(yè)務(wù)流程的周期和成本
- 通過(guò)允許方便靈活的集成來(lái)支持多個(gè)交付渠道,從而在整個(gè)企業(yè)范圍內(nèi)進(jìn)行集成
A2:反模式名稱:老調(diào)重談
- 問(wèn)題
此反模式描述的情況是這樣的:公司置疑 SOA 不過(guò)是相同的舊技術(shù)的一個(gè)名稱而已,SOA 并不能提供任何它們尚未提供的新功能。從表面上來(lái)看,似乎可能是這樣,但過(guò)去已經(jīng)提供的功能和通過(guò)恰當(dāng)實(shí)現(xiàn) SOA 可以提供的功能相比,Web 服務(wù)和 XML(以及其他相關(guān)的標(biāo)準(zhǔn))的出現(xiàn)則是一個(gè)重大的區(qū)別。
- 環(huán)境
這個(gè)反模式主要出現(xiàn)在那些習(xí)慣其已經(jīng)長(zhǎng)期使用的技術(shù),而不愿意引入或考慮進(jìn)行改變的 IT 專業(yè)人員身上。當(dāng) IT 部門經(jīng)歷了大費(fèi)周折的技術(shù)轉(zhuǎn)換后,或新技術(shù)并不能實(shí)現(xiàn)最初的承諾時(shí),也可能出現(xiàn)此反模式。
- 癥狀
最明顯的癥狀就是公司中的一些技術(shù)管理人員強(qiáng)烈反對(duì)將 SOA 作為處理合法業(yè)務(wù)問(wèn)題的正式方法。反對(duì)可表現(xiàn)為強(qiáng)烈而明顯的爭(zhēng)辯,反對(duì)采用 SOA;或者可以表現(xiàn)為隱含的被動(dòng)的方式,在討論業(yè)務(wù)問(wèn)題的解決方案時(shí)完全忽略 SOA。
- 結(jié)果
此反模式很可能會(huì)導(dǎo)致缺乏 SOA 支持,而最終會(huì)導(dǎo)致失去實(shí)現(xiàn)將支持業(yè)務(wù)難點(diǎn)的 SOA 價(jià)值主張的機(jī)會(huì)。
- 根本原因
盡管 SOA 構(gòu)建于其他計(jì)算范例(例如,面向?qū)ο蠛突诮M件的開(kāi)發(fā))所引入和支持的相同原則之上,很多有經(jīng)驗(yàn)的 IT 團(tuán)隊(duì)仍然不能真正理解 SOA 與這些其他計(jì)算范例之間的區(qū)別。缺乏理解是此反模式的一個(gè)基本根源。另一個(gè)根本原因則是 IT 團(tuán)隊(duì)在實(shí)現(xiàn)太多的“范例轉(zhuǎn)換”方面的經(jīng)驗(yàn)不豐富(而不愿嘗試新的技術(shù))的直接結(jié)果。
- 解決方案
處理此反模式的一個(gè)方法就是強(qiáng)調(diào) SOA 與早期解決方案的不同之處。例如,應(yīng)對(duì) API 和服務(wù)之間的區(qū)別加以討論,應(yīng)對(duì)開(kāi)發(fā)標(biāo)準(zhǔn)依賴性及其區(qū)別屬性進(jìn)行說(shuō)明。另一個(gè)主要不同點(diǎn)在于作為 SOA 主要組件的企業(yè)服務(wù)總線 (ESB) 的出現(xiàn)。ESV 提供的工具(如傳輸服務(wù)、中介服務(wù)和事件服務(wù))就是一些通過(guò)采用 SOA 所提供的新服務(wù)的例子。不過(guò),最有效的解決方案則是提供一些成功的示例,以突出區(qū)別和演示實(shí)現(xiàn) SOA 解決方案的成功案例和可行性。
- 解決方案示例:SOA 培訓(xùn)
對(duì)業(yè)務(wù)部門和 IT 部門進(jìn)行培訓(xùn),闡釋 SOA 的概念、其價(jià)值主張,并說(shuō)明其在提供支持業(yè)務(wù)所需的 IT 靈活性方面的好處。促進(jìn)對(duì) Web 服務(wù)和 XML 標(biāo)準(zhǔn)及實(shí)現(xiàn) SOA 中的新興標(biāo)準(zhǔn)的重要性的理解,這些內(nèi)容正是 SOA 與過(guò)去的范例轉(zhuǎn)換的不同之處。
A3:反模式名稱:大爆炸(也稱為:囫圇吞棗)
- 問(wèn)題
此反模式可以看作“老調(diào)重談”反模式的對(duì)立面。此處的問(wèn)題在于,支持者將 SOA 視為萬(wàn)能的,而立即對(duì)所有企業(yè)系統(tǒng)和體系結(jié)構(gòu)進(jìn)行全面更改。
- 環(huán)境
此反模式和“技術(shù)跟風(fēng)”反模式的環(huán)境一樣。特別在其主要股東具有很強(qiáng)的技術(shù)背景,且比對(duì)應(yīng)的業(yè)務(wù)方面的人員更有影響力的企業(yè)中,他們就很可能會(huì)采用“囫圇吞棗”的方式,而完全不考慮對(duì)業(yè)務(wù)的影響。
- 癥狀
如果業(yè)務(wù)單位對(duì)采用 SOA 所帶來(lái)的更改十分擔(dān)心,則清楚地表明此采用了此反模式。
- 結(jié)果
應(yīng)用此反模式后,將會(huì)出現(xiàn)嚴(yán)重的錯(cuò)誤,無(wú)法提供 SOA 所承諾的好處(可以從現(xiàn)有體系結(jié)構(gòu)獲得回報(bào)),從而延遲(甚至消除) SOA 所具有的任何潛在優(yōu)勢(shì)。采用此反模式的另一個(gè)結(jié)果就是可能會(huì)將任何交付錯(cuò)誤歸咎于 SOA,而不是查找問(wèn)題的根本原因。
- 根本原因
任何企業(yè)中的狂熱技術(shù)支持者都可能是此類反模式的根源所在,特別在這些技術(shù)支持者處在可以優(yōu)先于業(yè)務(wù)考慮做出 IT 決策。
- 解決方案
為了消除此反模式,一種解決方案是指定一個(gè)業(yè)務(wù)支持路線圖,以采用增量的方式逐步采用 SOA。不要采用試圖通過(guò)使用 SOA 進(jìn)行全面更改的方式解決所有企業(yè)問(wèn)題,更好的做法是首先構(gòu)建一個(gè)試驗(yàn)性業(yè)務(wù)案例,當(dāng)試用成功后,則使用路線圖選擇下一個(gè)可能從 SOA 獲益的目標(biāo)業(yè)務(wù)領(lǐng)域。如果可為組織中那些負(fù)責(zé) SOA 推廣的人員提供 SOA 入門培訓(xùn),也將十分有用。
- 解決方案示例:開(kāi)發(fā)實(shí)現(xiàn) SOA 的路線圖。
一家大型銀行在考慮到其業(yè)務(wù)策略后,確定其正確的體系結(jié)構(gòu)方向是 SOA 解決方案,此解決方案可以幫助其實(shí)現(xiàn)其業(yè)務(wù)目標(biāo)。該銀行首先對(duì)其服務(wù)集成方面的成熟度水平進(jìn)行了評(píng)估。然后,開(kāi)發(fā)了路線圖來(lái)幫助銀行以增量的方式遷移到 SOA 環(huán)境,以在繼續(xù)提供必要的業(yè)務(wù)功能的同時(shí)最小化風(fēng)險(xiǎn)。該銀行選擇了一個(gè)試驗(yàn)性項(xiàng)目來(lái)驗(yàn)證 SOA 體系結(jié)構(gòu)樣式,并找出在遷移到 SOA 范例過(guò)程中可能出現(xiàn)的任何技術(shù)和組織問(wèn)題。
|
|
SOA 標(biāo)識(shí)和設(shè)計(jì)反模式:
此類反模式是技術(shù)先驅(qū)在作為 SOA 活動(dòng)的一部分對(duì)服務(wù)進(jìn)行標(biāo)識(shí)和設(shè)計(jì)時(shí)遇到的反模式。
I1:反模式名稱:Web 服務(wù) = SOA(也稱為服務(wù)增殖綜合癥)
- 問(wèn)題
對(duì)于很多人而言,SOA 不過(guò)是 Web 服務(wù)的另一個(gè)名稱而已。盡管實(shí)現(xiàn) Web 服務(wù)是采用 SOA 過(guò)程中的一個(gè)合理的入口點(diǎn),但企業(yè)不應(yīng)將 Web 服務(wù)和 SOA 劃上等號(hào)。
- 環(huán)境
目前的大部分生產(chǎn) Web 服務(wù)系統(tǒng)都不是 SOA。它們只是通過(guò) SOAP 或結(jié)構(gòu)良好的集成體系結(jié)構(gòu)的遠(yuǎn)程過(guò)程調(diào)用或點(diǎn)到點(diǎn)消息傳遞而已。各種組織發(fā)現(xiàn),通過(guò)僅實(shí)現(xiàn) Web 服務(wù)而宣稱遷移到 SOA 的方式更為簡(jiǎn)單。
- 癥狀
在不采用恰當(dāng)?shù)捏w系結(jié)構(gòu)的情況下使用 Web 服務(wù)替代 API,并實(shí)現(xiàn)不與業(yè)務(wù)一致的服務(wù)是此反模式的明顯癥狀。
- 結(jié)果
Web 服務(wù)的增殖是應(yīng)用此反模式的直接結(jié)果。這個(gè)結(jié)果是將任何接口都作為 Web 服務(wù)實(shí)現(xiàn),而不管這些服務(wù)是否是 SOA 價(jià)值主張的一部分而造成的。另外,最終的系統(tǒng)也可能沒(méi)有反映服務(wù)請(qǐng)求方要求的接口。
- 根本原因
此反模式的根本原因有兩種。首先是操之過(guò)急,意在走捷徑,以快速廉價(jià)的方式開(kāi)展 SOA 方面的工作。其次是缺乏對(duì) SOA 和 Web 服務(wù)的區(qū)別的認(rèn)識(shí),不理解對(duì)好的服務(wù)建模技術(shù)的需求。
- 解決方案
處理此反模式的一個(gè)方法是制定可行的 SOA 轉(zhuǎn)換計(jì)劃,此計(jì)劃要求組織對(duì)其 SOA 價(jià)值主張進(jìn)行定義。實(shí)現(xiàn) SOA 價(jià)值主張要求同時(shí)使用 SOA 和 Web 服務(wù)。這將要求對(duì) SOA 和 Web 服務(wù)的區(qū)別進(jìn)行培訓(xùn),并應(yīng)用好的服務(wù)建模方法,如面向服務(wù)的建模和體系結(jié)構(gòu)(Service-Oriented Modeling and Architecture,SOMA)。
- 解決方案示例:應(yīng)用服務(wù)建模以標(biāo)識(shí)粗粒度的服務(wù)和將 Web 服務(wù)作為 SOA 解決方案的實(shí)現(xiàn)技術(shù)加以利用
引入和采用良好的服務(wù)建模技術(shù)來(lái)確定供業(yè)務(wù)解決方案使用的恰當(dāng)粗粒度服務(wù),并利用 Web 服務(wù)來(lái)實(shí)現(xiàn) SOA 解決方案。恰當(dāng)服務(wù)粒度水平將幫助盡可能減少過(guò)分細(xì)粒度服務(wù)的增加。實(shí)現(xiàn) SOA 價(jià)值主張要求同時(shí)使用 SOA 和 Web 服務(wù)。
I2:名稱:豎井方法
- 問(wèn)題
此反模式帶來(lái)的問(wèn)題是標(biāo)識(shí)服務(wù)的方式。當(dāng)根據(jù)獨(dú)立的應(yīng)用程序(而不是以企業(yè)策略為中心)對(duì)服務(wù)進(jìn)行標(biāo)識(shí)時(shí),期望 SOA 實(shí)現(xiàn)所帶來(lái)的好處將永遠(yuǎn)不能實(shí)現(xiàn)。
- 環(huán)境
此反模式主要出現(xiàn)在根據(jù)獨(dú)立工作的具有塔狀結(jié)構(gòu)的功能模型進(jìn)行組織的企業(yè)中。每個(gè)功能塔所享有的自治權(quán)將導(dǎo)致采用豎井方式進(jìn)行工作。
- 癥狀
此反模式的一個(gè)癥狀是不同的小組使用不同的名稱對(duì)相同的服務(wù)進(jìn)行標(biāo)識(shí)。沒(méi)有標(biāo)識(shí)公共服務(wù),或未實(shí)現(xiàn)服務(wù)共享,同樣也清楚地表明應(yīng)用了此反模式。
- 結(jié)果
由于采用豎井(silo)方法會(huì)導(dǎo)致服務(wù)被多次標(biāo)識(shí)和實(shí)現(xiàn),不必要的昂貴開(kāi)發(fā)成本或服務(wù)重復(fù)使得采用 SOA 所能帶來(lái)的好處大打折扣。而且,由于使用此反模式,會(huì)使不同應(yīng)用程序的受益人間的重用減少或完全消失。
- 根本原因
在大多數(shù)情況下,組織的邊界和約束是此反模式的根本原因。在某些企業(yè)中,缺乏對(duì)“服務(wù)公開(kāi)決策”的有所控制的方法也是根本原因。
- 解決方案
此反模式的解決方案是建立一個(gè)控制框架,以確保跨功能塔進(jìn)行服務(wù)標(biāo)識(shí)和通信。另外,還應(yīng)當(dāng)進(jìn)行以標(biāo)識(shí)公共服務(wù)為目的的相關(guān)工作。這可以通過(guò)使用 SOMA 等好的服務(wù)建模方法來(lái)完成。
- 解決方案示例:標(biāo)識(shí)公共服務(wù)
像大多數(shù)企業(yè)一樣,一家大型銀行是按照業(yè)務(wù)塔進(jìn)行的組織,這些業(yè)務(wù)塔為不同類型的銀行客戶提供類似的業(yè)務(wù)功能。SOMA 用于開(kāi)發(fā)服務(wù)模型,以促進(jìn)業(yè)務(wù)塔間的重用和了解此類重用機(jī)會(huì)。從更高的角度來(lái)看,在支持業(yè)務(wù)功能所需的業(yè)務(wù)服務(wù)中,約有 90% 都具有相似性,這是潛在的重用領(lǐng)域。
I3:反模式名稱:注冊(cè)中心行為不正常
- 問(wèn)題
在沒(méi)有一致的 SOA 控制模型的情況下采用 UDDI 將導(dǎo)致流程和設(shè)計(jì)的效率低下。特別是重復(fù)的注冊(cè)中心可能導(dǎo)致效率低下,使得性能下降,并可能產(chǎn)生安全和遵從性漏洞。
- 環(huán)境
沒(méi)有注冊(cè)中心控制協(xié)議,但卻嘗試建立 UDDI 用途的企業(yè)將經(jīng)常遇到此反模式。
- 癥狀
考慮到 UDDI 是標(biāo)準(zhǔn)而不是產(chǎn)品,如果使用不恰當(dāng),可能導(dǎo)致建立重復(fù)的服務(wù)注冊(cè)中心和重疊的、不明確的關(guān)系。這將表現(xiàn)為不正確的、容易引起誤會(huì)的服務(wù)接口信息,特別在共享服務(wù)模型內(nèi)的組合服務(wù)場(chǎng)景的發(fā)現(xiàn)操作期間表現(xiàn)得十分明顯。盡管注冊(cè)中心中單個(gè)服務(wù)接口的描述是正確的,但重復(fù)的條目將導(dǎo)致整個(gè)服務(wù)的發(fā)現(xiàn)不正確。而且,缺乏控制模型可能是由于服務(wù)在生命周期流程的各個(gè)階段注冊(cè),當(dāng)不具有一對(duì)一的所屬關(guān)系轉(zhuǎn)換時(shí)被遺棄而造成的。例如:假定某個(gè)開(kāi)發(fā)人員向內(nèi)部 UDDI 添加了三個(gè)服務(wù)。然后,服務(wù)管理員可能會(huì)將其中兩個(gè)遷移到生產(chǎn) UDDI 中。這就產(chǎn)生了孤立服務(wù)。服務(wù)組件也可能出現(xiàn)類似的情況。
- 結(jié)果
在試圖確定注冊(cè)中心中哪個(gè)服務(wù)導(dǎo)致無(wú)法滿足 SLA 時(shí),重復(fù)的注冊(cè)中心將導(dǎo)致控制災(zāi)難和運(yùn)行時(shí)混淆。此外,此類重復(fù)還會(huì)導(dǎo)致性能下降和安全漏洞及遵從性漏洞。此類反模式的另一個(gè)結(jié)果就是由于重復(fù)而會(huì)產(chǎn)生計(jì)劃外成本。
- 根本原因
缺乏設(shè)計(jì)時(shí)一致性(SOA 控制模型)是導(dǎo)致此反模式的主要原因。具體來(lái)說(shuō),此問(wèn)題的核心是服務(wù)注冊(cè)中心所屬關(guān)系不清楚且沒(méi)有建立和執(zhí)行企業(yè)級(jí) SOA 參考體系結(jié)構(gòu)。
- 解決方案
為了避免此反模式,公司必須建立 SOA 控制模型,以定義和采用服務(wù)注冊(cè)中心最佳實(shí)踐、所屬關(guān)系以及相關(guān)團(tuán)隊(duì)間的通信。這將消除重復(fù)條目和不正確的接口信息,并最小化包含孤立服務(wù)的結(jié)果。由于只有一個(gè)服務(wù)描述源(其中包含關(guān)聯(lián)的 SLA 和策略),因此還可以消除運(yùn)行時(shí)混淆。使用 SOA 企業(yè)級(jí)參考體系結(jié)構(gòu)間建立和執(zhí)行遵從性應(yīng)是 SOA 控制模型制度化的第一步。
|
|
SOA 實(shí)現(xiàn)反模式
此類反模式捕獲實(shí)現(xiàn)服務(wù)的最差實(shí)踐。
R1:反模式名稱:通信較多的服務(wù)
- 問(wèn)題
此反模式描述開(kāi)發(fā)人員通過(guò)實(shí)現(xiàn)一系列 Web 服務(wù)(這些服務(wù)彼此需要就一小部分?jǐn)?shù)據(jù)進(jìn)行通信)來(lái)實(shí)現(xiàn)服務(wù)的情況。同一個(gè)反模式的另一表現(xiàn)是服務(wù)實(shí)現(xiàn)最后會(huì)進(jìn)行大量的微型信息通信,而不是采用將數(shù)據(jù)組合到全面的類似于文檔的格式中。
- 環(huán)境
如果組織中的開(kāi)發(fā)人員急于在沒(méi)有恰當(dāng)?shù)慕5那闆r下開(kāi)始進(jìn)行實(shí)現(xiàn),這些組織將最終受到此反模式的困擾。在某些情況下,開(kāi)發(fā)人員被要求在沒(méi)有了解如何從 SOA 獲得最大利益的情況下使用 Web 服務(wù)替代 API,將通常會(huì)導(dǎo)致此反模式。
- 癥狀
如果有實(shí)現(xiàn)大量過(guò)分細(xì)粒度服務(wù)的需求,則表明應(yīng)用了此反模式。
- 結(jié)果
性能下降和開(kāi)發(fā)成本增加是此反模式的主要結(jié)果。此外,使用者必須進(jìn)行額外的工作以對(duì)這些過(guò)分細(xì)粒度的服務(wù)進(jìn)行聚合,以實(shí)現(xiàn)相關(guān)優(yōu)勢(shì)和獲得如何將這些服務(wù)一起使用的知識(shí)。
- 根本原因
由于不知道任何更好的辦法,很多開(kāi)發(fā)人員采用的方法就是采用 Web 服務(wù)的形式模擬 API 的實(shí)現(xiàn)。這與我們?cè)谧铋_(kāi)始采用面向?qū)ο蟮木幊碳夹g(shù)時(shí)的情況(開(kāi)發(fā)人員使用面向?qū)ο蟮恼Z(yǔ)言來(lái)開(kāi)發(fā)過(guò)程型的程序)十分相似。另外,急于采用這項(xiàng)新技術(shù),可能會(huì)導(dǎo)致所有內(nèi)容都成為 Web 服務(wù),卻不能帶來(lái)任何好處,而且成本會(huì)急劇增加。
- 解決方案
為了避免此反模式,需要集中精力進(jìn)行設(shè)計(jì)重構(gòu),以將各個(gè)數(shù)據(jù)片斷組合到一個(gè)文檔中,以消除通信量過(guò)多的服務(wù)。另外,就 API 和服務(wù)之間的區(qū)別進(jìn)行培訓(xùn)(并強(qiáng)調(diào)恰當(dāng)?shù)姆?wù)粒度),也會(huì)有用。不過(guò),避免此反模式的最有效辦法是定義映射回業(yè)務(wù)目標(biāo)的服務(wù)。可以通過(guò)引入和使用好的服務(wù)建模技術(shù)來(lái)為業(yè)務(wù)解決方案確定恰當(dāng)?shù)拇至6确?wù),從而完成此工作。這將最小化服務(wù)通信過(guò)多的行為,因?yàn)榇诵袨橐言?SOA 中正確的粒度級(jí)別得到了標(biāo)識(shí)。應(yīng)用 Service Litmus Test (SLT) 也可以幫助確定要公開(kāi)的正確服務(wù)級(jí)別。SLT 的一個(gè)例子是考慮服務(wù)是否提供了支持業(yè)務(wù)流程和目標(biāo)所需的業(yè)務(wù)功能單元。
R2:反模式名稱:點(diǎn)到點(diǎn)服務(wù)
- 問(wèn)題
基本問(wèn)題是開(kāi)發(fā)人員在不考慮使用環(huán)境的情況下嘗試使用點(diǎn)到點(diǎn) Web 服務(wù)作為集成方法替代中間件。
- 環(huán)境
此模式出現(xiàn)在缺乏長(zhǎng)期系統(tǒng)集成遠(yuǎn)景而強(qiáng)調(diào)短期結(jié)果的組織中。
- 癥狀
此反模式的一個(gè)表現(xiàn)是在內(nèi)部應(yīng)用程序之間使用 SOAP over HTTP。
- 結(jié)果
由于使用此反模式,點(diǎn)到點(diǎn)集成解決方案將作為企業(yè)的事實(shí)上的集成模式出現(xiàn)。這將對(duì)任何實(shí)現(xiàn)恰當(dāng) SOA 實(shí)現(xiàn)的所有優(yōu)勢(shì)的可能帶來(lái)負(fù)面影響。
- 根本原因
此模式的主要根源是缺乏對(duì)總體系統(tǒng)的長(zhǎng)期維護(hù)和發(fā)展的考慮(可能是由于強(qiáng)調(diào)短期解決方案而造成的)。在某些情況下,急于在別處使用服務(wù)也可能導(dǎo)致此類點(diǎn)到點(diǎn)服務(wù)方法使用的增多。
- 解決方案
為了避免采用此反模式的結(jié)果,應(yīng)該考慮將智能連接器(如服務(wù)總線)作為正式集成方法使用。使用服務(wù)總線,應(yīng)用程序可以簡(jiǎn)單有效地一起工作,以支持業(yè)務(wù)需求,并同時(shí)保持協(xié)作系統(tǒng)和應(yīng)用程序間的松散耦合。
- 已知的例外情況
有一些例外的情況,在這些情況下此反模式解決方案是可以接受的。例如,為了解決即時(shí)的業(yè)務(wù)問(wèn)題以及可以使用點(diǎn)到點(diǎn)服務(wù)的情況下,就需要采用快速的短期集成方案。不過(guò),這些解決方案有可能會(huì)在生產(chǎn)中長(zhǎng)時(shí)間存在。因此,應(yīng)用此反模式時(shí)應(yīng)當(dāng)小心地進(jìn)行監(jiān)視,并應(yīng)當(dāng)配備相應(yīng)的控制,以防止長(zhǎng)期采用此反模式。
R3:反模式名稱:無(wú)組件的服務(wù)(也稱為“邏輯分層已過(guò)時(shí)”)
- 問(wèn)題
用于服務(wù)建模的最佳實(shí)踐將促進(jìn)已標(biāo)識(shí)的服務(wù)與其所屬的組件相關(guān)聯(lián)。此反模式帶來(lái)的問(wèn)題是,開(kāi)發(fā)人員趨于在沒(méi)有與所屬組件明確關(guān)聯(lián)的情況下直接進(jìn)行 Web 服務(wù)的開(kāi)發(fā)和實(shí)現(xiàn)。
- 環(huán)境
此反模式出現(xiàn)在體系結(jié)構(gòu)模式未得到應(yīng)用或考慮的環(huán)境中,例如,分層體系結(jié)構(gòu)模式。缺乏體系結(jié)構(gòu)規(guī)則使得環(huán)境極易出現(xiàn)此類反模式的應(yīng)用。
- 癥狀
對(duì)服務(wù)進(jìn)行檢查,將會(huì)發(fā)現(xiàn)系統(tǒng)可以在不遵循任何體系結(jié)構(gòu)的結(jié)構(gòu)要求就可以直接達(dá)到系統(tǒng)的任何部分。在這些情況下,Web 服務(wù)是在不考慮任何分層和分離概念的情況下開(kāi)發(fā)的。
- 結(jié)果
最值得注意的結(jié)果是服務(wù)接口之外非常不靈活,因?yàn)槟K設(shè)計(jì)、信息隱藏和邏輯結(jié)構(gòu)原則均未得到遵循。這將導(dǎo)致仍然保留了現(xiàn)有應(yīng)用程序和軟件包的遺留限制,從而可能導(dǎo)致在將來(lái)不能進(jìn)行重新設(shè)計(jì)。
- 根本原因
與違反了最佳操作的任何其他情況一樣,此反模式的根本原因在于缺乏良好的設(shè)計(jì)。
- 解決方案
組件和 SOA 的真正潛能僅在同時(shí)具有兩者的情況下才能實(shí)現(xiàn)。解決的辦法是采用由基于組件的靈活應(yīng)用程序支持的一致服務(wù)接口。這將要求開(kāi)發(fā)人員繼續(xù)利用 J2EE 和常見(jiàn) EAD 最佳實(shí)踐及分層模式,將其作為克服此反模式的缺陷的方法。
- 解決方案示例:理解組件對(duì)于 SOA 的價(jià)值
服務(wù)最好使用組件實(shí)現(xiàn)。如果沒(méi)有組件,服務(wù)接口后端就沒(méi)有靈活性可言,并可能要擔(dān)心實(shí)現(xiàn)的可伸縮性和可移植性。現(xiàn)有應(yīng)用程序和軟件包將保留其遺留限制,這將最大程度降低地提供支持不斷變化的業(yè)務(wù)需求所需的靈活性的能力。組件可使用其松散耦合和重用功能提供支持服務(wù)接口所需的可伸縮性和靈活性。
|
|
總結(jié)
在本文中,我們了解了一些通過(guò)觀察所得的 SOA 反模式,并介紹了一些影響 SOA 的采用、標(biāo)識(shí)和設(shè)計(jì)及實(shí)現(xiàn)的 SOA 項(xiàng)目。