1 / 35

第 16 章 Web Service應用程式架構

第 16 章 Web Service應用程式架構. 16-1 Web Service 應用程式架構 16-2 SOAP 的基礎 16-3 HttpRequest 物件建立 SOAP 應用程式 16-4 WSDL 的基礎 16-5 Google 搜尋服務的 Web Service. 16-1 Web Service應用程式架構. Web Service 的基礎 Web Service 應用程式架構. Web Service 的基礎 -1. Web Service 屬於一種企業級的應用程式,可以透過 Internet 建立自動機制提供資料交換和工作分享等資源共享的功能。

Download Presentation

第 16 章 Web Service應用程式架構

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第16章 Web Service應用程式架構 • 16-1 Web Service應用程式架構 • 16-2 SOAP的基礎 • 16-3 HttpRequest物件建立SOAP應用程式 • 16-4 WSDL的基礎 • 16-5 Google搜尋服務的Web Service

  2. 16-1 Web Service應用程式架構 • Web Service的基礎 • Web Service應用程式架構

  3. Web Service的基礎-1 • Web Service屬於一種企業級的應用程式,可以透過Internet建立自動機制提供資料交換和工作分享等資源共享的功能。 • Web Service使用簡單和公開標準的協定,提供低成本的軟體整合和資料分享,它是一種可以在不同的作業系統,使用不同的程式語言開發的應用程式,能夠直接與位在不同位置的其它應用程式進行通訊和資料交換。

  4. Web Service的基礎-2 • Web Service應用程式提供一組通用服務,可以同時提供多個用戶端(Client)使用,這是一組使用XML格式作為傳遞訊息的函數呼叫,用戶端透過HTTP傳送函數呼叫給伺服端,伺服端以HTTP將結果傳回給用戶端,它提供用戶端更多的彈性,因為可以只使用所需的函數呼叫取得所需的資訊。

  5. Web Service應用程式架構-1 • Web Service基本上是提供一組通用的遠端函數呼叫(RPC,Remote Procedure Calls),為了用戶端和伺服端能夠依據相同的訊息格式和規格來傳遞資訊,我們需要一種標準的通訊協定,這就是「SOAP」(Simple Object Access Protocol),它是一種結合XML格式的訊息和HTTP協定的通訊協定,使用SOAP的Web Service應用程式架構。

  6. Web Service應用程式架構-2

  7. 16-2 SOAP的基礎 • 什麼是SOAP • SOAP訊息的基本語法 • SOAP訊息交換架構

  8. 什麼是SOAP-1 • 「SOAP」(Simple Object Access Protocol)是一種在分散系統交換資料的通訊協定,它屬於一種XML基礎的通訊協定,其傳送的資料就是XML元素的資料。 • SOAP屬於一種標準HTTP通訊協定的資料交換協定,由Microsoft、DevelopMentor、IBM、Lotus Development Corp.、HP、UserLand Software等公司所共同製定,SOAP 1.1規格屬於微軟Windows DNA 2000架構的主要元素,提供分散式應用程式系統開發的資料交換。

  9. 什麼是SOAP-2 • 目前Internet服務或瀏覽程式都是支援HTTP,分散式Internet應用程式雖然能夠使用「RPC」(Remote Procedure Calls)執行DCOM物件,但是HTTP通訊協定並不支援RPC,此時的SOAP通訊協定就可以解決這個問題,其特點如下所示: • SOAP是一種負載很輕的通訊協定,傳送的資料是文字內容的XML文件。 • SOAP屬於一種在應用程式間使用HTTP通訊協傳遞資料的協定。 • SOAP是一種XML基礎的技術,簡單而且擁有很好的擴充性。

  10. SOAP訊息的基本語法-1 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Header> <t:Transaction xmlns:t="http://www.company.com/transaction" SOAP-ENV:mustUnderstand="1"> 5 </t:Transaction> </SOAP-ENV:Header> <SOAP-ENV:Body> <m:getPrice xmlns:m="http://www.company.com/soap"> <code>1234</code> </m:getPrice> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

  11. SOAP訊息的基本語法-2 SOAP的名稱空間 • SOAP應用程式產生的SOAP訊息需要定義所有元素和屬性的名稱空間,而且SOAP應用程式一定要能夠處理收到訊息的名稱空間,SOAP擁有兩個預設的名稱空間,如下所示: • SOAP Envelope預設的名稱空間,使用的字頭為【SOAP-ENV】,如下所示: http://schemas.xmlsoap.org/soap/envelope/ • SOAP加碼和資料型態預設的名稱空間,如下所示: http://schemas.xmlsoap.org/soap/encoding/

  12. SOAP訊息的基本語法-3 Envelope元素 • Envelope元素為SOAP訊息的根元素,SOAP訊息一定擁有此元素,如果元素包含名稱空間宣告和額外的屬性,屬性也需要使用名稱空間的字頭。 • encodingStyle屬性是一組URI用來定義SOAP加碼和資料型態,這個屬性能夠出現在SOAP訊息的任何元素,如果在Envelope元素,此時所有的子元素都屬於名稱空間的範圍。

  13. SOAP訊息的基本語法-4 Header元素 • Header元素屬於SOAP訊息的選項元素,如果出現,一定為Envelope元素的子元素,這是一個彈性機制可以擴充SOAP訊息成為一個分散式的模組,常常使用在授權、交易和付款管理。 • Header元素的子元素一定需要宣告名稱空間和字頭,可以使用兩個屬性,如下表所示:

  14. SOAP訊息的基本語法-5 Body元素 • Body元素屬於SOAP訊息的主要元素,這是Envelope元素的子元素,如果擁有Header元素,Body元素必為Header元素的下一個元素,它的內容是傳送的訊息,可以包含RPC呼叫,如下所示: <m:getPrice xmlns:m="http://www.company.com/soap"> <code>1234</code> </m:getPrice>

  15. SOAP訊息交換架構 • SOAP訊息基本屬於單向的資料傳遞,可以從用戶端到伺服端使用HTTP送出請求訊息,在伺服器處理後將結果使用HTTP回應到用戶端,如下圖所示:

  16. HTTP請求的SOAP訊息 POST /BookDetail HTTP/1.1 Host: www.company.com Content-Type: text/xml; charset="Big5" Content-Length: nnnn SOAPAction: " http://www.company.com/soap#getBookDetail" <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:getBookDetail xmlns:m="http://www.company.com/soap"> <code>F8915</code> </m:getBookDetail> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

  17. HTTP回應的SOAP訊息 HTTP/1.1 200 OK Content-Type: text/xml; charset="Big5" Content-Length: nnnn <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:getBookDetailResponse xmlns:m="http://www.company.com/soap"> <book code="F8915"> <title>ASP網頁製作徹底研究</title> <author>陳會安</author> <price>580</price> </book> </m:getBookDetailResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

  18. 16-3 HttpRequest物件建立SOAP應用程式 • SOAP應用程式的架構 • HttpRequest物件和SOAP

  19. SOAP應用程式的架構 • SOAP應用程式架構需要在用戶端送出HTTP請求到伺服端,擁有用戶端和伺服端兩個應用程式,其檔案如下表所示:

  20. HttpRequest物件和SOAP • MSXML剖析器的HttpRequest物件可以直接在用戶端建立HTTP請求和回應,其架構如下圖所示:

  21. 16-4 WSDL的基礎 • SOAP應用程式如何使用WSDL • 定義Web Service • 定義Web Service傳送的訊息 • 定義RPC呼叫的輸入與輸出訊息

  22. SOAP應用程式如何使用WSDL-1 • 「WSDL」(Web Services Description Language)屬於一種以XML為基礎語言,它是用來定義Web Service和描述如何使用此Web Service服務的語言。 • Web Service是使用SOAP作為資料傳遞的通訊協定,而SOAP應用程式可以透過WSDL檔案的內容知道Web Service的位置、提供的RPC、訊息格式和如何使用這些函數呼叫。

  23. SOAP應用程式如何使用WSDL-2 • 用戶端首先取得WSDL檔案,可能儲存在本機或是Web Service所在的伺服器,在取得WSDL檔案後,就可以知道Web Service提供的服務和如何使用它(這就是SOAP訊息的格式),現在我們就可以使用此Web Sevice,在傳送SOAP請求後,就可以等待SOAP回應的結果。

  24. 定義Web Service <definitions name="urn:GoogleSearch" targetNamespace="urn:GoogleSearch" xmlns:typens="urn:GoogleSearch" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"> ………… <service name="GoogleSearchService"> <port name="GoogleSearchPort" binding="typens:GoogleSearchBinding"> <soap:address location="http://api.google.com/search/beta2"/> </port> </service> </definitions>

  25. 定義Web Service傳送的訊息 <message name="doGoogleSearch"> <part name="key" type="xsd:string"/> <part name="q" type="xsd:string"/> <part name="start" type="xsd:int"/> <part name="maxResults" type="xsd:int"/> <part name="filter" type="xsd:boolean"/> <part name="restrict" type="xsd:string"/> <part name="safeSearch" type="xsd:boolean"/> <part name="lr" type="xsd:string"/> <part name="ie" type="xsd:string"/> <part name="oe" type="xsd:string"/> </message>

  26. 定義Web Service傳送的訊息 <message name="doGoogleSearch"> <part name="key" type="xsd:string"/> <part name="q" type="xsd:string"/> <part name="start" type="xsd:int"/> <part name="maxResults" type="xsd:int"/> <part name="filter" type="xsd:boolean"/> <part name="restrict" type="xsd:string"/> <part name="safeSearch" type="xsd:boolean"/> <part name="lr" type="xsd:string"/> <part name="ie" type="xsd:string"/> <part name="oe" type="xsd:string"/> </message>

  27. 定義RPC呼叫的輸入與輸出訊息 • 在定義好SOAP請求和回應的訊息後,我們需要指定RPC呼叫的輸入與輸出訊息,WSDL使用protType元素定義每一個RPC呼叫操作的輸入與輸出訊息,如下所示: <portType name="GoogleSearchPort"> ……… <operation name="doGoogleSearch"> <input message="typens:doGoogleSearch"/> <output message="typens:doGoogleSearchResponse"/> </operation> </portType>

  28. 16-5 Google 搜尋服務的 Web Service • 申請Google的搜尋服務 • 使用Google搜尋服務的Web Service

  29. 申請Google的搜尋服務 • 申請Google會員 • Google 會員是一種免費服務,請在 Google 網站的新帳號網頁申請會員。 • 取得Web Service的授權碼 • 在申請好 Google 會員且啟動帳號後,就可以申請 Web Service 的授權碼。 • 取得GoogleSearch.wsdl • ASP.NET程式範例是Google搜尋服務的用戶端程式,我們需要取得GoogleSearch.wsdl的WSDL檔案和C#類別榴,相關檔案是位在Google Web API。

  30. 使用Google搜尋服務的Web Service-1 • 取得Web Service的C#類別檔 • 在googleapi.zip檔案就擁有C#類別檔,請解開此檔案,在「googleapi\dotnet\CSharp\Web References\Google」資料夾下,就可以看到GoogleSearch.wsdl和Reference.cs兩個檔案。 • 在ASP.NET程式使用Web Service的C#類別檔案 • 將C#類別檔案視為ASP.NET的外部類別檔案即可,如下所示: <%@ Page language="vb" Src="Reference.cs"%>

  31. 使用Google搜尋服務的Web Service-2 • 在ASP.NET程式以VB.NET語法來使用Web Service,首先匯入所需的名稱空間,如下所示: <%@ Import Namespace="Google_Web_APIs_Demo.Google" %> • 在名稱空間後,Google的Web Service就是建立GoogleSearchService物件,如下所示: Dim objGoogle As GoogleSearchService = New GoogleSearchService()

  32. 使用Google搜尋服務的Web Service-3 • 建立GoogleSearchService物件後,使用doGoogleSearch方法取得Google的搜尋結果的GoogleSearchResult物件,如下所示: Dim objResult As GoogleSearchResult = objGoogle.doGoogleSearch( _ GoogleKey, searchText, recordNo, PageSize, False, "", False, "", "", "")

  33. 使用Google搜尋服務的Web Service-4 • 傳回值是GoogleSearchResult物件,其相關屬性,如下表所示:

  34. 使用Google搜尋服務的Web Service-5 • resultElements屬性能夠取得查詢結果的網站資料,每一個網站是一個ResultElement物件,可以使用For迴路取得每一個物件,如下所示: For i = 0 To objResult.resultElements.GetUpperBound(0) objResult.resultElements(i).summary.ToString() objResult.resultElements(i).URL.ToString() ………… Next

  35. 使用Google搜尋服務的Web Service-6 • ResultElement物件可以使用其屬性取得相關資料,如下表所示:

More Related