第 13 章 體驗Web Service
什麼是Web Service - 新一波的網路革命 XML是為了解決WWW上資料交換格式問題而建立的標準。 因為WWW的發展凸顯了資訊交換問題,而催生了XML。而XML也反過來,改變了WWW,這個改變就是Web Service。 透過XML技術的概念,可以將網站的呈現與網站的內容,做適當的分離,這只是第一步。下一步則是要讓網站的服務,更加單純化,更良好且忠實地扮演資料提供者的角色,這就是Web Service概念。 SOAP以外,還有兩個與建構Web Service的電子商務環境有相當關係的技術 – WSDL與UDDI。
什麼是Web Service - 簡介網路服務描述語言(WSDL) WSDL全文為Web Services Description Language,譯為網路服務描述語言。目前由IBM以及Microsoft研擬當中,WSDL是運用XML語法,描述網站所提供的Web Service,文件內容的架構如下圖所示。
什麼是Web Service - 簡介網路服務描述語言(WSDL) 從文件的架構,可以看出,整份文件包含Service Implementation Definition(服務實做定義),以及Service Interface Definition(服務介面定義)兩大部份,簡要說明如下: 一、Service Interface Definition(服務介面定義) 二、Service Implementation Definition(服務實做定義)
什麼是Web Service - 簡介全球探索描述與整合(UDDI) UDDI的英文全名為Universal Description, Discovery and Integration,譯為全球探索描述與整合。 UDDI是一種B2B(Business To Business)電子商務所使用的註冊機制標準,定義了企業如何從事電子交換,這將影響未來電子商務的架構,是由IBM、Ariba與Microsoft三大公司於2000年9月提出。
什麼是Web Service - 電子商務的流程與架構 下圖將說明電子商務的交易流程,以及SOAP、WSDL與UDDI所扮演的角色。 整個電子商務的交易機制與流程,可分為以下兩部份說明: 一、服務提供者 二、服務使用者
剖析WSDL文件 - WSDL範例文件 在本節將以一個描述名為bitcService服務的WSDL檔,做為講解WSDL文件的實例。bitcService服務提供了一個名為helloWorld的作業(服務項目),呼叫helloWorld時,將傳入呼叫者的姓名,並回傳『Hello World! I am + 傳入姓名.』字串,換言之,傳入參數與回傳值的型態都是字串。
剖析WSDL文件 - WSDL範例文件
剖析WSDL文件 - WSDL範例文件
剖析WSDL文件 - WSDL文件的名稱空間 在definitions根元素,以及types元素的schema子元素內,將定義數個WSDL文件需使用的名稱空間,以及代表的字頭。
剖析WSDL文件 - WSDL文件的名稱空間 一、使用者自行定義 二、相關標準的名稱空間
剖析WSDL文件 - WSDL文件的根元素 WSDL文件的根元素為definitions元素,在該元素內,主要定義了以下四類資料: 將WSDL文件所定義服務的名稱,設定給name屬性。 將definitions元素內容的目標名稱空間,設定給targetNamespace屬性,代表definitions元素內宣告的所有名稱,都附屬在指定給targetNamespace屬性的目標名稱空間。 設定definitions元素的預設名稱空間,文件內所有未使用字頭的名稱都屬於此名稱空間,規定使用的URI為『http://schemas.xmlsoap.org/wsdl/』。
剖析WSDL文件 - WSDL文件的根元素 以下是定義bitcService服務的WSDL文件內,definitions元素的內容:
剖析WSDL文件 - 服務介面定義 WSDL文件的服務介面定義(Service Interface Definition)部份,將運用介面描述語言(Interface Description Language,簡稱IDL)描述Web Service介面,主要內容包含以下四個部份: 服務型別(Types) 訊息(Message) 服務流程(PortType) 服務鏈結(Binding)
剖析WSDL文件 - 服務介面定義 服務型別(Types) WSDL文件的Types 區段,用於宣告Message區段所需使用的複雜類型,如:若在Message區段使用名為PERSON的類型時,可以下列方式宣告。
剖析WSDL文件 - 服務介面定義 由於未使用任何自訂的複雜資料型別,因此,在types區段內,僅在schema子元素內定義目標名稱空間、預設名稱空間及其他相關名稱空間。
剖析WSDL文件 - 服務介面定義 訊息(Message) WSDL文件的Message區段,用於描述與服務介面互動的過程中,所傳遞的資料(訊息)。其中message元素的name屬性,所定義資料的名稱,此名稱將供WSDL文件內PortType元素的input與output元素之message屬性,指定欲引用的message元素。當定義呼叫介面傳入值的message元素名稱時,習慣的命名方式為『服務名稱.介面名稱』,若定義傳出值時,則命名方式為『服務名稱.介面名稱 + Response』。 在message元素內,將可包含數個part元素,用於定義傳遞的參數,參數名稱將設定給name屬性,參數型態則設於type屬性。
剖析WSDL文件 - 服務介面定義 以下為WSDL範例內,定義呼叫helloWorld介面時,所需傳入資料的message元素。傳入參數的名稱為Name,型別為xsd:string。 以下為WSDL範例內,定義呼叫helloWorld作業時,所傳出資料的message元素。傳出參數的名稱為Result,型別為xsd:string。
剖析WSDL文件 - 服務介面定義 服務作業(PortType) WSDL文件的PortType區段,用於定義服務介面的資料輸入與回應方式。portType元素name屬性所定義的名稱,將供binding元素的type屬性引用,而傳入資料的順序則設定給parameterOrder屬性,每個參數則以空格分隔。
剖析WSDL文件 - 服務介面定義 以下內容中,portType元素內的operation元素,將定義bitcService服務的helloWorld介面,資料輸入介面將使用由名為bitcService.helloWorld的message元素定義之訊息,資料輸出介面則使用名為bitcService.helloWorldResponse的message元素定義之訊息。
剖析WSDL文件 - 服務介面定義 服務鏈結(Binding) Binding 區段將描述Web Service通訊協定、參數序列與編碼。WSDL文件內的Types、Messages與 PortType 區段,僅描述抽象的資料內容,最後交由binding區段把前三個區段的抽象資料,具體化為資料傳輸的細節。 binding元素name屬性的設定值,用於供service元素port子元素的binding屬性引用binding元素之用,而type屬性則指定參照的portType元素,指定時,需使用wsdlns名稱空間。 而binding元素包含的operation子元素,其name屬性,將對應至portType元素內,所定義的同名operation子元素。
剖析WSDL文件 - 服務介面定義 以下是本節WSDL範例中,有關服務鏈結的定義內容。其中stk:binding元素,為Microsoft的SOAP開發工具指定使用編碼的擴充元素。soap:binding元素,則定義服務將透過SOAP,以遠端呼叫的方式完成(style屬性被設為rpc)。operation元素則定義了helloWorld作業傳出與傳入資料所使用的編碼,與傳入/出的參數序列。
剖析WSDL文件 - 服務介面定義 服務鏈結(Binding) Binding 區段將描述Web Service通訊協定、參數序列與編碼。WSDL文件內的Types、Messages與 PortType 區段,僅描述抽象的資料內容,最後交由binding區段把前三個區段的抽象資料,具體化為資料傳輸的細節。 binding元素name屬性的設定值,用於供service元素port子元素的binding屬性引用binding元素之用,而type屬性則指定參照的portType元素,指定時,需使用wsdlns名稱空間。 而binding元素包含的operation子元素,其name屬性,將對應至portType元素內,所定義的同名operation子元素。
剖析WSDL文件 - 服務介面定義 以下是本節WSDL範例中,有關服務鏈結的定義內容。其中stk:binding元素,為Microsoft的SOAP開發工具指定使用編碼的擴充元素。soap:binding元素,則定義服務將透過SOAP,以遠端呼叫的方式完成(style屬性被設為rpc)。operation元素則定義了helloWorld作業傳出與傳入資料所使用的編碼,與傳入/出的參數序列。
剖析WSDL文件 - 服務實做定義 服務實做定義將描述WSDL文件內,有關服務實做的資料,包含描述服務的名稱、提供服務的廠商以及服務的網路位址,主要由service元素完成。 service元素的name屬性,將設定服務的名稱,此名稱將對應至definitions元素的name屬性。而service元素的port子元素,其name屬性將與portType元素的名稱相同,binding屬性則指定欲使用的服務鏈結,引用時需加上wsdlns名稱空間。port元素soap:address元素的location屬性,則指定了提供服務的URL位址。
剖析WSDL文件 - 服務實做定義 以下內容為本節WSDL範例,定義bitcService服務的sevice元素。
運用ASP.NET開發XML Web Service - ASP.NET XML Web Services簡介 Visual Studio 2005提供建立XML Web Services網站的功能,只需透過兩個步驟,即可建立名為Hello World的Web Services,步驟如下: STEP 1、建立新網站
運用ASP.NET開發XML Web Service - ASP.NET XML Web Services簡介 STEP 2、選取ASP.NET Web服務範本
運用ASP.NET開發XML Web Service - ASP.NET XML Web Services簡介 網站的方案總管內容如下圖所示。
運用ASP.NET開發XML Web Service - ASP.NET XML Web Services簡介 Service.vb檔案內容。
運用ASP.NET開發XML Web Service - ASP.NET XML Web Services簡介 STEP 3、執行Hello World Web Service網站
運用ASP.NET開發XML Web Service - ASP.NET XML Web Services簡介 STEP 4、執行Hello World()方法
運用ASP.NET開發XML Web Service - ASP.NET XML Web Services基礎應用 STEP 1、在方案中加入Web參考
運用ASP.NET開發XML Web Service - ASP.NET XML Web Services基礎應用 STEP 2、選取Web服務加入方式 此步驟需選擇加入Web服務內容的方式,其主要分成以下三種: 這個方案中的Web服務:加入到目前的開發方案中。 本機電腦上的Web服務:當本機電腦有佈置Web服務時使用。 瀏覽區域網路上的UDDI伺服器:當您的內部網路有架設UDDI伺服器,並提供Web服務資源時,可選擇使用此項目。
運用ASP.NET開發XML Web Service - ASP.NET XML Web Services基礎應用
運用ASP.NET開發XML Web Service - ASP.NET XML Web Services基礎應用 STEP 3、選取方案中的服務
運用ASP.NET開發XML Web Service - ASP.NET XML Web Services基礎應用 STEP 4、輸入Web參考名稱
運用ASP.NET開發XML Web Service - ASP.NET XML Web Services基礎應用 STEP 5、瀏覽已加入參考的程式碼檔案
運用ASP.NET開發XML Web Service - ASP.NET XML Web Services 基礎應用 STEP 6、在頁面中建立Web Service類別物件 STEP 7、叫用Web Service提供的方法,並以物件變數接收回傳的資料 STEP 8、處理回傳的資料 當取得Web Service方法回傳的資料後,便可依照一般處理物件變數的方式進行。