本章節主要目的:服務契約的基礎知識
服務契約與代碼
首先從接口入手[ServiceContract]特性定義了服務契約,然後通過[OperationContract]特性定義方法。
示例代碼如下:
以上DEMO CODE是一個計算器的加的功能接口。在接口ICalculator上附加[ServiceContract]特性後說明這是一個服務契約,對外公開。函數上的[OperationContract]特性定義操作方法,對外公開。
接下來介紹一個微軟的工具svcutil.exe,可以容易的將服務生成代碼,接下使用這個工具提取上段代碼的元數據。
在Visual Studio 命令提示符下,執行svcutil.exe [路徑]\[名稱].dll
示例svcutil.exe C:\Users\Sunnes001\Desktop\WCF服務契約重載\WCF服務契約重載\WCF服務契約重載\bin\WCF服務契約重載.dll
大家可以看到生成了3個文件,以下對3個文件的作用進行描述。
tempuri.org.wsdl WSDL文檔,包括對XSD文件的引用、消息的定義、端口的類型和服務的操作
tempura.org.xsd 用於方法特性的XSD Schema
schemas.microsoft.com.2003.10.Serialization.xsd 用於簡單.NET類型的標準XSD Schema
schemas.microsoft.com.2003.10.Serialization.xsd下載
源代碼與WSDL元素之間的映射規則
WSDL元素 源代碼
消息名稱:ICalculator_Add 接口名稱_方法名稱+輸入/輸出
端口類型名稱:ICalculator 接口名稱
操作名稱:Add 方法名稱
到此應該可以瞭解到了,在代碼定義的特性都會在WSDL文檔中通過以上的映射規則映射。
接下來對以上接口的實現
WCF中的接口和普通的接口是一樣的要求,必須實現每個接口。
代碼
以下是客戶端對服務端的引用:
引用成功後就可以在客戶端調用了
代碼如下: