Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WCF服务的版本设置方法_Wcf_Versioning - Fatal编程技术网

WCF服务的版本设置方法

WCF服务的版本设置方法,wcf,versioning,Wcf,Versioning,是否有一种很好的方法来版本化WCF服务中的数据类型和方法 在1.0版到4.5版中包含这样的方法会很好 [ServiceContract()] interface ITradeTrackingService { [OperationContract()] [Version(1.0, 4.5)] void PublishQuote(Quote quote); } 数据类型上也有类似的东西 然后我想在我的url中这样做: server.com/ws/2.3/ protect

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

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

[ServiceContract()]
interface ITradeTrackingService
{
    [OperationContract()]
    [Version(1.0, 4.5)]
    void PublishQuote(Quote quote);
}
数据类型上也有类似的东西

然后我想在我的url中这样做:

server.com/ws/2.3/
protected void Application_BeginRequest(object sender, EventArgs e)
{
    Service.Version = someParsingOfUrl(); // return 2.3;
}
然后在我的Global.asax BeginRequest中执行以下操作:

server.com/ws/2.3/
protected void Application_BeginRequest(object sender, EventArgs e)
{
    Service.Version = someParsingOfUrl(); // return 2.3;
}
然后暴露正确的方法,暴露数据类型中的正确值

这只是我在做梦,还是可以以某种方式完成?

< P>有一个关于服务版本控制的事情,有很多事情需要考虑。p> 我所读到的关于版本控制的文章中有一篇是概述的,但是,在某些地方似乎有点“黑客”,特别是在使用接口继承来对端点契约进行版本控制的地方(参见示例)


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

微软在WCF上发表了一篇优秀的文章

在本文中,作者讨论了两种主要的服务契约版本控制方法:

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

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

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

链接文章还讨论了数据契约的版本控制

可能重复的