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);
如果需要深入了解,可以查看以下
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
深入了解:
4、DataMember(數據成員協定)
全名: System.Runtime.Serialization.DataMemberAttribute
功能:指定該成員是數據協定的一部分並可由 DataContractSerializer 進行序列化。
簡單一句話:標識數據協定的成員
案例:
[DataMember] public bool BoolValue { get { return boolValue; } set { boolValue = value; } }
如需深入了解: