Web Service 是什麼? Web Service 也叫作XML Web Service,是一種網路化的,分散式的軟體系統,通常通過Http交付,可以跨編程語言和操作系統進行遠程調用操作,通常情況下,Web Service包括服務本身和客戶端,後者也被稱為消費者或請求者,可以通過網路訪問部署在 ...
Web Service 是什麼?
Web Service 也叫作XML Web Service,是一種網路化的,分散式的軟體系統,通常通過Http交付,可以跨編程語言和操作系統進行遠程調用操作,通常情況下,Web Service包括服務本身和客戶端,後者也被稱為消費者或請求者,可以通過網路訪問部署在伺服器提供的某種服務(通過調用Web服務對外公開的訪問介面)。其可以是網頁瀏覽器,一個桌面應用,更甚至是一個沒有圖形界面的應用程式
圖 1.1 一個Web 服務和它的一個客戶端
根據定義,Web服務和服務客戶端間通過HTTP進行交互,HTTP消息是基礎設施,這些HTTP消息被組合成描述Web服務特征的基本會話模式。常見的模式有4中,分別如下:
- 如果Web服務的會話以期望的HTTP請求HTTP響應開始,那麼該模式被稱為 請求/處理 模式,是目前4種模式中占主導地位的一種模式
- 如果會話以伺服器發出的一條期望從客戶端返回消息的HTTP消息開始,那麼該模式稱為 要求/響應
- 從客戶端到伺服器的無響應消息,被稱為 單向模式
- 從伺服器到客戶單的無響應消息,被稱為 通知模式
Web Service中的一些概念
SOAP:SOAP最初代表 簡單對象訪問協議(Simple Object Access Protocol),前面是我們說過Web Service 是通過HTTP進行交付的,Web服務和Web 服務客戶端間交互的信息是經過封裝的XML格式的數據,並增加了相應的HTTP報頭,而這些就被稱為SOAP協議,總的來說就是 SOAP協議 = HTTP協議 + XML格式的數據
WSDL:Web服務描述語言(Web Service Description Language),這是基於XML 的一種用來描述Web Service 內定義的操作的名稱、說明信息、參數、返回值等信息的語言,它本身必須保證Web service 和Web 客戶端都必須能理解這種語言。一般情況下有開發工具自動生成。
XSD : xml Schema Definition ,從其全稱可以看出這也是一種基於XML的一種語言,它定義了一套標準的數據類型,Web Service就是使用XSD作為其數據類型系統的,Web Service中使用的數據最終都要被轉換為XSD格式來定義(功能類似於Net平臺的IL語言)
UDDI:UDDI 是一種規範,它主要提供基於Web服務的註冊和發現機制, 是一種目錄服務,企業可以使用它對 Web services 進行註冊和搜索,當客戶端調用Web Service之前,必須知道Web Service的WSDL,Web Service的生產者可以通過兩種方式將WSDL 公開給其使用者,其一,將WSDL直接告訴其調用者,其二,將服務對應WSDL註冊到UDDI伺服器上。
Web Service 的一些特點
-
語言透明性
Web服務的服務及其客戶端可以不必使用同種編程語言來實現,語言透明性是 Web 服務互操作性的一個重要因素,即儘管使用不同的編程語言、不同的操作系統和硬體平臺,Web服務和其消費者之間可以無縫的銜接。
假如使用C#寫了一個Web服務,如果想讓該服務可以讓使用Python或Java語言開發的客戶端來使用的話,那麼必須存在一個中間處理層來處理服務和客戶端之間不同的數據類型,XML可以作為這樣的一個中間層,因為它支持結構化的文檔交換和處理,另一個中間層是JSON(JavaScript Object Notation )
-
模塊化設計
Web服務設計師模塊化的,這使得新的服務可以有現有的服務組合而成。Web服務設計的指導原則是從非常簡單的服務操作和本質上並不複雜的功能開始,然後可以根據現實需求把這些操作組合成服務
-
無狀態性
Web 服務由一些操作組成,每個操作都被實現為一個無狀態函數的調用(如果某個調用的返回值僅依賴於傳遞給他的參數,那麼該調用是無狀態的)
-
開發基礎設施
Web服務使用符合行業標準的、獨立於供應商的協議和HTTP、XML、JSON這些語言部署,所有的這一切都是普遍存在的,Web服務可以利用網路、數據格式、安全性和其它已經到位的基礎設施來降低其進入成本
使用Web Service的好處
- 現代的軟體系統一般情況下都是由多種語言編寫的,這就造就了現代軟體開發中的一個重大的挑戰:系統集成,如何讓這些不同語言編寫的、運行在不同硬體平臺上的軟體系統進行交互?Web服務提供了一個相對簡單的答案。
- 由於Web Service是基於模塊化的思想開發的,可以很大程度上提升代碼的復用率和軟體開發進度
Web Service在Net中使用的一個簡單小實例
- 打開 Visual Studio,新建項目àWebàASP.NET Web應用程式
- 在創建好的項目上右鍵à添加àWeb服務(asmx)
- 創建的firstWebService.asmx的文件如下
public class firstWebService : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World"; } [WebMethod(Description ="求和的方法")] public int GetSum(params int[] arr) { int sum = 0; foreach(int i in arr) { sum += i; } return sum; } }View Code
至此,一個簡單的Web Service 就算部署完成了,點擊啟動程式,在瀏覽器里可以查看到
接下來創建一個Web客戶端調用創建好的Web 服務,該例子只為演示,就創建一個最簡單的控制台應用程式Client
-
在創建好的控制台程式上右鍵 添加à服務引用
在彈出的視窗中,將創建的Web 服務的URL粘到地址那一欄中,然後點擊確定
創建完成後,咱們的Client的目錄結構如下:
5.寫代碼調用Web服務
//需要導入服務所在的命名空間 using Client.ServiceReference1; firstWebServiceSoapClient c = new firstWebServiceSoapClient(); string s = c.HelloWorld(); Console.WriteLine(s); //調用求和函數GetSum(params int[] arr),但你會發現在這裡其參數類型變為了(ArrayOfInt),轉到定義可以看到該類繼承自List<Int> //因此這裡的實參要不參與下麵的方式添加,要麼 直接添加一個List<int>類型的集合 int[] arr = new int[] { 1, 2, 3 }; ArrayOfInt ar = new ArrayOfInt(); int sum = c.GetSum(ar); Console.WriteLine("The SUM is :{0}",sum); Console.ReadKey();View Code
6.至此,一個簡單的Web Service的構建和調用就全部完成了。