WCF API部署版本控制

Mit*_*dia 5 api wcf

我只是想开发.NET WCF API.我们可能需要经常更新API.

如何管理多个版本的API部署?

tom*_*ern 6

对服务进行版本控制是一个涉及许多考虑因素和指南的重要主题

首先,您可以进行不同类别的更改; 完全断裂,半断裂和不断裂.

不间断的更改(现有客户无需更改)包括:

  • 在保持暴露合同不变的同时改变服务的内部实施
  • 以不破坏客户端的方式更改合同类型,例如,通过向操作返回类型添加字段(大多数序列化程序将引发事件而不是在反序列化时遇到意外字段时抛出异常)
  • 多态公开新类型(使用ServiceKnownType属性)
  • 更改服务的实例管理设置(按次调用单例,无会话到会话等,虽然有时需要配置甚至代码更改)

半破坏的更改(通常可以在客户端上配置)包括:

  • 更改服务的位置
  • 改变服务暴露的传输类型(尽管从双向传输到单向传输 - 例如http到msmq - 可能是一个完全破坏的变化)
  • 改变服务的可用性(通过使用服务窗口等)

完全破坏性的更改(需要新版本的客户端)包括:

  • 更改服务操作签名
  • 以破碎方式更改暴露类型(删除字段等)

当您要进行半破坏或完全改变时,您应该评估执行此操作的最佳方法.您是否强制所有客户升级以使用新版本,或者您是否在不同端点共同托管该服务的两个版本?如果您选择后者,那么您将如何控制和管理可能引入的不同版本依赖关系的传播?

考虑到极端情况,您可以查看动态端点解析,从而客户端使用某种解析器服务解析在运行时调用的合适端点.

这里有很好的阅读:http: //msdn.microsoft.com/en-us/library/ms731060.aspx