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:忽略属性映射。
作者:田园里的蟋蟀
微信公众号:你好架构
出处:http://www.cnblogs.com/xishuai/
公众号会不定时的分享有关架构的方方面面,包含并不局限于:Microservices(微服务)、Service Mesh(服务网格)、DDD/TDD、Spring Cloud、Dubbo、Service Fabric、Linkerd、Envoy、Istio、Conduit、Kubernetes、Docker、MacOS/Linux、Java、.NET Core/ASP.NET Core、Redis、RabbitMQ、MongoDB、GitLab、CI/CD(持续集成/持续部署)、DevOps等等。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
微信公众号:你好架构
出处:http://www.cnblogs.com/xishuai/
公众号会不定时的分享有关架构的方方面面,包含并不局限于:Microservices(微服务)、Service Mesh(服务网格)、DDD/TDD、Spring Cloud、Dubbo、Service Fabric、Linkerd、Envoy、Istio、Conduit、Kubernetes、Docker、MacOS/Linux、Java、.NET Core/ASP.NET Core、Redis、RabbitMQ、MongoDB、GitLab、CI/CD(持续集成/持续部署)、DevOps等等。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。