带有 WCF 数据服务后端的 WebAPI OData 前端
WebAPI OData frontend with WCF Data Services backend
在我正在进行的项目中,需要以下架构(简化):
[WebAPI] -> [WCF -> Entity Framework] -> [数据库]
我看过很多演示,您可以在其中使用 OData 语法直接通过 WebAPI 公开您的实体模型。
不过我想知道,是否可以通过 WebAPI OData 服务(前端服务器)公开 WCF OData 服务(后端服务器),从而获得 OData 过滤带来的好处。
例如:当我在我的 WebAPI (http://domain.com/api/Customers?$filter=country eq 'USA') 中过滤国家/地区时,我不想从 WCF 获取所有客户。
谢谢!
如果你说的是WCF数据服务,它已经是一个支持过滤器的OData服务端点了。
例如:
http://services.odata.org/OData/OData.svc/Categories?$filter=名称方程'Food'
如果您指的是由 EF 支持的 WCF 服务,那么您要使 WebAPI OData 服务成为 WCF 服务的代理。只要您可以编写客户端代码来使用 WCF 服务,这就是可行的。
您可以简单地替换 ProductsController::Get 中的代码片段,从 WCF 服务检索数据,然后 return 那里的数据。 [EnableQuery] 属性将使查询选项可用。
在我正在进行的项目中,需要以下架构(简化):
[WebAPI] -> [WCF -> Entity Framework] -> [数据库]
我看过很多演示,您可以在其中使用 OData 语法直接通过 WebAPI 公开您的实体模型。
不过我想知道,是否可以通过 WebAPI OData 服务(前端服务器)公开 WCF OData 服务(后端服务器),从而获得 OData 过滤带来的好处。
例如:当我在我的 WebAPI (http://domain.com/api/Customers?$filter=country eq 'USA') 中过滤国家/地区时,我不想从 WCF 获取所有客户。
谢谢!
如果你说的是WCF数据服务,它已经是一个支持过滤器的OData服务端点了。
例如:
http://services.odata.org/OData/OData.svc/Categories?$filter=名称方程'Food'
如果您指的是由 EF 支持的 WCF 服务,那么您要使 WebAPI OData 服务成为 WCF 服务的代理。只要您可以编写客户端代码来使用 WCF 服务,这就是可行的。
您可以简单地替换 ProductsController::Get 中的代码片段,从 WCF 服务检索数据,然后 return 那里的数据。 [EnableQuery] 属性将使查询选项可用。