• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 181, 文章 - 2, 評(píng)論 - 85, 引用 - 0
            數(shù)據(jù)加載中……

            SOA 反模式-----成功采用和實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的障礙

            了解不同的面向服務(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 的定義
            SOA 的定義
            1. 首先,什么是服務(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)樣式。

            2. 第二,什么是面向服務(wù)?以我們的服務(wù)定義為基礎(chǔ),面向服務(wù)是一種將業(yè)務(wù)作為一組相關(guān)聯(lián)的服務(wù)集成的方式。我們談的仍然不是技術(shù);我們談?wù)摰氖且环N看待業(yè)務(wù)及其操作方式的新方法。
            3. 什么是 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ù)需求。
            4. 最后,什么是組合應(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í)的反模式分為三類:

            1. SOA 采用反模式:此類為阻礙或延遲客戶和業(yè)務(wù)的 SOA 采用進(jìn)程的反模式。討論的屬于此類的反模式有:
              • A1. 技術(shù)跟風(fēng)
              • A2. 老調(diào)重談
              • A3. 大爆炸
            2. 服務(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è)中心行為不正常
            3. 服務(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)目。

            posted on 2006-04-17 02:14 wsdfsdf 閱讀(155) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 技術(shù)文章

            亚洲伊人久久成综合人影院 | 久久久久99精品成人片试看| 欧美大香线蕉线伊人久久| 久久无码人妻一区二区三区午夜| 色婷婷久久综合中文久久蜜桃av| 久久国产亚洲精品无码| 狠狠久久综合伊人不卡| 久久久久久久久久久精品尤物 | 亚洲va国产va天堂va久久| 国产精品久久99| 久久精品综合网| 99久久人人爽亚洲精品美女 | 国产激情久久久久影院小草| 久久亚洲精品无码VA大香大香| 97久久精品午夜一区二区| 久久久中文字幕日本| 久久国产热精品波多野结衣AV| 人妻无码精品久久亚瑟影视| 狠狠色丁香婷综合久久| 欧美激情一区二区久久久| 精品久久久久久国产| 中文字幕无码精品亚洲资源网久久| 69久久夜色精品国产69| 久久久久免费精品国产| 久久青青草原亚洲av无码| 久久久久四虎国产精品| 欧美午夜精品久久久久免费视 | 国产日产久久高清欧美一区| 一本色道久久综合狠狠躁篇| 久久AAAA片一区二区| 2021国产成人精品久久| 久久99国产精品99久久| 国产成人精品久久一区二区三区| 热re99久久6国产精品免费| 欧美日韩久久中文字幕| 国内精品久久久久影院亚洲| 亚洲伊人久久综合影院| 久久精品国产亚洲AV不卡| 日韩精品久久无码人妻中文字幕 | 精品久久久久久无码专区 | 久久久久久夜精品精品免费啦|