WCF入門教程(三)定義服務協定--屬性標簽


WCF入門教程(三)定義服務協定--屬性標簽

屬性標簽,成為定義協議的主要方式。先將最簡單的標簽進行簡單介紹,以了解他們的功能以及使用規則。

服務協定標識,標識哪些接口是服務協定,哪些操作時服務協定的一部分,以及傳輸對象的定義。如果已經有所了解,請直接PASS。 

1、ServiceContract(服務協定)

全名:System.ServiceModel.ServiceContractAttribute

功能:指示接口或類在應用程序中定義服務協定。

簡單一句話:標識此接口是否是服務協定,是否需要公開為服務。

詳細:使用接口(或類)上的 ServiceContractAttribute 屬性定義服務協定。然后使用一個或多個類(或接口)方法中的 OperationContractAttribute 屬性定義協定的服務操作。實現服務協定后並將其與binding和 EndpointAddress 對象一起使用時,此服務協定將公開以供客戶端使用。

使用規則:

  • ConfigurationName 屬性指定要使用的配置文件中的服務元素的名稱。

  • Name 和 Namespace 屬性控制 WSDL <portType> 元素中的協定名稱和命名空間。

  • SessionMode 屬性指定協定是否需要支持會話的綁定。

  • CallbackContract 屬性指定雙向(雙工)對話中的返回協定。

  • HasProtectionLevel 和 ProtectionLevel 屬性指示是否所有支持協定的消息都具有一個顯式 ProtectionLevel 值,如果有,處於什么級別。

案例:

    [ServiceContract(Namespace="http://wcf.yank.com",Name="Service1",ProtectionLevel=ProtectionLevel.EncryptAndSign)]
    public interface IService1
    {
        [OperationContract]
        string GetData(int value);

        [OperationContract]
        CompositeType GetDataUsingDataContract(CompositeType composite);

        // TODO: 在此添加您的服務操作
    }

深入了解:

http://msdn.microsoft.com/zh-cn/library/system.servicemodel.servicecontractattribute(v=vs.100).aspx

 

2、OperationContract(操作協定)

全名: System.ServiceModel.OperationContractAttribute

作用:指示方法定義一個操作,該操作是應用程序中服務協定的一部分。

簡單一句話:標識哪些操作屬於服務協定一部分。如果不設置該屬性,使用者則看不到此方法。

使用 OperationContractAttribute 屬性控制該操作的結構以及以元數據表示的值:

  • Action 屬性指定唯一標識該操作的操作。 根據請求消息的操作將它們調度至方法。

  • AsyncPattern 屬性指示使用 Begin/End 方法對可以實現或異步調用該操作。

  • HasProtectionLevel 屬性指示是否已顯式設置 ProtectionLevel 屬性。

  • IsOneWay 屬性指示該操作只包含單個輸入消息。該操作沒有關聯的輸出消息。

  • IsInitiating 屬性指定該操作是否可以是會話中的初始操作。

  • IsTerminating 屬性指定該操作完成后, 是否試圖終止當前會話。

  • ProtectionLevel 屬性指定運行時操作要求的消息級安全性。

  • ReplyAction 屬性指定該操作答復消息的操作。

案例:

        [OperationContract]
        string GetData(int value);

如果需要深入了解,可以查看以下

http://msdn.microsoft.com/zh-cn/library/system.servicemodel.operationcontractattribute(v=vs.100).aspx

 

3、DataContract(數據協定)

 全名:System.Runtime.Serialization.DataContractAttribute

功能:指定該類型要定義或實現一個數據協定,並可由序列化程序(如 DataContractSerializer)進行序列化。若要使其類型可序列化,類型作者必須為其類型定義數據協定。

簡單一句話:定義數據協定,用於數據傳輸。

案例:

    // 使用下面示例中說明的數據協定將復合類型添加到服務操作
    [DataContract]
    public class CompositeType
    {
        bool boolValue = true;
        string stringValue = "Hello ";

        [DataMember]
        public bool BoolValue
        {
            get { return boolValue; }
            set { boolValue = value; }
        }

        [DataMember]
        public string StringValue
        {
            get { return stringValue; }
            set { stringValue = value; }
        }
    }

 

序列化時,也應用到此標簽,具體可見:

http://www.cnblogs.com/yank/p/3198082.html

深入了解:

http://msdn.microsoft.com/zh-cn/library/system.runtime.serialization.datacontractattribute(v=vs.100).aspx

 

4、DataMember(數據成員協定)

全名:  System.Runtime.Serialization.DataMemberAttribute

功能:指定該成員是數據協定的一部分並可由 DataContractSerializer 進行序列化。

簡單一句話:標識數據協定的成員

案例:

        [DataMember]
        public bool BoolValue
        {
            get { return boolValue; }
            set { boolValue = value; }
        }

如需深入了解:

http://msdn.microsoft.com/zh-cn/library/system.runtime.serialization.datamemberattribute(v=vs.100).aspx

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM