1、缺點,無法傳輸復雜對象:如無法序列化key/value結構的類型參數以及相關一維集合接口(Hashtable等打上標簽[Serializable]即可序列化,不過繼承的IDictionary并不可以序列化)。
進行 XML Web 服務調用時發生的過程與進行常規方法調用時發生的過程類似。主要的差別在于,不是調用位于客戶端應用程序中的方法,而是通過指定的傳輸(如 HTTP)生成請求消息。由于 XML Web 服務方法可能位于另一臺計算機上,因此 XML Web 服務處理請求所需的信息必須通過網絡傳遞給承載 XML Web 服務的服務器。XML Web 服務處理此信息并通過網絡將結果發送回客戶端應用程序。
下圖顯示客戶端和 XML Web 服務之間的通信過程。
下面描述調用 XML Web 服務時發生的事件序列:
客戶端創建 XML Web 服務代理類的一個新實例。該對象駐留在客戶端所在的同一臺計算機上。
客戶端調用代理類上的方法。
客戶端計算機上的基礎結構將 XML Web 服務方法的參數序列化為 SOAP 消息,并通過網絡將其發送給 XML Web 服務。
基礎結構接收 SOAP 消息并反序列化該 XML。它創建實現 XML Web 服務的類的實例并調用 XML Web 服務方法,同時將反序列化的 XML 作為參數傳入。
XML Web 服務方法執行其代碼,最終會設置返回值和任何輸出參數(ref及out)。
Web 服務器上的基礎結構將返回值和輸出參數序列化為 SOAP 消息,并通過網絡將其發送回客戶端。
客戶端計算機上的 XML Web 服務基礎結構接收該 SOAP 消息,將 XML 反序列化為返回值和任意輸出參數,并將其傳遞給代理類的實例。
客戶端接收返回值和任何輸出參數。
創建 XML Web 服務類似于創建任何提供對其應用程序邏輯的編程訪問的組件。要創建一個 XML Web 服務,您需要一些功能來構成這一要公開的服務,需要一個服務描述來定義如何使用該服務,并需要一個基礎結構來支持請求的接收和處理以及響應的發送。值得慶幸的是,已經為您提供了所需基礎結構的很大一部分。
由于 XML Web 服務可以使用 URL、HTTP 和 XML 進行訪問,這就意味著在任何平臺上以任何語言運行的程序都可以訪問 XML Web 服務。由于 XML Web 服務的分散式性質,使客戶端和 XML Web 服務能夠作為自治單元運行,因此,使用 XML Web 服務的方法數不勝數。例如,對 XML Web 服務的調用可以包含在 Web 應用程序、中間件組件甚至其他 XML Web 服務中。無論 XML Web 服務客戶端采用何種形式,調用 XML Web 服務所需的全部條件就是,按照 XML Web 服務已發布的服務描述發送格式正確的請求消息。根據 XML Web 服務的性質,它可能會發送響應消息作為回應。然后,發出請求的一方必須能夠從該消息中提取必要的信息。
新聞熱點
疑難解答