zoukankan      html  css  js  c++  java
  • WCF

    1. 契约

      契约

        服务契约

    [ServiceContract(Name="HelloWorld",Namespace="http://oec2003.cnblogs.com"]
    public interface IHelloWorldService
    { 
    }

        数据契约

          DataContractAttribute

    特性有IsReference、Name和Namespace三个属性:

    IsReference: bool类型,表示在进行序列化的时候是否保持对象现有的引用结构。

    Name:名称。

    Namespace:命名空间。

    DataMemberAttribute

    特性有如下四个属性:

    EmitDefaultValue:表明在数据成员的值等于默认值的情况下,是否还须要将其序列化到最终的XML中,默认值为true,表示默认值会参与序列化。

    IsRequired:bool类型,表明属性成员是否是必须的成员,默认值为false。

    Name:数据成员的别名。

    Order:相应的数据成员在最终序列化的XML中出现的位置,默认是按字母顺序排列的。

    [DataContract(IsReference=true,Name="MyUser",Namespace="http://oec2003.cnblogs.com")]
    public class User
    {
        [DataMember]
        public int Age { get; set; }
        [DataMember(Name = "UserName", IsRequired = true, Order = 1)]
        public string Name { get; set; }
        [DataMember]
        public string Email { get; set; }
    }

        消息契约

          MessageContractAttribute

    通过在一个类型上使用MessageContractAttribute标记可以使之成为一个消息契约。MessageContractAttribute特性含有如下几个属性:

    IsWrapped:是否为定义的主体成员(一个或者多个)添加一个额外的根节点。

    WrapperName:根节点的名称。

    WrapperNamespace:根节点的命名空间。

    ProtectionLevel:表示保护级别,WCF中通过System.Net.Security.ProtectionLevel枚举定义消息的保护级别。一般有3种可选的保护级别:None、Sign和EncryptAndSign。

          MessageHeaderAttribute

    使用MessageHeaderAttribute标记的数据成员将会出现在SOAP消息的头部,该特性包含下面几个属性:

    Actor:为一个URI值,表示处理该报头的目标节点。

    MustUnderstand:bool类型,表明Actor定义的节点是否必须理解并处理该节点。

    Name:名称。

    Namespace:命名空间。

    ProtectionLevel:表示保护级别。

    Relay:表明该报头是否需要传递到下一个SOAP节点。

          MessageBodyMemberAttribute

    使用MessageHeaderAttribute标记的数据成员将会出现在SOAP消息的主体部分,该特性包含下面的属性:

    Order:Order属性用来控制成员在SOAP主体部分中出现的位置,默认按字母顺序排列。

    Name:名称。

    Namespace:命名空间。

    ProtectionLevel:表示保护级别

    [MessageContract(IsWrapped=false,WrapperName="MyMessage",WrapperNamespace="http://oec2003.com")]
    public class MessageTest
    {
        [MessageHeader(Actor="http://oec2003.com/Age",MustUnderstand=true,Name="MyAge",
            Namespace="http://oec2003.com",Relay=true)]
        public int Age { get; set; }
        [MessageHeader]
        public string Name { get; set; }
        [MessageBodyMember(Order = 1)]
        public string Email { get; set; }
    }
    <system.serviceModel>
        <services>
          <service name="WCFConsole.User" behaviorConfiguration="TestBehacior">
            <!--宿主-->
            <host>
              <baseAddresses>
                <add baseAddress="http://localhost:8080/User" />
              </baseAddresses>
            </host>
            <!--ABC-->
            <endpoint address="" binding="basicHttpBinding" contract="WCFDemo.IUser" >
            </endpoint>
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior name="TestBehacior">
              <serviceMetadata httpGetEnabled="true"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>
  • 相关阅读:
    如何搭建Redis集群
    AOP的作用
    IDEA上传代码到GitGub
    Runnable的作用及使用方式
    idea如何自动生成序列化ID?
    15000 字的 SQL 语句大全
    图解算法时间复杂度
    图解JVM的类加载机制(详细版)
    (转)图解排序算法之归并排序
    图解分布式id生成算法SnowFlake
  • 原文地址:https://www.cnblogs.com/Jacob-Wu/p/9392688.html
Copyright © 2011-2022 走看看