【问题标题】:Ways to version WCF services版本化 WCF 服务的方法
【发布时间】:2012-04-24 08:42:52
【问题描述】:

有没有很好的方法来对 WCF 服务中的数据类型和方法进行版本控制?

在 1.0 到 4.5 版本中包含这样的方法会很好。

[ServiceContract()]
interface ITradeTrackingService
{
    [OperationContract()]
    [Version(1.0, 4.5)]
    void PublishQuote(Quote quote);
}

还有一些在数据类型上类似的东西。

然后我想在我的网址中这样做:

server.com/ws/2.3/

然后在我的 Global.asax BeginRequest 中执行以下操作:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    Service.Version = someParsingOfUrl(); // return 2.3;
}

然后公开正确的方法,并公开数据类型中的正确值。

这只是我在做梦还是可以通过某种方式做到这一点?

【问题讨论】:

标签: wcf versioning


【解决方案1】:

有一个关于服务版本控制的bunch of stuff - 您需要考虑很多事情。

我读过的关于版本控制的最低摩擦文章概述了here,但是,它在某些地方似乎有点“hacky”,特别是在您使用接口继承来版本化端点合同的地方(参见示例here)。

微软自己对此有很多话要说 (here)。

【讨论】:

    【解决方案2】:

    微软在 WCF 中发表了一篇关于Versioning Strategies 的优秀文章。

    在文章中,作者讨论了 Versioning Service Contracts 的两种主要方法:

    敏捷版本控制:尽可能长时间地依赖向后兼容性,并避免正式的合同和端点版本控制,直到兼容性被破坏。这种方法在需要频繁更新生产代码的敏捷环境中很有用。

    严格版本控制:对服务合同、数据合同、消息合同或其他与合同或端点相关的更改的任何更改执行正式的合同和端点版本控制。这种方法最适合生产更新频率较低或需要详细跟踪任何和所有更改的环境。

    还有一种称为半严格版本控制的方法,它位于敏捷和严格版本控制之间。

    链接的文章还讨论了数据合同的版本控制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多