如何版本WCF服务

And*_*eas 2 versioning wcf

有没有一种很好的方法来版本化WCF服务中的数据类型和方法?

这样的东西在1.0版到4.5版中包含一个方法会很不错.

[ServiceContract()]
interface ITradeTrackingService
{
    [OperationContract()]
    [Version(1.0, 4.5)]
    void PublishQuote(Quote quote);
}
Run Code Online (Sandbox Code Playgroud)

在数据类型上有类似的东西.

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

server.com/ws/2.3/
Run Code Online (Sandbox Code Playgroud)

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

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

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

这只是我的梦想还是可以通过某种方式完成?

tom*_*ern 7

有很多关于服务版本控制的东西 - 你需要考虑许多事情.

在这里概述关于版本控制的最低摩擦文章,但是,在某些地方看起来有点"hacky",特别是在使用接口继承来版本化端点契约的地方(参见此处的示例).

微软自己有很多话要说(在这里).