zoukankan      html  css  js  c++  java
  • wcf契约随记

    1.wcf契约分为:服务契约,操作契约,消息契约、数据契约

    -------------------服务契约:

    [ServiceContract( Name = "name_IUser", Namespace = "http://localhost:3232/wpf/aa")]

    配置元数据交换

     <endpoint address="mex" binding="mexHttpBinding"  contract="IMetadataExchange">

     </endpoint>//系统内置的数据元数据交换掉的协议;

    -------------------操作契约:

    [OperationContract(Name = "name_GetName", Action = "http://localhost:3232/wpf/aa/ServiceContract/GetName")]

    参数重命名:

    void SetName([MessageParameter(Name="")]string name);

    返回值重命名

    [return:MessageParameter(Name="")]

    标记单工通信

    [OperationContract(IsOneWay = true)]//默认为false;

    -------------------数据契约:

    -添加引用:using System.Runtime.Serialization;

    [DataContract(Name = "name_DataUser", Namespace = "http://localhost:3232/wpf/aa")]

    数据成员:

    --数据契约序列化器案例:

     Person p = new Person();

                p.Name = "郭泽峰";

                DataContractSerializer ds = new DataContractSerializer(typeof(Person));

                FileStream fs = new FileStream("cc.xml", FileMode.Create);

                ds.WriteObject(fs, p);

                fs.Close();

    [DataMember(Name="name_Name",IsRequired=false,Order=0)]//IsRequired:约束是否必须,order:序列化时的顺序;

    为标记的不进行序列化;

    1.wcf为了实现soa思想丢失了面向对象的许多特性,比如多态,为了继续使用多态,添加了knowtype(已知类型),在服务中暴露基本类型。标记为派生类并参与序列化;标记后就可以进行里氏替换了;否则转换会剖出异常;

    2.在接口上标记已知类型:[serviceKnowType(typeOf())],这样接口里的所有方法声明都可以进行里氏替换;

    3.只针对接口中某些特定方法定义的话,加到特定方法声明上就可以了;

    -------------------消息契约:为了可以自定义soap格式;header和body;

    [MessageContract(IsWrapped=true,ProtectionLevel=ProtectionLevel.Sign)]//消息契约

    [messageHeader(ProtectionLevel=ProtectionLevel.EncryptAndSign)]

    [messageBodyMember]

  • 相关阅读:
    tcpdump 抓包
    mysql常用日期函数
    接口自动化测试,一键快速校验接口返回值全部字段
    实训项目
    vue proxyTable 代理方式 解决 跨域pathRewrite
    cookie, session, token 发展史
    Failed to set locale, defaulting to C.UTF-8
    java String与Integer的相互转化
    java LocalDateTime 常用 转换 方法
    Java命令里面的EQ、NE、GT、LT、GE、LE分别代表含义
  • 原文地址:https://www.cnblogs.com/guozefeng/p/3405663.html
Copyright © 2011-2022 走看看