带有WCF数据服务后端的WebAPI OData前端

时间:2015-02-24 22:31:27

标签: entity-framework asp.net-web-api architecture wcf-data-services

在我正在开展的项目中,需要遵循以下架构(简化):

[WebAPI] - > [WCF - >实体框架] - > [数据库]

我已经看过很多演示版,您可以使用OData语法直接通过WebAPI公开您的实体模型。

我想知道,是否可以通过WebAPI OData服务(前端服务器)公开WCF OData服务(后端服务器),并获得OData过滤带来的好处。

例如:当我在WebAPI(http://domain.com/api/Customers?$filter=country eq 'USA')中过滤国家/地区时,我不希望从WCF获得所有客户。

谢谢!

1 个答案:

答案 0 :(得分:0)

  1. 如果您指的是WCF数据服务,它已经是支持过滤器的OData服务端点。

    e.g:

    http://services.odata.org/OData/OData.svc/Categories?$ filter =姓名eq'食物'

  2. 如果您的意思是EF支持WCF服务,那么您将使WebAPI OData服务成为WCF服务的代理。只要您可以编写客户端代码来使用WCF服务,这是可行的。

    请参阅: http://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/OData/v4/ODataServiceSample/ODataService/

    您可以简单地替换ProductsController :: Get中的代码片段,从WCF服务中检索数据,然后在那里返回数据。 [EnableQuery]属性将使查询选项可用。