什麼是Web Services 從表面上看
Web service 就是一個應用程序
它向外界暴露出一個能夠通過Web進行調用的API
也就是說
可以利用編程的方法通過Web來調用這個應用程序
對Web service 更精確的解釋: Web services是建立可互操作的分布式應用程序的新平台
Web service平台是一套標准
它定義了應用程序如何在Web上實現互操作性
你可以用任何你喜歡的語言
在任何你喜歡的平台上寫Web service
只要我們可以通過Web service標准對這些服務進行查詢和訪問
不管你的Web service是用什麼工具
什麼語言寫出來的
只要你用SOAP協議通過HTTP來調用它
總體結構都一致
通常
你用你自己喜歡的語言(如VB
或者VB
NET)來構建你的Web service
然後用SOAP Toolkit或者
NET的內建支持來把它暴露給Web客戶
於是
任何語言
任何平台上的客戶都可以閱讀其WSDL文檔
以調用這個Web service
客戶根據WSDL描述文檔
會生成一個SOAP請求消息
Web service都是放在Web服務器 (如IIS) 後面的
客戶生成的SOAP請求會被嵌入在一個HTTP POST請求中
發送到Web服務器來
Web服務器再把這些請求轉發給Web service請求處理器
請求處理器的作用在於
解析收到的SOAP請求
調用Web service
然後再生成相應的SOAP應答
Web服務器得到SOAP應答後
會再通過HTTP應答的方式把它送回到客戶端
基本概念 SOAP
XML和XSD
WSDL(Web Services Description Language)
WSML(Web Services Meta Language)
什麼時候使用Web Services Web service是創建可互操作的分布式應用程序的新平台
Web service 的主要目標是跨平台的可互操作性
為了達到這一目標
Web service 是完全基於XML
XSD等獨立於平台
獨立於軟件供應商的標准的
Web service在應用程序跨平台和跨網絡進行通信的時候是非常有用的
Web service適用於應用程序集成
B
B集成
代碼和數據重用
以及通過Web進行客戶端和服務器的通信的場合
當然
Web service也不是萬能的
你不能到處濫用Web service
在有些情況下
Web service 會降低應用程序的性能
而不會帶來任何好處
例如
一台機器或一個局域網裡面運行的同構應用程序就不應該用Web service 進行通信
如何調用Web Services 客戶端:取得服務端的服務描述文件WSDL
解析該文件的內容
了解服務端的服務信息
以及調用方式
根據需要
生成恰當的SOAP請求消息(指定調用的方法
已經調用的參數)
發往服務端
等待服務端返回的SOAP回應消息
解析得到返回值
服務端:生成服務描述文件
以供客戶端獲取
接收客戶端發來的SOAP請求消息
解析其中的方法調用和參數格式
根據WSDL和WSML的描述
調用相應的COM對象來完成指定功能
並把返回值放入SOAP回應消息返回給用戶
高層接口 使用高層接口
不需要知道SOAP和XML的任何信息
就可以生成和使用一個WebService
Soap Toolkit
通過提供兩個COM對象――SoapClient和SoapServer
來完成這些功能
在客戶端
只需要生成一個SoapClient實例
並用WSDL作為參數來調用其中的mssoapinit方法
SoapClient對象會自動解析WSDL文件
並在內部生成所有Web Service的方法和參數信息
之後
你就可以像調用IDispatch接口裡的方法一樣
調用裡面所有的方法
在VB或是腳本語言裡
你甚至可以直接在SoapClient對象名後面直接加上
方法(參數…)進行調用
低層接口 要使用低層接口
你必須對SOAP和XML有所了解
你可以對SOAP的處理過程進行控制
特別是要做特殊處理的時候
在客戶端
首先要創建一個HttpConnector對象
負責HTTP連接
設定Connector的一些頭部信息
比如EndPoinURL和SoapAction等
如果網絡連接需要使用代理服務器
那也要在這裡設定相關的信息
接著創建SoapSerializer對象
用於生成Soap消息
按照WSDL裡定義
把所有參數按順序序列化
得到一個完整的SOAP請求消息
該Soap消息
作為Payload通過HttpConnector被發送到服務端
最後
生成一個SoapReader對象
負責讀取服務端返回的SOAP消息
取得其中的返回值
From:http://tw.wingwit.com/Article/program/net/201311/11967.html