第16章 Web Service應用程式架構 16-1 Web Service應用程式架構 16-2 SOAP的基礎

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

第 12 章 SOAP技術.
Chapter 5: Service-Oriented Architectures for Distributed Computing 面向服务的分布式体系结构 1.
08 CSS 基本語法 8-1 CSS 的演進 8-2 CSS 樣式規則與選擇器 8-3 連結HTML 文件與CSS 樣式表
网站如何定制建设???.
基于书签的校园搜索引擎 Web 2.0时代的网络收藏夹.
Microsoft .NET 第4組 十月15, 2002 B 陳東傑 B 蔣佳勳
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
XML資料傳輸 黃笠宸 4/3.
第八章 Microsoft BizTalk架構
TCP協定 (傳輸層).
Google協作平台.
第 五 讲 Web 服务.
第一篇 Unix/Linux 操作介面 第 1 章 Unix/Linux 系統概論 第 2 章 開始使用 Unix/Linux
客戶端的檔案上傳 HtmlInputFile檔案控制項 上傳單一檔案 同時上傳多個檔案.
HiNet 光世代非固定制 用戶端IPv6設定方式說明
高级Web技术 复 习.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
安裝JDK 安裝Eclipse Eclipse 中文化
網頁切換移轉 JS vs. ASP.NET.
Word與PowerPoint的結合 建功國小 陳旻杰 健行國小 張慧如.
OpenID與WordPress使用說明
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A.
連結資料庫管理系統.
第 13 章 體驗Web Service.
Android App簡介及 App Inventor 2體驗 靜宜大學資管系 楊子青
第二章 SPSS的使用 2.1 啟動SPSS系統 2.2 結束SPSS系統 2.3 資料分析之相關檔案 2.4 如何使用SPSS軟體.
OSGi (Open Service Gateway Initiative)
Java 程式設計 講師:FrankLin.
FTP檔案上傳下載 實務與運用.
私立南山高中 信息組 電腦研習 電腦資料的備份 中華民國 99年4月20日 星期二.
網頁切換移轉 JS vs. ASP.NET.
網路安全技術 OSI七層 學生:A 郭瀝婷 指導教授:梁明章.
表單(Form).
Topic Introduction—RMI
第一單元 建立java 程式.
VS.NET 2003 IDE.
網頁程式設計 本章投影片錄自HTML5、CSS3、RWD、jQuery Mobile跨裝網頁設計 陳惠貞 著 碁峰資訊股份有限公司出版
电子商务 王素凤
第18章 個人入口網站的建立 18-1入口網站的基礎 18-2 建立網站的搜尋引擎 18-3 網頁組件的個人化功能
第 19 章 XML記憶體執行模式.
表單(Form).
Google協作平台+檔案分享(FileZilla+網路芳鄰)
挑戰C++程式語言 ──第8章 進一步談字元與字串
VS.NET 2003 IDE.
如何使用Gene Ontology 網址:
探測工具:NetCat.
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
FTP使用教學 簡介: 軟體名稱:FileZilla 軟體性質:Freeware 版本: 繁體中文版
管理心理学 职业经理人心理素养提升 讲师:孙阳.
Web Service 尹伟铭
MicroSim pspice.
2004年湖北省高校图书馆 自动化和数字图书馆工作研讨会
取得與安裝TIDE 從TIBBO網站取得TIDE
MiRanda Java Interface v1.0的使用方法
陣列與結構.
編輯網頁可用那些應用程式? 記事本 Word FrontPage Dreamweaver.
Dreamweaver 進階網頁製作 B 許天彰.
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A.
Brief Guide of FrontPage
國立台灣大學 關懷弱勢族群電腦課程 By 資訊工程 黃振修
Cloud Training Material- 事件 Sherman Wang
電腦網絡與教學.
NFC (近場通訊, Near Field Communication) 靜宜大學資管系 楊子青
Chapter 4 Multi-Threads (多執行緒).
Develop and Build Drives by Visual C++ IDE
InputStreamReader Console Scanner
Presentation transcript:

第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建立自動機制提供資料交換和工作分享等資源共享的功能。 Web Service使用簡單和公開標準的協定,提供低成本的軟體整合和資料分享,它是一種可以在不同的作業系統,使用不同的程式語言開發的應用程式,能夠直接與位在不同位置的其它應用程式進行通訊和資料交換。

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

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

Web Service應用程式架構-2

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

什麼是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架構的主要元素,提供分散式應用程式系統開發的資料交換。

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

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>

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

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

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

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

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

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>

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>

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

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

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

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

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

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

定義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>

定義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>

定義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>

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

16-5 Google 搜尋服務的 Web Service

申請Google的搜尋服務 申請Google會員 取得Web Service的授權碼 取得GoogleSearch.wsdl ASP.NET程式範例是Google搜尋服務的用戶端程式,我們需要取得GoogleSearch.wsdl的WSDL檔案和C#類別榴,相關檔案是位在Google Web API。

使用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"%>

使用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()

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

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

使用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

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