资源预览内容
第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
第9页 / 共29页
第10页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第二十七章 Web Service程式的開發,Web Service網路服務為最近興起的一種服務架構,更被認為是Internet演進的下一步。希望透過網路的使用,讓應用程式可以像網頁資料般被其他應用程式使用,達到資源共享的目的,進而縮短程式的開發時程。本章節即透過簡單的範例說明帶領讀者開發屬於自己的Web Service程式,感受一下Web Service的強大威力。,大綱,27-1何謂Web Service網路服務27-2Server端的Web Service程式開發27-3Client端的Web Service程式開發,27-1. 何謂Web Service網路服務,在Internet網際網路的世界中,使用者透過瀏覽器的使用即可瀏覽網路世界中的任何資料,不論是文字、圖片或是動畫。也因為使用簡易造成了Internet世界的蓬勃發展,進而產生了許多的新技術,從早期的Java Script、VBScript到近期的Flash、DHTML、JSP、PHP和XML等規格的相繼推出。然而,這些技術僅針對網頁內容的提供方式或是呈現進行改進,仍脫離不了以人為使用者的概念,所有的內容還是停留在給人使用為目的,而Web Service網路服務概念的推出即在顛覆此一傳統的使用方式,希望讓應用程式就如同人一般可以透過網路使用其他應用程式提供的服務,一如人們瀏覽網頁般的方便。Web Service網路服務架構最初由Microsoft所提出,為其最新提出的.Net架構中的一環,希望藉由Internet的使用,讓應用程式間可以使用彼此所提供的資源和服務,就如同Internet上的網頁般。此外,由於Web Service架構建構在Internet上,因此並不侷限於某個作業平台,所以也受到其他大廠的青睞而相繼推出支援Web Service的解決方案,而這些廠商的相繼投入無疑使得Web Service更受到矚目。,27-1-1. Web Service架構,Web Service架構讓應用程式間可以透過網路使用其他應用程式所提供的服務,而這樣的概念即為標準的分散式架構。然而,其相對於其他分散式架構更受到矚目的原因除了因為Microsoft的大力推銷外,本身的優勢才是其受到青睞的主因。底下即就其優勢進行說明:真正跨平台:相較於Microsoft之前推出的DCOM架構僅能用於Windows系列的作業系統,Web Service並沒有作業平台的限制。真正跨語言:相較於Java的RMI分散式架構僅限於Java程式的呼叫,Web Service可做到跨語言的呼叫。溝通無障礙:相較於Corba必須使用特定的通訊協定,Web Service使用標準的http協定讓程式間的溝通更形方便。因為http協定的通訊一般皆被防火牆所接受,所以應用程式間透過http協定的溝通並不需要更改防火牆的設定,也更容易被使用防火牆的企業所接受。,27-1-1. Web Service架構,至於Web Service的架構則包含Web Service(網路服務)、Service Provider(服務提供者)、Service Requester(服務要求者)和Service Register(服務登記處)四部分,各部分的說明如下:Web Service:Web Service即為一個應用程式,透過Procedure/Function(即API)的提供來對其他應用程式提供所謂的服務。也就是其他應用程式可以呼叫該應用程式所提供的API得到回傳的結果。Web Service Provider:服務提供者,可能提供一個或多個的服務。當Web Service Requester呼叫其所提供的服務時,該服務在Web Service Provider端進行執行與回傳結果。因此,除了提供服務外,本身亦提供執行的環境供服務進行執行,即一般熟悉的Server端。,27-1-1. Web Service架構,Web Service Requester:服務要求者,即希望取得服務的應用程式,也就是Client端。Web Service Register:服務登記處。雖然說Web Service Requester向Web Service Provider要求Web Service即可得到所要的服務,但是在茫茫網海中Web Service Requester要如何知道哪個Web Service Provider有提供其所要的Web Service就不是件容易的事,因此需要一個中繼的環境用來紀錄所有可供使用的服務以方便Web Service Requester找尋可供使用的服務,而這中繼環境即為Web Service Register。簡單說來,Web Service Register提供一個儲存Web Service資訊的環境,讓Web Service Provider可以註冊並公佈其所提供的Web Service資訊,並讓Web Service Requester能據此得到所要Web Service的資訊,進而和Web Service Provider進行溝通,得到所要的服務。,27-1-1. Web Service架構,整個關係圖如下所示:Web Service Requester透過找尋Web Service Register的方式來搜尋所要使用的Web Service,當找到後根據Web Service上Web Service Provider註冊的訊息轉而對Web Service Provider進行Bind的動作,以告知Web Service Provider將使用其提供的Web Service,接著Web Service Requester便可向Web Service Provider要求提供服務,並等待Web Service Provider所回傳的結果。,27-1-1. Web Service架構,為了完成上述流程的運作,Web Service提供了以下幾個開放標準來達成此目的:XML(eXtensible Markup Language):提供資料表示的標準格式。SOAP(Simple Object Access Protocol):簡單的物件擷取協定,透過XML與Http的結合讓應用程式可以在不需了解彼此所在的作業系統和實作方式下進行溝通,如傳遞所要執行的服務內容和回傳執行後的結果。該規格最初由Microsoft所主導,其後並陸續加入幾家大廠共同制定,逐漸成熟而成為大廠間所遵循的標準。WSDL(Web Service Description Language):描述XML Web Service的功能與其溝通的資料格式。讓應用程式間的功能和傳入的參數格式能有一標準的描述方式。,27-1-1. Web Service架構,UDDI(Universal Description, Discovery, and Integration):Web Service的註冊和搜尋機制,讓Web Service可據此提供相關說明訊息註冊於Web Service Register中,並讓Web Service Requester得以據此搜尋所要的Web Service服務。所有的Web Service Requester即根據線上的UDDI資料庫來得到各Web Service的訊息,包括Web Service功能與提供該服務的Web Service Provider位置。這些標準架構皆以XML文件架構作為描述的基礎。由此可知,Web Service架構是基於XML文件上的一種應用,也正因為透過可延伸性標準的特性才能有效描述各個服務所提供的功能或是使用方式。,27-1-2. C+ Builder對Web Service提供的支援,經過上述的介紹,想必讀者對Web Service網路服務不論是功用、架構、運作流程和實作方式皆有所了解,也感受到Web Service之所以受到矚目的魅力所在。對於這樣一個明日之星,C+ Builder亦展現其強大的支援能力,並化繁為簡的讓使用者可以輕鬆的開發Web Service程式。雖然說Web Service程式並沒有限制開發的環境,但了解C+ Builder對開發Web Service程式的支援後,你將會明顯感受到使用C+ Builder開發程式所帶來的方便性。,27-1-2. C+ Builder對Web Service提供的支援,在C+ Builder中,共提供了七個元件供程式設計師在開發Web Service程式時使用,這些元件均位在元件樣版中的【Web Services】頁次內,如右圖所示。透過這些元件的輔助可幫助開發Client端的程式、產生對應的WSDL檔、處理SOAP的呼叫和執行遠端的Web Service程式。此外,對於上述流程更提供了四個精靈來大幅簡化開發Web Service程式的步驟,如右圖。而在下面的小節中,我們即透過精靈和元件的使用來對Server端(Web Service Provider)和Client端(Web Service Requester)的實作進行介紹。,27-2. Server端的Web Service程式開發,透過精靈的輔助,開發Server端Web Service程式的過程將大幅簡化。底下即透過操作實例的說明來解說Server端程式的開發過程。【操作實例27-1】Server端Web Service的實作實作一個Web Service程式的Server端,讓其他Client端可使用該服務查詢資料庫中的資料。在本例中,以BCDEMOS範例資料庫內的Employee員工資料表為例。,27-2. Server端的Web Service程式開發,開啟新專案,點選C+ Builder選單中的【File】【New】【Other】以彈出新增選項的對話框,並點選對話框頁次為【Web Services】。如下圖所示。,27-2. Server端的Web Service程式開發,雙擊上圖的【Soap Server Application】選項,在彈出的對話框中點選【CGI Stand-alone executable】選項以設定所產生的Web Service程式型態,如下圖所示。,27-2. Server端的Web Service程式開發,按下上圖的【OK】按鈕後,C+ Builder將為本專案產生如下圖的Web Module。該Web Module中包含三個Web Service相關的VCL元件。在彈出的確認對話框中按下【Yes】以產生對應於Web Service的Interface。,27-2. Server端的Web Service程式開發,接著在彈出的對話框中輸入在Service Name為EmployeeData,如下圖所示。,27-2. Server端的Web Service程式開發,按下上圖的【OK】按鈕後,C+ Builder將自動產生對應於該Web Service程式的Interface(本例中產生的介面為IEmployeeData),而我們即可透過對Interface的定義來宣告提供給Client端使用的函式。產生的介面檔如下所示。,27-2. Server端的Web Service程式開發,在介面檔中加入函式的宣告。本例中,我們加入兩個資料庫查詢的函式,其中之一查詢資料表中的所有員工資料;另外一個則根據員工編號和指定欄位回傳對應的資訊。宣告如粗體字型所示:,EmployeeData.h:,27-2. Server端的Web Service程式開發,回到產生的EmployeeData.cpp檔案中。在繼承IEmployeeData介面的類別(Class)中加入函式的宣告,以在類別(Class)中實作函式內容。如程式碼中的粗體部分。,27-2. Server端的Web Service程式開發,完成類別宣告後,在EmployeeData.cpp檔案中實作函式的內容如下。此外,由於使用到BDE資料庫元件,所以請在程式碼最上端加入#include 的片段。 EmployeeData.cpp程式碼儲存檔案,執行程式即完成Server端的Web Service程式開發。產生的執行檔移至Microsoft IIS網頁伺服器(可由Windows XP/2000安裝光碟片中安裝)內具有執行權限的目錄中,透過瀏覽器的檢視即可顯示其對應的WSDL檔內容。而WSDL檔案即用以描述該Web Service的格式與內容,以讓Client端可以據此使用該Web Service的服務。在本例中,我們把產生的執行檔移至Microsoft IIS虛擬目錄下的Employee/ch27_001/內,而透過瀏覽器的檢視,WSDL的內容如下頁所示。,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号