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

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

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

    隨筆-128  評(píng)論-55  文章-5  trackbacks-0

                               Web 服務(wù)簡(jiǎn)介

     

    在網(wǎng)絡(luò)飛速發(fā)展的今天,每個(gè)組織都面臨著同樣一個(gè)挑戰(zhàn):在平衡核心能力和已有應(yīng)用程序時(shí)創(chuàng)建同構(gòu)的環(huán)境。IT需要一個(gè)簡(jiǎn)單的,與平臺(tái)無(wú)關(guān)的應(yīng)用程序間通信方式。在這種需求下產(chǎn)生了Web服務(wù),它是一類可以從Internet上獲取的服務(wù)的總稱,它使用標(biāo)準(zhǔn)的XML消息接發(fā)系統(tǒng),并且不受任何操作系統(tǒng)和編程語(yǔ)言的約束。在過(guò)去的三年中,出現(xiàn)了三種作為全球標(biāo)準(zhǔn)的主要技術(shù):SOAP,WSDL和UDDI。它們構(gòu)成了今天Web服務(wù)技術(shù)的核心。然而所有Web服務(wù)協(xié)議和新技術(shù)都是以XML作為其數(shù)據(jù)表示層的,XML消除了協(xié)議特有的網(wǎng)絡(luò),操作系統(tǒng)以及平臺(tái)綁定限制,因此XML是所有Web服務(wù)的基礎(chǔ)。

    1. XML Extensible Markup Language

    1.1 XML

    HTML的誕生使得Web發(fā)布變得非常簡(jiǎn)單,但是HTML存在很大的局限性,由于標(biāo)準(zhǔn)的標(biāo)記已經(jīng)由W3C預(yù)先確定,所以在描述復(fù)雜文檔時(shí)HTML就顯得力不從心。并且HTML是面向描述的,而非面向?qū)ο蟮模虼薍TML不會(huì)給出內(nèi)容的含義。為了解決這些問(wèn)題,W3C開始尋找答案,這就是XML。

    XML是可擴(kuò)展的,我們可以創(chuàng)建自定義元素以滿足創(chuàng)作的需要。XML同時(shí)也是可結(jié)構(gòu)化的。我們可以檢查XML文檔的語(yǔ)法,從而避免大量錯(cuò)誤的XML文檔在Internet上流傳。這便是DTD。

    1.2 DTD

    DTD(文檔類型定義)可以看作是標(biāo)記語(yǔ)言的語(yǔ)法文件,它是一套定義XML標(biāo)記如何使用的規(guī)則,DTD定義了元素,元素的屬性和取值,以及哪個(gè)元素可以被包含在另一個(gè)元素中的說(shuō)明。DTD還可以定義實(shí)體。XML解析器可以使用DTD文件來(lái)解析XML文檔。DTD使得我們能夠發(fā)布文檔以供其他人共享。一個(gè)擁有DTD參考文件的XML文檔稱為一個(gè)有效的XML文檔。

    然而由于XML DTD并不能完全滿足XML自動(dòng)化處理的要求,例如不能很好實(shí)現(xiàn)應(yīng)用程序不同模塊間的相互協(xié)調(diào),缺乏對(duì)文檔結(jié)構(gòu)、屬性、數(shù)據(jù)類型等約束的足夠描述等等,所以W3C于2001年5月正式推薦XML Schema為XML 的標(biāo)準(zhǔn)模式。顯然,W3C希望以XML Schema來(lái)作為XML模式描述語(yǔ)言的主流,并逐漸代替XML DTD。

    1.3 XML Schema

    XML Schema與XML DTD有很大的區(qū)別。XML Schema事實(shí)上是XML的一種應(yīng)用,也就是說(shuō)XML Schema的格式與XML的格式是完全相同的,而作為SGML DTD的一個(gè)子集,XML DTD具有著與XML格式完全不同的格式。這種區(qū)別給XML Schema的使用帶來(lái)了很多好處。如:XML語(yǔ)法分析器可以直接的應(yīng)用到XML Schema,而不需要修改。另外作為XML的一個(gè)應(yīng)用,XML Schema理所當(dāng)然的繼承了XML的自描述性和可擴(kuò)展性,這使得XML Schema 更具有可讀性和靈活性。同時(shí)由于格式完全與XML一樣,XML Schema除了可以像XML一樣處理外,也可以同它所描述的XML文檔以同樣的方式存儲(chǔ)在一起,方便管理。

    1.4 DOM

    另外,為了更好的訪問(wèn)XML文檔,我們需要用到文檔對(duì)象模型DOM(Document Object Model),DOM事實(shí)上就是采用樹狀對(duì)象集合的方式訪問(wèn)給定文檔內(nèi)容的抽象規(guī)范。DOM對(duì)象庫(kù)可以讓我們?cè)趦?nèi)存中構(gòu)建XML語(yǔ)法樹,從而提供了更有效的方法來(lái)增加文檔、定位文檔結(jié)構(gòu)、填加,修改和刪除文檔元素。

    有了以上這些規(guī)范,XML已經(jīng)為我們?cè)诰W(wǎng)絡(luò)上傳輸數(shù)據(jù)提供了一個(gè)規(guī)范的結(jié)構(gòu)。XML-RPC技術(shù)就為通過(guò)網(wǎng)絡(luò)的方法或函數(shù)調(diào)用提供了基于XML和HTTP的機(jī)制。XML-RPC允許程序通過(guò)網(wǎng)絡(luò)調(diào)用函數(shù)或過(guò)程。它只用了很少的XML詞匯描述請(qǐng)求和響應(yīng)的屬性,用HTTP協(xié)議將信息從客戶端傳遞給服務(wù)器??蛻舳嗽赬ML請(qǐng)求中指定過(guò)程名和參數(shù),服務(wù)器在XML響應(yīng)中返回一個(gè)錯(cuò)誤或響應(yīng)。當(dāng)然對(duì)于普遍運(yùn)用對(duì)象的編程領(lǐng)域,XML-RPC對(duì)于許多應(yīng)用程序來(lái)說(shuō)似乎太受限制了。但當(dāng)我們需要集成不同類型的系統(tǒng)時(shí),XML-RPC固有的簡(jiǎn)潔性優(yōu)勢(shì)便能體現(xiàn)出來(lái)。在我們建立公共服務(wù)時(shí),可以用XML-RPC來(lái)定義接口,并且選擇一種語(yǔ)言來(lái)實(shí)現(xiàn)它,這樣一旦服務(wù)在Web上發(fā)布,任何具有XML-RPC能力的客戶端就能連上它。而且在建立分布式系統(tǒng)時(shí),也可以用XML-RPC作為粘貼碼來(lái)連接內(nèi)部網(wǎng)絡(luò)中的不同部分。因此,雖然XML-RPC很簡(jiǎn)單,但簡(jiǎn)單的工具有創(chuàng)造力的應(yīng)用可以構(gòu)建復(fù)雜而功能強(qiáng)大的體系結(jié)構(gòu)。當(dāng)各種各樣的系統(tǒng)需要通信時(shí),XML-RPC可能是最合適的最低標(biāo)準(zhǔn)。

    2. SOAPSimple Object Access Protocol

    2.1 SOAP

         SOAP是一種基于XML的,用于計(jì)算機(jī)之間交換信息的協(xié)議。SOAP能應(yīng)用于各種消息接發(fā)系統(tǒng),并能通過(guò)各種傳輸協(xié)議進(jìn)行傳遞,但最初的側(cè)重點(diǎn)是通過(guò)HTTP傳輸?shù)倪h(yuǎn)程過(guò)程調(diào)用。因此,SOAP能使客戶應(yīng)用程序和容易的連接遠(yuǎn)程服務(wù)并調(diào)用遠(yuǎn)程方法。

    SOAP規(guī)范主要定義了四個(gè)元素:SOAP信封規(guī)范,傳輸和協(xié)議綁定,編碼規(guī)則和一個(gè)RPC協(xié)定。

    n         SOAP信封規(guī)范,SOAP信封規(guī)范對(duì)計(jì)算機(jī)間傳遞的數(shù)據(jù)如何封裝定義了具體的規(guī)則。這包括應(yīng)用特定的數(shù)據(jù),如要調(diào)用的方法名,方法參數(shù)和返回值;還包括誰(shuí)將處理封裝內(nèi)容,失敗時(shí)如何編碼錯(cuò)誤消息等信息。

    n         數(shù)據(jù)編碼規(guī)則,為了交換數(shù)據(jù),計(jì)算機(jī)必須在編碼特定數(shù)據(jù)類型的規(guī)則上達(dá)成一致,SOAP也有自己的一套編碼數(shù)據(jù)類型的約定。大部分約定都基于W3C XML Schema規(guī)范。

    n         RPC協(xié)定,SOAP能用于單向和雙向等各種消息接發(fā)系統(tǒng)。SOAP為雙向消息接發(fā)定義了一個(gè)簡(jiǎn)單的協(xié)定來(lái)進(jìn)行遠(yuǎn)程過(guò)程調(diào)用和響應(yīng),這使得客戶端應(yīng)用可以指定遠(yuǎn)程方法名,獲取任意多個(gè)參數(shù)并接受來(lái)自服務(wù)器的響應(yīng)。

    n         傳輸和協(xié)議綁定,提供了更底層協(xié)議傳輸SOAP封套的一套通用機(jī)制。

    源自客戶端的請(qǐng)求或來(lái)自服務(wù)器的響應(yīng)是一個(gè)單向消息,稱為SOAP消息。每個(gè)消息都有一個(gè)強(qiáng)制性的Envelope元素,一個(gè)可選的Header元素和一個(gè)強(qiáng)制性的Body元素。SOAP請(qǐng)求必須包括要調(diào)用的方法名和所有必須的參數(shù)。其次還需要定義若干個(gè)命名空間,用于區(qū)分XML元素和屬性,或用于引用外部模式。SOAP響應(yīng)與SOAP請(qǐng)求相類似。

    XML和SOAP能夠很好的描述數(shù)據(jù),但許多應(yīng)用程序的數(shù)據(jù)并不適合用XML來(lái)描述,比如圖像的二進(jìn)制數(shù)據(jù)。這時(shí)候就需要SWA(Soap With Attachments)來(lái)解決問(wèn)題。SWA將SOAP協(xié)議和MIME格式組合在一起,從而使SOAP消息中可以包含任意想要的數(shù)據(jù)。

    2.2 SOAP-RPC

    SOAP-RPC使用SOAP底層結(jié)構(gòu)定義了一個(gè)用來(lái)表示RPC以及RPC響應(yīng)的模型。它并不要求一定要緊緊綁定一個(gè)同步的請(qǐng)求/響應(yīng)模型或者一個(gè)HTTP協(xié)議。實(shí)際上SOAP-RPC的使用和協(xié)議的綁定是無(wú)關(guān)的。因此重要的是SOAP定義了一個(gè)統(tǒng)一的模型,來(lái)表示RPC及其一個(gè)或多個(gè)返回值。SOAP還提供了對(duì)方法簽名,頭數(shù)據(jù)和代表目的地的URI進(jìn)行編碼的方法。所以SOAP-RPC比XML-RPC更加復(fù)雜,功能也更加強(qiáng)大。

    3. WSDLWeb Services Description Language

    WSDL是一種將Web服務(wù)描述為一系列訪問(wèn)端點(diǎn)的XML文法,這些端點(diǎn)具有以面向過(guò)程或者面向文檔的方式交換信息的能力。WSDL描述了四種關(guān)鍵的數(shù)據(jù):

    n         描述所有公用函數(shù)的接口信息。

    n         所有消息請(qǐng)求和消息響應(yīng)的數(shù)據(jù)類型消息。

    n         所使用的傳輸協(xié)議的綁定信息。

    n         用來(lái)定位指定服務(wù)的地址信息。

    總之,WSDL在服務(wù)請(qǐng)求者和服務(wù)提供者之間提供了一個(gè)協(xié)議,主要用于描述SOAP服務(wù)。WSDL本身使用的是XML語(yǔ)法,可以分為六個(gè)主要的元素:

    n         definitions :必須是所有WSDL文檔的根元素。它定義了Web服務(wù)的名稱,聲明文檔其他部分使用的多個(gè)名稱空間,并包含所有服務(wù)元素。

    n         types :描述在客戶端和服務(wù)器之間使用的所有數(shù)據(jù)類型。

    n         message :描述一個(gè)單向信息,定義消息的名稱,可以包含零個(gè)或多個(gè)的引用消息參數(shù)或消息返回值的消息part元素。

    n         portType : 結(jié)合多個(gè)message元素,形成一個(gè)完美的單向或往返操作。

    n         binding : 描述了在Internet上實(shí)現(xiàn)服務(wù)的具體細(xì)節(jié)。

    n         service : 用于定義調(diào)用指定服務(wù)的地址。一般包含調(diào)用SOAP服務(wù)的URL。

    4.         UDDIUniversal Description ,Discovery and Integration

    UDDI是一個(gè)描述,發(fā)現(xiàn)和連接Web服務(wù)的技術(shù)規(guī)范。有了UDDI,公司不但可以發(fā)布Web服務(wù),還能查找Web服務(wù)。UDDI的核心由兩部分組成。第一,UDDI是一個(gè)建立業(yè)務(wù)和Web服務(wù)的分布式目錄的技術(shù)規(guī)范。數(shù)據(jù)存儲(chǔ)在特定的XML格式中,UDDI規(guī)范包括搜索已有數(shù)據(jù)和發(fā)布新數(shù)據(jù)的API細(xì)節(jié)。第二,UDDI業(yè)務(wù)注冊(cè)中心是UDDI規(guī)范的一個(gè)完全操作實(shí)現(xiàn)。

    n         UDDI的技術(shù)體系結(jié)構(gòu)由三部分組成:

    n         UDDI數(shù)據(jù)模型 :一個(gè)描述業(yè)務(wù)和Web服務(wù)的XML Schema。

    n         UDDI API :一個(gè)用于搜索和發(fā)布UDDI數(shù)據(jù)的,基于SOAP的API。

    n         UDDI 服務(wù)群 :一個(gè)提供UDDI規(guī)范實(shí)現(xiàn)的根據(jù)預(yù)定基礎(chǔ)使所與數(shù)據(jù)同步的操作入口站點(diǎn)。

    綜上所述,以上的后三種技術(shù)以及傳輸協(xié)定組成了一個(gè)完整的Web服務(wù)的四個(gè)層面,自上而下分別為:

    n         發(fā)現(xiàn) ------------------------------ UDDI

    n         描述 ------------------------------ WSDL

    n         XML消息接發(fā) ----------------------- XML-RPC,SOAP,XML

    n         傳輸 ------------------------------- HTTP,SMTP,F(xiàn)TP,BEEP

        這些技術(shù)使得Web服務(wù)實(shí)現(xiàn)了 基于XML,松散耦合,粗粒度,同步或異步能力,支持遠(yuǎn)程過(guò)程調(diào)用和支持文檔交換等特性,從而讓W(xué)eb服務(wù)得到了更廣泛的應(yīng)用。



    Author: orangelizq
    email: orangelizq@163.com

    歡迎大家訪問(wèn)我的個(gè)人網(wǎng)站 萌萌的IT人
    posted on 2007-09-30 10:00 桔子汁 閱讀(934) 評(píng)論(0)  編輯  收藏 所屬分類: WebService 技術(shù)

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 一级中文字幕乱码免费| 最近的中文字幕大全免费版 | 青青青国产手机频在线免费观看| 亚洲精品无码不卡在线播放| 亚洲电影一区二区| 亚洲中文字幕视频国产| 国产高清免费的视频| 免费精品国偷自产在线在线| 麻豆成人久久精品二区三区免费| 成人免费av一区二区三区| 男人扒开添女人下部免费视频| 在线亚洲午夜片AV大片| 亚洲精品综合久久中文字幕 | 国产午夜精品理论片免费观看| 午夜亚洲乱码伦小说区69堂| 亚洲一卡2卡3卡4卡乱码 在线| 老司机亚洲精品影院| 亚洲av综合av一区| 亚洲热妇无码AV在线播放| 亚洲国产电影av在线网址| 免费人成在线观看播放国产| 免费无遮挡无码视频网站| 日韩精品无码区免费专区| 无码专区永久免费AV网站 | 亚洲人成在线中文字幕| 亚洲美女人黄网成人女| 亚洲成a人片在线观看中文动漫| 亚洲精品成人无码中文毛片不卡| 国产亚洲精品AA片在线观看不加载| 亚洲国产成人久久一区WWW| 全部免费a级毛片| 亚洲成av人在片观看| 亚洲人成无码网站久久99热国产| 国产免费人视频在线观看免费| 国产成人免费福利网站| 免费观看国产精品| 亚洲高清无码综合性爱视频| 亚洲女人被黑人巨大进入| 亚洲情a成黄在线观看| 亚洲精品无码MV在线观看| 亚洲国产精品一区二区久久hs |