• WCF运用XML序列化接口通讯


    最近客户那里提出要用RESTful服务,并且指明要用标准的XML形式进行数据传输。

    那么在WCF这个开发平台下,如何实现呢?WCF默认采用DataContract形式序列化,即不管你的服务接口上有没有使用DataContract序列化属性,WCF都是使用这个序列化属性的。如果想使用XML形式序列化。那么就要在服务接口上添加[XmlSerializerFormat]这个属性。例如以下代码:

     // 注意: 如果更改此处的接口名称 "IService1",也必须更新 Web.config 中对 "IService1" 的引用。
        [ServiceContract]
        [XmlSerializerFormat]
        
    public interface IVisitCostService
        {

        }

    另外,在你的数据契约上也要添加[Serializable]属性,并且相关字段也要有[XmlArray]、[XmlArrayItem]属性。例如以下代码:

        [Serializable]
        [XmlType(AnonymousType 
    = false)]
        [XmlRoot(Namespace 
    = "", IsNullable = false)]
        public class VisitCostRequest
        {
            
    /// <summary>
            
    /// Initializes a new instance of the <see cref="VisitCostRequest"/> class.
            
    /// </summary>
            public VisitCostRequest()
            {
                CountryCodes 
    = new Collection<string>();
            }
            
    /// <summary>
            
    /// Gets or sets the Countries list
            
    /// </summary>
            [XmlArray("Country")]
            [XmlArrayItem(
    "Code")]
            
    //[DataMember(Name = "CountryCodes")]
            public Collection<string> CountryCodes { getset; }
        }

    这样一来,由WCF形成的RESTful web service就可以用标准的XML格式与任意调用的客户端进行通讯了。

    文章出处:www.cnblogs.com/jizhong

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。否则保留追究法律责任的权利。

  • 相关阅读:
    练习:利用函数写一个扑克牌列表
    练习:利用函数实现一个登陆系统
    练习:利用函数实现一个注册系统
    函数的进阶
    Python的函数, 返回值, 参数
    Python中文件的读写操作
    练习:根据车牌信息,统计各省车牌持有量
    练习: 三次机会登录系统
    Chapter06_类与对象、封装、构造方法
    创建对象时,该对象的成员变量如果不赋值的情况下,默认值是
  • 原文地址:https://www.cnblogs.com/jizhong/p/2030143.html
Copyright © 2020-2023  润新知