• 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

  • 相关阅读:
    Codeforces 977F
    Codeforces 219C
    Codeforces 1132
    Codeforces 660C
    Codeforces 603A
    Codeforces 777C
    Codeforces 677
    JNUOJ 1032
    Codeforces 677D
    Codeforces 835C
  • 原文地址:https://www.cnblogs.com/feng-NET/p/5142054.html
Copyright © 2020-2023  润新知