使用 WCF 数据服务的多个版本
开放式数据协议 (OData) 允许使用标准的 HTTP 上的 Internet 协议远程访问数据源。新版本的 OData 发布后,客户端应用程序可能无法使用数据服务所支持的相同 OData 版本。旧的客户端应用程序可以使用较新的 OData 版本访问数据服务,或者客户端应用程序可以使用 WCF 数据服务 客户端库的较新版本,该版本支持比所访问的 OData 源更新的 OData 版本。
WCF 数据服务 利用 OData 提供的支持来处理此类版本管理方案。还支持在客户端使用不同于数据服务所用版本的 OData 时生成和使用数据模型元数据以创建客户端数据服务类。有关更多信息,请参见 OData:协议版本管理(可能为英文网页)。
协议版本
无论客户端请求的版本如何,都可以将数据服务配置为定义该服务将使用的最高 OData 协议版本。可以通过为数据服务使用的 DataServiceBehavior 的 MaxProtocolVersion 属性指定 DataServiceProtocolVersion 值来执行此操作。有关更多信息,请参见配置数据服务(WCF 数据服务)。
当应用程序使用 WCF 数据服务 客户端库来访问数据服务时,这些库会根据 OData 的版本以及在您的应用程序中使用的功能自动将这些标头设置为正确值。默认情况下,WCF 数据服务 使用支持请求的操作的最低协议版本。
下表详细说明了包含对特定 OData 协议版本的 WCF 数据服务 支持的 .NET Framework 和 Silverlight 版本。
OData 协议版本 | 支持引入方式 |
---|---|
版本 1 |
|
版本 2 |
|
元数据版本
默认情况下,WCF 数据服务 使用 1.1 版的 CSDL 表示数据模型。对于基于反射提供程序或自定义数据服务提供程序的数据模型始终如此。但是,如果数据模型是使用实体框架 定义的,则返回的 CSDL 版本就是该实体框架 所用的版本。CSDL 的版本由架构元素的命名空间确定。有关更多信息,请参见规范 [MC CSDL]:概念架构定义文件格式。
返回的元数据的 DataServices 元素还包含一个 DataServiceVersion 特性,该特性的值与响应消息中 DataServiceVersion 标头的值相同。客户端应用程序(如 Visual Studio 中的**“添加服务引用”**对话框)使用此信息生成可以正确使用承载数据服务的 WCF 数据服务 版本的客户端数据服务类。有关更多信息,请参见 OData:协议版本管理(可能为英文网页)。