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:忽略属性映射。
  • 相关阅读:
    android彻底结束进程的两种方法
    清理软件缓存
    android webview 设置
    创建和使用Android library工程
    如何使Android应用程序获得root权限
    自动安装mysql5.7shell脚本实现与ansible脚本实现
    老生常谈:Asp.net Mvc 3 加载cshtml文件创建自定义分页
    老生常谈: Asp.net Mvc3 加载cshtml文件自定义分页+ 查询
    Razor API翻译
    Asp.net MVC 3使用 Area 小结
  • 原文地址:https://www.cnblogs.com/xishuai/p/4786791.html
Copyright © 2011-2022 走看看