WCF API部署版本控制

WCF API部署版本控制,wcf,api,Wcf,Api,我只是想开发.NETWCFAPI。我们可能需要经常更新API 如何管理API部署的多个版本 对您的服务进行版本控制是一个有很多考虑因素和指导原则的巨大主题 首先,您可以进行不同类别的更改;完全断裂、半断裂和非断裂 非破坏性更改(无需更改现有客户端)包括: 更改服务的内部实现,同时保持公开的契约不变 以不中断客户端的方式更改协定类型,例如,通过向操作返回类型添加字段(大多数序列化程序在反序列化时遇到意外字段时会引发事件而不是引发异常) 以多态方式公开新类型(使用ServiceKnownType属

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


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

对您的服务进行版本控制是一个有很多考虑因素和指导原则的巨大主题

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

非破坏性更改(无需更改现有客户端)包括:

  • 更改服务的内部实现,同时保持公开的契约不变
  • 以不中断客户端的方式更改协定类型,例如,通过向操作返回类型添加字段(大多数序列化程序在反序列化时遇到意外字段时会引发事件而不是引发异常)
  • 以多态方式公开新类型(使用ServiceKnownType属性)
  • 更改服务的实例管理设置(每次调用singleton、无会话到sessionful等,尽管有时这需要配置甚至代码更改)
半中断更改(通常可在客户端上配置)包括:

  • 更改服务的位置
  • 更改服务公开的传输类型(尽管从双向传输更改为单向传输(例如http到msmq)可能是一个完全破坏性的更改)
  • 更改服务的可用性(通过使用服务窗口等)
完全突破性的更改(需要新版本的客户端)包括:

  • 更改服务操作签名
  • 以中断方式更改公开类型(删除字段等)
当您打算进行半破坏性或完全破坏性的更改时,您应该评估执行此操作的最佳方式。您是强制所有客户端升级以使用新版本,还是在不同的端点上共同托管服务的两个版本?如果您选择后者,那么您将如何控制和管理可能引入的不同版本依赖项的传播

在极端情况下,您可以研究动态端点解析,客户机使用某种解析器服务解析运行时要调用的合适端点

这里有很多关于这方面的好读物:

首先,您的问题严重缺乏质量。首先,你要问三个独立的问题,所以你应该提出三个问题。第二,在已经回答的八个问题中,你只给出了其中两个问题的答案。这会阻止人们帮助你。请重新审视这些问题,并根据需要授予答案。谢谢hugh!我更新了问题的范围。对于迄今为止我收到的答案,我已经给出了我认为是解决方案的问题的答案,其余的都是没有导致任何适当解决方案的建议。希望您能理解。如果您收到的答案中没有一个能引导您找到解决方案,那么正确的做法是发布您找到的解决方案,然后将其标记为答案。然后,来问你问题的人至少可以看到你是如何解决的。当然,我会记下来的。我已经取消了我的否决票。我也试着回答你的问题。但是我仍然认为你需要在这个问题上努力。你问的不是具体的问题。如果您描述了您所面临的实际挑战,这将对您更有用,对我们也更容易。然后我可以更具体地回答。谢谢休!这将是一个开始。让我更详细地谈一谈。我计划部署一项服务,该服务将由本机移动应用程序使用。我想在访问服务URL时使用一些版本号,例如www.example.com/MyService/1.0/。我可能需要定期更新我的服务中的本机应用程序和添加/更新方法,并使用不同的版本号进行部署,这样我就可以运行多个版本的移动应用程序和服务,然后我可以考虑随时停用旧版本的移动应用程序和服务。