• 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:忽略属性映射。
  • 相关阅读:
    HDU.2087 剪花布条
    一个acm过来人的心得
    一个acm过来人的心得
    HDU.2190 悼念512汶川大地震遇难同胞——重建希望小学
    HDOJ.2501 Tiling_easy version
    HDOJ.2501 Tiling_easy version
    HDU
    poj3216 Prime Path(BFS)
    poj1426 Find The Multiple (DFS)
    Rikka with Nickname (简单题)
  • 原文地址:https://www.cnblogs.com/xishuai/p/4786791.html
Copyright © 2020-2023  润新知