隨筆 - 251  文章 - 504  trackbacks - 0
          <2006年11月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          本博客系個(gè)人收集材料及學(xué)習(xí)記錄之用,各類“大俠”勿擾!

          留言簿(14)

          隨筆分類

          收藏夾

          My Favorite Web Sites

          名Bloger

          非著名Bloger

          搜索

          •  

          積分與排名

          • 積分 - 204351
          • 排名 - 283

          最新評(píng)論

          本文列出了本人與?IBM?內(nèi)部和外部的架構(gòu)師、開(kāi)發(fā)人員在談?wù)?Web?服務(wù)以及?SOA?時(shí)所涉及到的大家共同關(guān)注的事項(xiàng)、問(wèn)題和資源。
          摘自?IBM?WebSphere?開(kāi)發(fā)者技術(shù)期刊

          引言

          在為?IBM?WebSphere&reg;?開(kāi)發(fā)者技術(shù)期刊撰寫(xiě)專欄之前,我花費(fèi)了大量的時(shí)間與架構(gòu)師、開(kāi)發(fā)人員談?wù)摿怂麄冊(cè)诨?Web?服務(wù)和?SOA?設(shè)計(jì)以及構(gòu)建解決方案時(shí)所面臨的問(wèn)題。有一些問(wèn)題和主題一再成為討論的焦點(diǎn),因此,我把我個(gè)人認(rèn)為是與?Web?服務(wù)相關(guān)的?10?大問(wèn)題列出來(lái)與大家分享。?

          注意,我沒(méi)有把它們稱為最佳實(shí)踐,是因?yàn)槠渲杏性S多問(wèn)題并不太容易回答。相反,別人對(duì)這些問(wèn)題已經(jīng)回答過(guò)許多次,對(duì)于這些內(nèi)容,我只是想指導(dǎo)您了解一下我比較喜歡的資源,這些資源對(duì)該主題進(jìn)行了較為詳細(xì)的說(shuō)明(當(dāng)然這些資源大多數(shù)是一些?developerWorks?文章)。我認(rèn)為這些主題涉及的領(lǐng)域非常廣泛,對(duì)于我的某些觀點(diǎn),您可以完全贊同也可以完全不贊同;您也可以添加其他主題。這里為您敞開(kāi)了一扇大門(mén),歡迎您對(duì)我的看法提出意見(jiàn)。

          1.?文檔/文本?Web?服務(wù)到底是什么?

          這無(wú)疑是我聽(tīng)到的首要問(wèn)題。事實(shí)上,我們?cè)跀?shù)年前就聽(tīng)到這一問(wèn)題,令人感到有些驚奇的是,到目前為止仍有人時(shí)常提出這一問(wèn)題,而且對(duì)這一問(wèn)題仍存在一些誤解。您可能知道,您可以在?WSDL?定義中定義?Web?服務(wù)的調(diào)用樣式和編碼樣式。盡管這對(duì)構(gòu)建網(wǎng)絡(luò)?SOAP?消息的確切方式存在影響,但對(duì)整體解決方案、交互樣式或編程模型幾乎毫無(wú)效果。因此我的建議始終是:

          不要將使用某個(gè)特定的樣式作為整個(gè)企業(yè)范圍的規(guī)則。使用不同的樣式有各種各樣的原因,而且您很可能會(huì)碰到所有這些樣式。?
          將該主題看作是一種實(shí)現(xiàn)細(xì)節(jié),不要讓該主題推動(dòng)或影響您的系統(tǒng)設(shè)計(jì)。?
          請(qǐng)閱讀?Russ?Butek?撰寫(xiě)的優(yōu)秀文章?我應(yīng)該采用哪一種?WSDL?樣式?,我認(rèn)為這篇文章對(duì)這些不同之處做出了最好的解釋。?


          2.?Web?服務(wù)非常慢,或者?Web?服務(wù)是否非常慢?

          眾所周知,使用?Web?服務(wù)在性能上會(huì)受到一定程度的影響。這幾乎不會(huì)令人感到驚奇,因?yàn)槭褂?Web?服務(wù)時(shí)通常會(huì)涉及到把使用某種本機(jī)格式設(shè)置的數(shù)據(jù)構(gòu)建為?XML?文檔,并在網(wǎng)絡(luò)中發(fā)送此文檔。盡管交叉處理(甚至是跨網(wǎng)絡(luò)處理)始終比本地調(diào)用要慢得多,但是如果聽(tīng)到已經(jīng)對(duì)?Web?服務(wù)的性能進(jìn)行了一些改進(jìn),您可能會(huì)感到驚奇。

          有許多技術(shù)可以實(shí)現(xiàn)這一點(diǎn);例如,智能?XML?解析器技術(shù)(為處理?SOAP?和?XML?構(gòu)件而進(jìn)行了高級(jí)優(yōu)化)或?XML?應(yīng)用程序的出現(xiàn)(如?IBM?DataPower&reg;,該應(yīng)用程序支持硬件級(jí)別的?XML?處理)。還有?WebSphere?Application?Server?中的?Web?服務(wù)緩存支持功能,該功能也有助于大大提高性能。事實(shí)上,在某些情況下,在最新?WebSphere?Application?Server?運(yùn)行時(shí)上的?SOAP?over?HTTP?調(diào)用比使用?RMI?over?IIOP?調(diào)用相同的功能要快。

          因此,我的建議是應(yīng)繼續(xù)對(duì)分布式計(jì)算應(yīng)用基本的最佳實(shí)踐(例如,減少網(wǎng)絡(luò)通信量等),但開(kāi)始考慮使用?Web?服務(wù),甚至是用在對(duì)性能要求關(guān)鍵的情況中。?

          3.?我的?XML?模式不適用于您的產(chǎn)品

          在經(jīng)過(guò)了開(kāi)發(fā)?Hello?World?樣式的測(cè)試應(yīng)用程序之后,您可能會(huì)注意到,在您的工具中,XML?模式規(guī)范中的某些更高級(jí)別的元素或者不受支持或者不能很好地?支持。例如,在?WebSphere?工具中,不存在對(duì)?<xsd:choice>?元素的映射,該元素在模式中非常通用。對(duì)于?<xsd:group>?也是這種情況。在這些情況下,您可以選擇更改模式,也可以選擇開(kāi)發(fā)自己的代碼來(lái)處理基于此模式的?XML。請(qǐng)注意,可能需要手動(dòng)干預(yù)才能將您的模式映射到?Web?服務(wù)實(shí)現(xiàn)。我建議的兩篇文章是:

          Web?服務(wù)技巧:?將多態(tài)性作為?xsd:choice?的備選方法 ?
          如何為?Web?服務(wù)選擇一種自定義映射技術(shù)?
          總之,這里沒(méi)有一次性解決所有問(wèn)題的萬(wàn)能方法。不過(guò),我們有理由期望這些標(biāo)準(zhǔn)和產(chǎn)品的未來(lái)版本也能夠提供對(duì)高級(jí)模式不斷增強(qiáng)的支持。

          4.?UDDI?是什么情況?還有人在使用它嗎?

          在?Web?服務(wù)首次開(kāi)始流行之后,人們始終指出在任何?SOA?環(huán)境中都存在以下三種主要角色:?

          服務(wù)請(qǐng)求程序?
          服務(wù)提供程序?
          服務(wù)代理程序?
          代理程序角色一般由遵循?UDDI?標(biāo)準(zhǔn)的注冊(cè)中心表示。提供公共注冊(cè)中心可讓您創(chuàng)建自己的項(xiàng)和重復(fù)使用其他項(xiàng)。WebSphere?Application?Server?還附帶了一個(gè)專用?UDDI?注冊(cè)中心。?

          不過(guò),在實(shí)際情形中我仍沒(méi)有看到?UDDI?有多大用處(如果有)。大多數(shù)?IT?組織或者構(gòu)建自己的方式來(lái)獲取服務(wù)定義和連接端點(diǎn)(例如使用?LDAP),或者棄用?UDDI,等待注冊(cè)中心的新標(biāo)準(zhǔn)。其他還有將專有擴(kuò)展添加到?UDDI。公共?UDDI?注冊(cè)中心由?IBM?支持,其他組織已經(jīng)放棄。

          我的預(yù)測(cè)是,在這一領(lǐng)域,隨著時(shí)間的推移?UDDI?將由未來(lái)的新技術(shù)代替。

          5.?Web?服務(wù)的同步

          另一個(gè)經(jīng)常討論的主題是,服務(wù)是同步的還是異步的,與編程模型相比,使用的通信協(xié)議充當(dāng)什么角色。例如,假設(shè)使用?SOAP?over?JMS?綁定提供了?Web?服務(wù)。使用?JMS(支持異步交互)好像意味著這是一個(gè)異步?Web?服務(wù)。不過(guò),如果在?WebSphere?Application?Server?中使用?JAX-RPC?支持,則服務(wù)使用者將在返回控制之前等待返回響應(yīng)。這一原因是,無(wú)論是否使用了該協(xié)議,JAX-RPC?1.1?都在請(qǐng)求程序和提供程序之間強(qiáng)制執(zhí)行了一個(gè)同步交互。換句話說(shuō),用來(lái)調(diào)用?Web?服務(wù)的編程模型通常確定調(diào)用的同步性,而不是網(wǎng)絡(luò)協(xié)議。

          要構(gòu)建真正的異步交互,您有兩個(gè)主要選項(xiàng)。第一個(gè)選項(xiàng)是構(gòu)建一系列交換信息的單向服務(wù),例如使用?WebSphere?Application?Server?V6.1?中的?WS-Addressing?支持。我推薦的一篇?developerWorks?上的文章對(duì)此內(nèi)容進(jìn)行了詳細(xì)說(shuō)明:Web?服務(wù)尋址(WS-Addressing)對(duì)?SOAP?的隱式影響

          另一個(gè)選項(xiàng)是對(duì)異步調(diào)用使用服務(wù)組件體系結(jié)構(gòu)?(SCA)?支持。SCA?提供了一個(gè)客戶端?API,后者可以將發(fā)送的請(qǐng)求與接收的響應(yīng)分離開(kāi)。將來(lái),新的?JAX-WS?2.0?標(biāo)準(zhǔn)將提供類似的支持。

          6.?ESB?或非?ESB

          有許多問(wèn)題都與企業(yè)服務(wù)總線?(ESB)?這一主題相關(guān):

          ESB?究竟是什么?它是一種產(chǎn)品還是一種模式,或者二者兼具??
          每個(gè)?SOA?實(shí)現(xiàn)是否都需要?ESB??
          假設(shè)?ESB?集線器,它是否有可能存在瓶頸問(wèn)題??
          ESB?中?是什么,ESB?上?是什么??
          在嘗試回答這些問(wèn)題之前,先為您提供一項(xiàng)關(guān)鍵資源,該資源很好地解釋了?IBM?對(duì)?SOA?編程模型上下文中的?ESB?的看法:IBM?企業(yè)服務(wù)總線介紹。?

          回答上述問(wèn)題涉及到整個(gè)系列文章,因此我在這里僅提供一些主要解答要點(diǎn),讓您有個(gè)初步了解;它們分別是:

          企業(yè)服務(wù)總線是一種體系結(jié)構(gòu)模式。產(chǎn)品可以方便創(chuàng)建該模式的特定實(shí)例。?
          ESB?的關(guān)鍵特性是分離關(guān)注點(diǎn)。像通信協(xié)議差異、路由和審核交互、安全性之類的內(nèi)容可以在實(shí)際的服務(wù)請(qǐng)求程序和提供程序之外處理。如果不使用此分離方法就能夠開(kāi)始您的解決方案,則不需要立即使用?ESB。不過(guò),在大多數(shù)項(xiàng)目中都不會(huì)出現(xiàn)這種情況。?
          ESB?是一種概念上的集線器,在幾乎所有實(shí)例中都以分布式方式物理地部署。?
          盡管這有時(shí)很難說(shuō)清楚(而且通常由您使用的產(chǎn)品驅(qū)動(dòng)),但談?wù)摰囊粋€(gè)較好切入點(diǎn)是考慮基礎(chǔ)結(jié)構(gòu)?邏輯和業(yè)務(wù)?邏輯。與基礎(chǔ)結(jié)構(gòu)相關(guān)的內(nèi)容在總線中發(fā)生,而與業(yè)務(wù)相關(guān)的內(nèi)容則不是。?
          而且,我不主張這些簡(jiǎn)單的解答就是對(duì)該主題的正當(dāng)解釋,但它們也許為您的理解提供一些幫助。

          7.?標(biāo)頭和其他上下文數(shù)據(jù)

          Web?服務(wù)設(shè)計(jì)的一個(gè)關(guān)鍵部分是定義進(jìn)出服務(wù)的消息。可以保險(xiǎn)地說(shuō)消息始終有兩個(gè)關(guān)鍵部分:與業(yè)務(wù)功能相關(guān)的實(shí)際負(fù)載和上下文數(shù)據(jù)(如消息?ID、事務(wù)或會(huì)話?ID、安全信息等)。每個(gè)消息協(xié)議都為此上下文信息(SOAP?標(biāo)頭、JMS?標(biāo)頭、WebSphere“工作區(qū)”等)提供一個(gè)位置。問(wèn)題是沒(méi)有一個(gè)一致的方法或?API?來(lái)處理這些不同的機(jī)制,而且在大多數(shù)實(shí)際的?SOA?環(huán)境中,您會(huì)遇到多個(gè)消息傳遞協(xié)議。

          最適于您處理這種不同、而且實(shí)際上可讓您將一個(gè)標(biāo)頭結(jié)構(gòu)映射到另一個(gè)結(jié)構(gòu)的位置是?ESB(這是使用?ESB?的又一好處;下文至少還會(huì)提供一個(gè)這樣的示例)。此映射很可能需要一些手工工作。?

          無(wú)論您是如何處理的,關(guān)鍵是要為其盡早規(guī)劃和設(shè)計(jì)一個(gè)策略,并盡量在您的所有項(xiàng)目中保持一致。

          8.?最終需要使用多少?(Web)?服務(wù)?

          我對(duì)該問(wèn)題的第一反應(yīng)始終是建議采用一種方法,以便在確定服務(wù)的過(guò)程中作為指導(dǎo)。其中一個(gè)這樣的示例是由?IBM?全球業(yè)務(wù)服務(wù)部提倡的面向服務(wù)的建模和體系結(jié)構(gòu)?(SOMA)?方法。與?IBM?Rational&reg;?Unified?Process?(RUP)?聯(lián)合在一起通常可促使您使用?SOA?的方法。

          第二,不要因?yàn)槟軌虬b而將每項(xiàng)?IT?功能都包裝在?Web?服務(wù)中。有時(shí)會(huì)使您對(duì)此采用整個(gè)“自下而上”的方法并使用富工具支持。在大多數(shù)(甚至是所有)情況下,采用此方法會(huì)導(dǎo)致服務(wù)太多,分得太細(xì),沒(méi)有重用而且與業(yè)務(wù)不相關(guān)。

          而且,對(duì)此也沒(méi)有很好的方法!業(yè)務(wù)分析師和?IT?架構(gòu)師以適當(dāng)?shù)募?xì)分級(jí)別定義和創(chuàng)建適當(dāng)?shù)姆?wù)相當(dāng)不容易。

          9.?作為?Web?服務(wù)使用者的遺留應(yīng)用程序

          我們對(duì)通過(guò)?Web?服務(wù)支持現(xiàn)有功能給予了較多的關(guān)注。我所了解到的談?wù)摰帽容^少(即使也同等重要)的是現(xiàn)有應(yīng)用程序利用新服務(wù)的能力。例如,假設(shè)公司在對(duì)?SOA?采用發(fā)展的方法,隨著時(shí)間的推移創(chuàng)建新服務(wù),并將它們集成到現(xiàn)有環(huán)境中。其中一個(gè)現(xiàn)有應(yīng)用程序是使用?RPG?編寫(xiě)的,并運(yùn)行于?IBM?iSeries?系統(tǒng)。現(xiàn)在需要將此應(yīng)用程序更改為調(diào)用其中一個(gè)新服務(wù)。但負(fù)責(zé)此系統(tǒng)的開(kāi)發(fā)人員對(duì)?SOAP?或?XML?不太熟悉,而且沒(méi)有基于?RPG?的?Web?服務(wù)包。

          對(duì)此問(wèn)題的最通用的解決方法是將?SOAP?和?XML?處理委托給?ESB。例如,使用?COBOL?或?RPG?編寫(xiě)的應(yīng)用程序可以容易地與?WebSphere?MQ?隊(duì)列交換記錄格式的消息。已經(jīng)建立了對(duì)這種方法的很好支持,而且已經(jīng)并且經(jīng)常使用。像?WebSphere?ESB?或?WebSphere?Message?Broker?之類?ESB?產(chǎn)品可以從?MQ?接收數(shù)據(jù),將其轉(zhuǎn)換為?XML,然后處理新?Web?服務(wù)的調(diào)用。

          換句話說(shuō),通常較為可取的方法是,將新服務(wù)對(duì)現(xiàn)有應(yīng)用程序的影響保持在最低限度,并將協(xié)議和消息格式的細(xì)節(jié)委托給?ESB。

          10.?“困難在于具體實(shí)施”

          最近,我訪問(wèn)了法國(guó)的?IBM?工業(yè)解決方案中心。該中心展示了針對(duì)不同行業(yè)(如零售業(yè)、衛(wèi)生保健業(yè)或銀行業(yè))的基于?IBM?的解決方案。展示人員并沒(méi)有提及任何特定的?IT?產(chǎn)品,而且重點(diǎn)說(shuō)明了解決方案的實(shí)際(業(yè)務(wù))功能。但是他不經(jīng)意地指出一點(diǎn):“當(dāng)然,您在這里看到的一切都基于?SOA”。盡管我認(rèn)為他不是太關(guān)注如何針對(duì)異步交互在多個(gè)協(xié)議之間維護(hù)?WS-Addressing?標(biāo)頭。

          不過(guò),構(gòu)建、設(shè)計(jì)和實(shí)現(xiàn)?Web?服務(wù)和?SOA?會(huì)帶來(lái)許多詳細(xì)的?IT?技術(shù)問(wèn)題。我們?cè)谑褂眯聵?biāo)準(zhǔn)、新編程模型,而且經(jīng)常使用新產(chǎn)品。創(chuàng)建支持諸如異類平臺(tái)之間交互的應(yīng)用程序、企業(yè)范圍重用?IT?服務(wù)并按業(yè)務(wù)線需求不斷更改系統(tǒng)的功能要求,通常會(huì)導(dǎo)致不可預(yù)見(jiàn)的問(wèn)題。

          因此,下次您的經(jīng)理進(jìn)入您的辦公室說(shuō):“我希望構(gòu)建一個(gè)每個(gè)人都說(shuō)非常容易做到的這種?SOA?解決方案”時(shí),您可以按照我的同事?Greg?Flurry?這時(shí)愛(ài)講的一句話說(shuō):“困難在于具體實(shí)施!”


          參考資料?

          您可以參閱本文在?developerWorks?全球站點(diǎn)上的?英文原文?。
          我應(yīng)該采用哪一種?WSDL?樣式?
          Web?服務(wù)技巧:?將多態(tài)性作為?xsd:choice?的備選方法
          Web?服務(wù)自定義數(shù)據(jù)綁定——第?1?部分:?如何為?Web?服務(wù)選擇一種自定義映射技術(shù)
          Web?服務(wù)尋址(WS-Addressing)對(duì)?SOAP?的隱式影響
          用于實(shí)現(xiàn)?Web?服務(wù)的?SOA?編程模型,第?4?部分:?IBM?企業(yè)服務(wù)總線介紹

          關(guān)于作者

          ??Andre?Tost?是?Software?Group?的?Enterprise?Integration?Solutions?組織的一名高級(jí)技術(shù)人員,他在這個(gè)部門(mén)幫助?IBM?的客戶建立面向服務(wù)的體系結(jié)構(gòu)。他專長(zhǎng)于?Web?服務(wù)技術(shù)。在開(kāi)始從事目前的工作之前,他有十年的時(shí)間在?IBM?軟件開(kāi)發(fā)工作中擔(dān)任各種合作伙伴啟動(dòng)、開(kāi)發(fā)和構(gòu)架的角色,目前他在?WebSphere?Business?Development?小組工作。他出生于德國(guó),目前在美國(guó)明尼蘇達(dá)州的羅徹斯特居住和工作。在業(yè)余時(shí)間,他喜歡和家人在一起,并且有空就去踢球或看球賽。

          點(diǎn)擊查看原文地址:http://www-128.ibm.com/developerworks/cn/websphere/techjournal/0608_col_tost/0608_col_tost.html?ca=drs-

          posted on 2006-11-22 09:39 matthew 閱讀(315) 評(píng)論(0)  編輯  收藏 所屬分類: Web Services and SOA
          主站蜘蛛池模板: 清苑县| 天台县| 鄂伦春自治旗| 新兴县| 新宾| 绥棱县| 浪卡子县| 兰考县| 久治县| 封开县| 于田县| 仙居县| 会理县| 和田市| 康保县| 高平市| 潜山县| 台前县| 丰都县| 屏东市| 凤山市| 定安县| 错那县| 巴青县| 云南省| 陆河县| 陆川县| 洪江市| 龙泉市| 彩票| 宣汉县| 镇平县| 伊吾县| 色达县| 青冈县| 新野县| 甘谷县| 柏乡县| 楚雄市| 历史| 虎林市|