<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Junky's IT Notebook

    統(tǒng)計(jì)

    留言簿(8)

    積分與排名

    WebSphere Studio

    閱讀排行榜

    評(píng)論排行榜

    Web Services帶來了什么

    作者:王昱

    摘要:本文介紹了Web Services的起源和基本原理,分析了在企業(yè)應(yīng)用中Web Services帶來的沖擊和變革,指出了Web Services的一些優(yōu)缺點(diǎn)以及如何正確地應(yīng)用Web Services.

    無論是在計(jì)算機(jī)雜志還是在Internet上,目前最熱門的話題莫過于“Web Services”。各個(gè)平臺(tái)之間的鋒爭,各個(gè)新產(chǎn)品的發(fā)布,眾多新標(biāo)準(zhǔn)的制訂,大都和Web Services有關(guān)。

    我的一些朋友是這樣的一些人,他們總是用著最新的平臺(tái),嘗試著最新的技術(shù),他們喜歡變化,喜歡流行,用他們自己的話說,新技術(shù)創(chuàng)造新生活!可是,當(dāng)我的一個(gè)朋友,帶領(lǐng)他們一個(gè)部門的開發(fā)人員,花了兩個(gè)月的,將他們內(nèi)部的管理系統(tǒng)用Web Services重新設(shè)計(jì)和實(shí)現(xiàn)了一遍,卻發(fā)現(xiàn)在實(shí)際使用的情況下,系統(tǒng)性能非常糟糕。他提出了這樣一個(gè)問題:是不是Web Services現(xiàn)在還處于實(shí)驗(yàn)和市場炒作時(shí)期,根本沒有進(jìn)入實(shí)用的階段?簡單的回答是:Web Services不是萬能的,它有它的應(yīng)用范圍和優(yōu)勢劣勢。

    Web Services的起源

    Web應(yīng)用的巨大成功和不斷發(fā)展,使其滲透到商業(yè)領(lǐng)域和個(gè)人生活的各個(gè)方面。人們只要使用瀏覽器,就可以享受到各種各樣的Web服務(wù),例如網(wǎng)上購物,網(wǎng)上交易,網(wǎng)絡(luò)游戲,預(yù)定車票,網(wǎng)上聊天和交友等等。與此同時(shí),由于Web技術(shù)所帶來的優(yōu)勢(統(tǒng)一的客戶端和較好的維護(hù)性),使一些傳統(tǒng)的應(yīng)用紛紛轉(zhuǎn)型到BS結(jié)構(gòu)上。

    然而,在發(fā)展中,逐步暴露了一些問題。所有這些Web頁面都是為人準(zhǔn)備的,是讓人去閱讀,去輸入,去判斷。因此各種反映視覺效果的內(nèi)容占用了大量的網(wǎng)絡(luò)帶寬,例如各種圖片,字體信息,文字排版樣式等。而真正含有高價(jià)值的一些信息,被深深埋在這些顯示信息中,很難被其他應(yīng)用和程序所使用。更重要的是,各種web服務(wù)之間缺少交互和通訊的機(jī)制。

    程序之間的互相通訊很重要嗎?簡單舉一個(gè)例子。

    假設(shè)你經(jīng)常去國外出差,在你回國以后,第一件事就是費(fèi)用報(bào)銷了。而你們公司有這樣的財(cái)務(wù)規(guī)定,所有的報(bào)銷款,都按報(bào)銷當(dāng)天的外匯比價(jià)進(jìn)行結(jié)算。因此在你填寫報(bào)銷單的時(shí)候必須先填寫每一筆在各個(gè)國家的花消,然后上網(wǎng)查出當(dāng)天的外匯比價(jià),填寫到報(bào)銷單上。剩下的事情也許不用你做了,你的報(bào)銷單填寫工具會(huì)自動(dòng)進(jìn)行換算和統(tǒng)計(jì)。

    覺得有什么不妥嗎?作為IT公司的員工,也許都有一個(gè)特點(diǎn),計(jì)算機(jī)能做的事情,盡量要計(jì)算機(jī)去做。外匯比價(jià)的查詢可以讓計(jì)算機(jī)自動(dòng)去做嘛!然而,讓你的程序自動(dòng)去網(wǎng)頁上查找指定的外匯比價(jià)可不是一件容易的事。因?yàn)檫@些網(wǎng)頁是給人閱讀的,人眼和大腦的反應(yīng)速度有多快,它們可以從一整頁信息中快速定位到你所要的內(nèi)容,而且無論網(wǎng)頁怎樣變化和改版都不會(huì)帶來太大的影響。而應(yīng)用程序想要做同樣的事就差得太遠(yuǎn)了。因此,現(xiàn)在需要的是專門為應(yīng)用程序制定的Web服務(wù)。

    隨著應(yīng)用程序之間通訊的需求越來越大,這就需要制定統(tǒng)一的標(biāo)準(zhǔn)和協(xié)議。HP公司是最先提出這個(gè)觀點(diǎn)的公司,他們制定了有關(guān)“e-Speak”的標(biāo)準(zhǔn)來保證應(yīng)用程序之間的交互,并聲稱將成為下一代Internet信息交互的標(biāo)準(zhǔn)。而隨后,MicroSoft意識(shí)到此計(jì)劃的美好前景,便推出了.Net戰(zhàn)略;IBM很快就發(fā)布了Web Services Toolkit(WSTK),和Web Services Development Environment(WSDE),申明對(duì)Web Services的全力支持。與此同時(shí),Oracle也開發(fā)出自己的Dynamic Services,并和Oracle 8i Release 2集成在一起。在這以后,W3C統(tǒng)一制定了Web Services的各種標(biāo)準(zhǔn)。而SUN公司在宣布了自己的Web Services的框架以后,將Web Services的標(biāo)準(zhǔn)溶入J2EE的環(huán)境,使Web Services有了廣泛支持的基礎(chǔ)和平臺(tái)。

    Web Services的基本原理

    Web Services 是通過一系列標(biāo)準(zhǔn)和協(xié)議來保證程序之間的動(dòng)態(tài)連接。其中最基本的協(xié)議包括:SOAP, WSDL, UDDI

    • SOAP: 是“Simple Object Access Protocol”的縮寫,SOAP是消息傳遞的協(xié)議,它規(guī)定了Web Services之間是怎樣傳遞信息的。簡單的說,SOAP規(guī)定了:
      1.
      傳遞信息的格式為XML。這就使Web Services能夠在任何平臺(tái)上,用任何語言進(jìn)行實(shí)現(xiàn)。
      2.
      遠(yuǎn)程對(duì)象方法調(diào)用的格式。規(guī)定了怎樣表示被調(diào)用對(duì)象以及調(diào)用的方法名稱和參數(shù)類型等。
      3.
      參數(shù)類型和XML格式之間的映射。這是因?yàn)椋徽{(diào)用的方法有時(shí)候需要傳遞一個(gè)復(fù)雜的參數(shù),例如,一個(gè)Person對(duì)象。怎樣用XML來表示一個(gè)對(duì)象參數(shù),也是SOAP所定義的范圍。
      4.
      異常處理以及其他的相關(guān)信息.

    • WSDL:是“Web Services Description Language”的縮寫.意如其名,WSDLWeb Services的定義語言。當(dāng)你實(shí)現(xiàn)了某種服務(wù)的時(shí)候(,股票查詢服務(wù)),為了讓別的程序調(diào)用,你必須告訴大家你的服務(wù)的接口.例如,服務(wù)名稱,服務(wù)所在的機(jī)器名稱,監(jiān)聽端口號(hào),傳遞參數(shù)的類型,個(gè)數(shù)和順序,返回結(jié)果的類型等等.這樣別的應(yīng)用程序才能調(diào)用你的服務(wù)。WSDL協(xié)議就是規(guī)定了有關(guān)Web Services描述的標(biāo)準(zhǔn)。

    • UDDI: Universal Description, Discovery, and Integration的縮寫。簡單說,UDDI用于集中存放和查找WSDL描述文件,起著目錄服務(wù)器的作用。

    如上圖,一個(gè)Web Services的生命周期是:

    1. 實(shí)現(xiàn)一個(gè)Web Services,使其能夠接受和響應(yīng)SOAP消息(現(xiàn)在有很多工具都可以幫助實(shí)現(xiàn))。

    2. 撰寫一個(gè)WSDL文件用于描述此Web Services。(現(xiàn)在有很多工具可以自動(dòng)生成WSDL文件)。

    3. 將此WSDL發(fā)布到UDDI上。

    4. 其他的應(yīng)用程序(客戶端)從UDDI上搜索到你的WSDL

    5. 根據(jù)你的WSDL,客戶端可以編寫程序(現(xiàn)在有很多工具可以自動(dòng)生成調(diào)用程序)調(diào)用你的Web Services

    Web Services的缺點(diǎn)

    由于是基于XML的應(yīng)用,Web Services與生俱來地在擁有XML帶來的一切優(yōu)勢的同時(shí),不可避免地繼承了XML所帶來的一些限制。

    • Web Services通常需要大量的CPU資源。因?yàn)?/font>XML數(shù)據(jù)要經(jīng)過多步處理才能被系統(tǒng)使用。首先是效驗(yàn)(validate),檢查它的格式是否符合XML的規(guī)范,以及根據(jù)應(yīng)用程序定義(DTDSchema)檢查是否符合語義上的規(guī)范;然后還要進(jìn)行解析(parse),從XML文檔分解出單個(gè)的元素;最后還要轉(zhuǎn)換成應(yīng)用程序所需要的二進(jìn)制表達(dá)(例如,把“12” 轉(zhuǎn)換成整型12的二進(jìn)制表示)。

    • Web Services還意味著占用較多的內(nèi)存資源。在進(jìn)行XML解析的時(shí)候,會(huì)產(chǎn)生大量的臨時(shí)內(nèi)存對(duì)象。特別是在處理DOM對(duì)象的時(shí)候。這些大量的臨時(shí)對(duì)象對(duì)于象JAVA這類自動(dòng)回收內(nèi)存的語言和系統(tǒng)其實(shí)是一種負(fù)擔(dān),大量的臨時(shí)對(duì)象將會(huì)使系統(tǒng)每隔一段時(shí)間就會(huì)進(jìn)行內(nèi)存回收,從而降低系統(tǒng)的性能。當(dāng)然,現(xiàn)在有的Web Services的產(chǎn)品(如axis)采用了SAX技術(shù),大大減少了內(nèi)存的占用量。詳細(xì)信息請(qǐng)參考:(http://xml.apache.org/axis/index.html)。

    • 網(wǎng)絡(luò)資源的消耗也是Web Services應(yīng)用的一些限制。因?yàn)榛?/font>XML數(shù)據(jù)的傳遞通常數(shù)據(jù)量要比二進(jìn)制的協(xié)議(如RMI/IIOP)要大的多。這種額外的消耗在網(wǎng)絡(luò)資源比較緊張或網(wǎng)絡(luò)傳輸比較頻繁的應(yīng)用中會(huì)產(chǎn)生一定的影響。

    除了XML帶來的限制,Web Services本身也具有一些缺點(diǎn):

    • 到目前為止,Web Services還可以說是一種無狀態(tài)(stateless)的服務(wù)。
      所謂stateless就意味著不保存客戶端服務(wù)調(diào)用者的任何信息。這是由Web Services的本質(zhì)所決定的。Web Services在本質(zhì)上是要為應(yīng)用程序之間提供數(shù)據(jù)通訊的標(biāo)準(zhǔn),為企業(yè)應(yīng)用之間動(dòng)態(tài)地提供大顆粒度的服務(wù),所以Web Services并不適合于非常精細(xì)的基于會(huì)話的方法調(diào)用以及復(fù)雜的事務(wù)(transaction)處理之中。
      也許有人會(huì)對(duì)我這點(diǎn)提出異議!因?yàn)椋F(xiàn)在有很多Web Services的產(chǎn)品(如WASD),不但可以保存session的信息,使服務(wù)成為有狀態(tài)(stateful)的服務(wù),而且還實(shí)現(xiàn)了remote interface,可以在Web Services的會(huì)話中傳遞遠(yuǎn)程對(duì)象的句柄,讓客戶端可以操縱遞遠(yuǎn)程對(duì)象(詳細(xì)信息請(qǐng)參考:http://www.systinet.com )。原理上說,這并不難實(shí)現(xiàn),因?yàn)樵?/font>XML數(shù)據(jù)中,可以互相傳送任何數(shù)據(jù),包括sessionIDtransactionID,有了這些ID,從技術(shù)角度上說,實(shí)現(xiàn)有狀態(tài)(stateful)的服務(wù)和事務(wù)處理并不復(fù)雜。但是,這樣功能缺少標(biāo)準(zhǔn)的支持,當(dāng)前版本的WSDL還無法表示這些復(fù)雜的服務(wù)。在企業(yè)內(nèi)部,你可以任意使用這些特殊的功能,可以自己定義會(huì)話狀態(tài)的交互協(xié)議,因?yàn)榉?wù)者和服務(wù)調(diào)用者之間的通訊都在你的控制之中;然而要將這些服務(wù)發(fā)布到Internet上,其他的應(yīng)用程序是無法根據(jù)標(biāo)準(zhǔn)去識(shí)別這些特殊功能。

    • 數(shù)據(jù)綁定也存在一些不足。
      因?yàn)樗械臄?shù)據(jù)傳遞都用XML格式,因此,需要在二進(jìn)制數(shù)據(jù)和XML數(shù)據(jù)之間有個(gè)轉(zhuǎn)換。但是,并不是所有的二進(jìn)制數(shù)據(jù)都能方便地用XML來表示,并不是所有的JAVA對(duì)象都能被XML所表示。因此,經(jīng)常在轉(zhuǎn)換過程中會(huì)出現(xiàn)語義丟失的情況。

    • 技術(shù)要求高,學(xué)習(xí)曲線較長。
      每一個(gè)Web Services的產(chǎn)品,都有豐富的工具,能夠根據(jù)Web Services的定義(如WSDL文件)方便地生成客戶端的程序;能夠?qū)⒁话愕姆?wù)程序,很容易就包裝成Web Services服務(wù)。因此,各個(gè)Web Services的產(chǎn)品都聲稱自己的平臺(tái)容易使用,根本不需要了解XML,也不需要了解什么WSDLUDDISOAP就能使用發(fā)布Web Services。特別是一個(gè)朋友告訴我,他在什么都不了解的情況下,用.NET花了15分鐘就發(fā)布了一個(gè)Web Services
      千萬不要醉心于這種簡便,這對(duì)于簡單的Demo也許是對(duì)的,可是對(duì)于真正意義上嚴(yán)肅的應(yīng)用,一定要了解Web Services的各個(gè)方面,設(shè)計(jì)整體結(jié)構(gòu)和解決方案,還要根據(jù)具體的應(yīng)用調(diào)整性能。所有這些都需要對(duì)Web Services知識(shí)的全面掌握。

    什么應(yīng)用適合Web Services

    Web Services這么多的缺點(diǎn)是不是讓你很泄氣?其實(shí),已經(jīng)有很多成功的Web Services的應(yīng)用和越來越多的開發(fā)商的加盟,證明Web Services一定會(huì)成為新一代WEB信息通訊的主流。經(jīng)過不斷的發(fā)展,Web Services一定能克服自身的弱點(diǎn),得到更廣泛的應(yīng)用。但就目前來說,Web Services比較適合用于下列形式的應(yīng)用:

    • 基于WANInternet的應(yīng)用

    要在Internet上創(chuàng)建基于二進(jìn)制協(xié)議的RMI/IIOP的應(yīng)用,一般都會(huì)遇上一個(gè)大麻煩--防火墻。客戶端瀏覽器極大可能在ISP防火墻后,大多數(shù)防火墻都只能允許和外部的HTTP連接,因此想要ISP防火墻后的客戶端能和防火墻外的RMI/IIOP的應(yīng)用端口進(jìn)行連接的話,就要改變ISP的安全策略,讓客戶端能夠連接除了80以外的其他端口。可是當(dāng)運(yùn)行RMI/IIOP的應(yīng)用的服務(wù)器為了安全也在防火墻之后的DMZ中的話,那這個(gè)連接就更加復(fù)雜了,要跨越兩個(gè)防火墻。
    Web Services由于使用的是HTTP協(xié)議,傳遞的是純文本的XML數(shù)據(jù),因此擁有穿透防火墻的良好性能。

    • 基于異構(gòu)平臺(tái)的應(yīng)用

    XML語言本身就是跨平臺(tái)、跨語言的數(shù)據(jù)表示方法,在加上通用的HTTP等協(xié)議,使得Web Services天生就適用于基于異構(gòu)平臺(tái)的應(yīng)用。如果你的客戶端包含了各種不同的平臺(tái),例如,你希望你的服務(wù)即可以被JAVA程序所調(diào)用,又可以由VBCOM程序所調(diào)用。你有兩種選擇:一種是為不同的平臺(tái)提供相應(yīng)的API,還要為不同的語言提供API;如果提供Web Services,所有平臺(tái)和語言都可以調(diào)用了!

    • 需要強(qiáng)安全特性的應(yīng)用

    很多人都認(rèn)為,安全性是Web Services的弱項(xiàng)。其實(shí)不然,經(jīng)過不斷的完善和各種新的協(xié)議的出臺(tái),Web Services完全可以用于安全性很強(qiáng)的應(yīng)用環(huán)境下。并且,由于Web Services使用HTTP協(xié)議進(jìn)行傳輸,所以可以和容易就使用已經(jīng)很成熟的基于HTTP的各種安全技術(shù)。

    • EAI(企業(yè)應(yīng)用集成)
      這是目前Web Services應(yīng)用最看好的方向之一。大多數(shù)企業(yè)內(nèi)部都有著各種各樣的應(yīng)用系統(tǒng),它們是在不同的領(lǐng)導(dǎo)在任期間,由不同的軟件開發(fā)商開發(fā),因此運(yùn)行在不同的平臺(tái)和系統(tǒng)上,系統(tǒng)的開發(fā)語言也各不相同。由于現(xiàn)代企業(yè)信息自動(dòng)化要求的提高,各個(gè)系統(tǒng)之間的互動(dòng)和相互通訊便提到日程上。因此,保護(hù)原有投資,重用遺留系統(tǒng)是當(dāng)前很多中大型企業(yè)的重要任務(wù)。
      由于遺留系統(tǒng)的運(yùn)行平臺(tái)是異構(gòu)環(huán)境,因此企業(yè)應(yīng)用集成的代價(jià)一般來說是很高的。但如果使用Web Services作為應(yīng)用集成的手段,將會(huì)大大降低集成的消耗。Web Services與平臺(tái)和語言無關(guān)的特性,以及各種平臺(tái)和環(huán)境下的開發(fā)工具都是企業(yè)應(yīng)用集成的利器。
      另外,在開發(fā)新的應(yīng)用系統(tǒng)的時(shí)候,仍然需要考慮和其他系統(tǒng)的集成,需要考慮調(diào)用其他系統(tǒng)的功能,和被其他系統(tǒng)所調(diào)用。使用Web Services作為系統(tǒng)與外部交流的接口,能夠使新的系統(tǒng)和別的系統(tǒng)之間保持松耦合的關(guān)系,保持較高的可擴(kuò)展性。

    • 行業(yè)內(nèi)部B2B應(yīng)用
      行業(yè)內(nèi)部的應(yīng)用是Web Services的另外一個(gè)方向。因?yàn)樵谝粋€(gè)行業(yè)中,商業(yè)業(yè)務(wù)是很相似的,因此在行業(yè)內(nèi)部很容易形成服務(wù)的標(biāo)準(zhǔn),使所有的業(yè)內(nèi)企業(yè)共同遵守;但怎樣實(shí)現(xiàn)服務(wù)和使用什么樣的系統(tǒng),決定權(quán)在于各個(gè)企業(yè)自己。例如,電信運(yùn)營商之間的結(jié)算服務(wù),銀行之間的轉(zhuǎn)帳服務(wù)等都可以形成行業(yè)標(biāo)準(zhǔn),以WSDL的形式公布出來。各個(gè)企業(yè)之間可以選擇不同的平臺(tái)進(jìn)行服務(wù)的實(shí)現(xiàn)。

    提高Web Services的性能

    要想提高Web Services應(yīng)用的性能,需要對(duì)整個(gè)系統(tǒng)做全盤的考慮。一般來說,有以下幾點(diǎn)需要注意:

    1. Web Services的顆粒度
      選擇Web Services的顆粒度是提高Web Services應(yīng)用的性能的主要手段。因?yàn)?/span>Web Services使用的傳輸協(xié)議為HTTPSMTP等,這些協(xié)議都是面向無狀態(tài)的連接協(xié)議,每一個(gè)請(qǐng)求都要建立一個(gè)新的連接。因此Web Services的調(diào)用不能象數(shù)據(jù)庫JDBCODBC)接口一樣可以進(jìn)行精細(xì)而復(fù)雜的方法調(diào)用(例如,先獲得Connection,再獲得結(jié)果集,然后一行一行獲取結(jié)果)。Web Services比較適用于大顆粒度的應(yīng)用,在一個(gè)調(diào)用中便獲得所有的信息(比如說銀行之間的轉(zhuǎn)帳,在一次調(diào)用中就將包括金額和認(rèn)證等所有的信息都傳輸過去)。

    2. 謹(jǐn)慎使用XML接口
      系統(tǒng)之間的接口可以使用XML,這樣可以增加系統(tǒng)的靈活性;但不要使用XML作為系統(tǒng)內(nèi)部的接口,因?yàn)檫@不會(huì)帶來任何好處,盡量使用二進(jìn)制作為系統(tǒng)內(nèi)部的接口,避免不必要的XML文檔的解析和效驗(yàn);在處理XML的時(shí)候,盡快將XML轉(zhuǎn)換成內(nèi)部對(duì)象,XML的傳遞只會(huì)增加系統(tǒng)的開銷。

    3. 最大可能性使用CACHE
      當(dāng)有些信息是只讀的,或者在一段時(shí)間內(nèi)保持不變,就可以使用CACHE。無論是客戶端的CACHE還是服務(wù)器端的CACHE,都能大大提高系統(tǒng)的性能

    總結(jié)

    一旦Web Services得到更加廣泛的應(yīng)用,使得各種服務(wù)可以動(dòng)態(tài)查找和定位,這樣就提供了不同設(shè)備之間各種各樣的信息交互方式,將會(huì)大大改變商業(yè)運(yùn)做的模式和信息交流的風(fēng)格。

    你可以使用別人已經(jīng)成熟的功能來使自己提供更好的服務(wù),例如google,它的搜索引擎可以通過Web Services來訪問。這就意味著在你的系統(tǒng)中可以方便的嵌入使用google的強(qiáng)大搜索功能,而不論你的系統(tǒng)是運(yùn)行在什么平臺(tái)上,使google的搜索引擎成為你系統(tǒng)的一部分,(請(qǐng)參考http://www.google.com/apis/)。站在別人的肩膀上,畢竟要看得遠(yuǎn)些!

    面對(duì)Web Services你現(xiàn)在可以不行動(dòng),但你一定要準(zhǔn)備好!

    posted on 2007-05-22 13:43 junky 閱讀(291) 評(píng)論(0)  編輯  收藏 所屬分類: web

    主站蜘蛛池模板: 亚洲激情视频网站| 国产精品无码永久免费888| 四虎影视免费永久在线观看| 免费一级不卡毛片| 亚洲国产成人精品无码区花野真一| 久久精品亚洲综合一品| 又黄又大又爽免费视频| 无人在线观看完整免费版视频| a级毛片毛片免费观看久潮| 久久精品亚洲日本波多野结衣| 2022年亚洲午夜一区二区福利| 国产L精品国产亚洲区久久| 中文字幕无码视频手机免费看| 精品香蕉在线观看免费| 成人黄网站片免费视频| 免费在线观看一区| 亚洲欧美一区二区三区日产| 久久av无码专区亚洲av桃花岛| 亚洲亚洲人成综合网络| 免费h黄肉动漫在线观看| 亚洲成av人片不卡无码久久| 成人毛片免费观看视频| 永久在线观看www免费视频| 99麻豆久久久国产精品免费| 免费人成网站在线观看不卡| 精品一区二区三区免费毛片爱| 在线毛片片免费观看| 久久国产精品成人片免费| 4hu四虎最新免费地址| 午夜私人影院免费体验区| 日韩精品福利片午夜免费观着| 91久久成人免费| 99久久免费看国产精品| a色毛片免费视频| 免费播放一区二区三区| 美女视频黄a视频全免费| 亚洲视频免费播放| 日本一道本高清免费| 日韩视频免费一区二区三区| 免费在线观看你懂的| 亚洲AV无码久久精品蜜桃|