官术网_书友最值得收藏!

1.3.2 步驟二 創建服務契約

WCF采用基于契約的交互方式實現了服務的自治,以及客戶端和服務端之間的松耦合。WCF包含4種類型的契約:服務契約、數據契約、消息契約和錯誤契約,這里著重于服務契約。從功能上講,服務契約抽象了服務提供的所有操作;而站在消息交換的角度來看,服務契約則定義了基于服務調用的消息交換過程中,請求消息和回復消息的結構,以及采用的消息交換模式。第4章將提供對服務契約的詳細介紹。

一般地,我們通過接口的形式定義服務契約。通過下面的代碼,將一個接口ICalculator定義成服務契約。WCF廣泛采用基于自定義特性(Custom Attribtue)的聲明式編程模式,我們通過在接口上應用System.ServiceModel.ServiceContractAttribute特性將一個接口定義成服務契約。在應用ServiceContractAttribute特性的同時,還可以指定服務契約的名稱和命名空間。至于契約名稱和命名空間的含義和作用,請參閱第4章,在這里我們將契約名稱和命名空間設置成CalculatorService和http://www.artech.com/

通過應用ServiceContractAttribute特性將接口定義成服務契約之后,接口的方法成員并不能自動成為服務的操作。在此方面,WCF采用的是顯式選擇(Explicit Opt-in)的策略:我們須要在相應的操作方法上面顯式地應用OperationContractAttribute特性。

        using System.ServiceModel;
        namespace Artech.WcfServices.Contracts
        {
            [ServiceContract(Name="CalculatorService", Namespace=
              "http://www.artech.com/")]
            public interface ICalculator
            {
              [OperationContract]
              double Add(double x, double y);
              [OperationContract]
              double Subtract(double x, double y);
              [OperationContract]
              double Multiply(double x, double y);
              [OperationContract]
              double Divide(double x, double y);
            }
        }
主站蜘蛛池模板: 博野县| 巴彦淖尔市| 界首市| 芦山县| 新邵县| 延长县| 南城县| 阳新县| 噶尔县| 高平市| 茶陵县| 保定市| 宣城市| 辰溪县| 鲁山县| 汶川县| 高碑店市| 连南| 图片| 泸水县| 舟曲县| 叶城县| 谷城县| 饶平县| 三门峡市| 宁乡县| 滕州市| 吉林市| 抚顺市| 鄄城县| 苏尼特左旗| 黄骅市| 南投市| 景德镇市| 抚宁县| 浏阳市| 桓仁| 武陟县| 高雄县| 峡江县| 岚皋县|