WCF 实体更改发布后,如何不影响调用方?
2023-02-18 15:32:38 时间
应用场景:使用 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:忽略属性映射。
相关文章
- PromQL的简单使用
- Prometheus基于文件的服务发现
- Prometheus重新标记
- Prometheus的单机部署
- Vim的简单使用
- SpringBoot整合kafka
- kafka生产者和消费者api的简单使用
- kafka错误之 Topic xxx not present in metadata after 60000 ms
- kafka的基本概念
- 处理微信回调事件
- 微信公众号开发接入
- kafka集群搭建
- Spring Cloud Alibaba Nacos Config 的使用
- Spring Cloud Gateway GatewayFilter的使用
- Spring Cloud Gateway Route Predicate Factory 的使用
- Charles的简单用法
- Spring Cloud Alibaba整合Sentinel
- Spring Cloud Alibaba 的服务注册与发现
- 阿里Nacos部署
- SpringBoot整合多个RabbitMQ