zoukankan      html  css  js  c++  java
  • WCF 实体更改发布后,如何不影响调用方?

    应用场景:使用 WCF 有一个坏处,就是如果我们经常对 WCF 应用程序更新,有时候调用方也要进行 Update Service,但调用方往往会很多,那么这个工作就会很讨厌,比如 WCF Service 返回的实体类型更改了,这时候不更新调用方就会报错,怎么解决这个问题?

    原始 ProductDTO:

    namespace Sample.App.Application.DTO
    {
        [Serializable]
        [DataContract]
        public class ProductDTO
        {
            [DataMember]
            public int ID { get; set; }
            [DataMember]
            public string Name { get; set; }
            [DataMember]
            public string Size { get; set; }
        }
    }
    

    更改后的 ProductDTO:

    namespace Sample.App.Application.DTOs
    {
        [Serializable]
        [DataContract]
        public class ProductDTO
        {
            [DataMember]
            public int ID { get; set; }
            [DataMember]
            public string Name { get; set; }
            [DataMember]
            public string Size { get; set; }
            public string Remark { get; set; }
        }
    }
    

    两个更改:

    • 命名空间 Sample.App.Application.DTO 改为 Sample.App.Application.DTOs。
    • 增加 Remark,但是不想暴露给调用方。

    如果我们不更新调用方,这时候将获取不到 ProductDTO,但不会报错。

    解决方式:

    namespace Sample.App.Application.DTOs
    {
        [Serializable]
        [DataContract(Namespace = "http://schemas.datacontract.org/2004/07/Sample.App.Application.DTO")]
        public class ProductDTO
        {
            [DataMember]
            public int ID { get; set; }
            [DataMember]
            public string Name { get; set; }
            [DataMember]
            public string Size { get; set; }
            [IgnoreDataMember]
            public string Remark { get; set; }
        }
    }
    

    注:

    • DataContract - Namespace:自定义类型命名空间,和调用方保持一致。
    • IgnoreDataMember:忽略属性映射。
  • 相关阅读:
    [读书笔记]子查询
    [读书笔记]SQL约束
    [转载]NoSQL数据库的基础知识
    利用C#实现对excel的写操作
    [转载]SQL Server内核架构剖析
    利用花生壳和IIS发布网页过程
    [读书笔记]ASP.NET的URL路由引擎
    [翻译]比较ADO.NET中的不同数据访问技术(Performance Comparison:Data Access Techniques)
    [正则表达式]基础知识总结
    CF623E Transforming Sequence
  • 原文地址:https://www.cnblogs.com/xishuai/p/4786791.html
Copyright © 2011-2022 走看看