API数据服务层的最佳解决方案

时间:2012-12-19 01:32:10

标签: web-services entity-framework api architecture data-access-layer

所以在过去,我所使用的网站依赖于单层架构,它将数据访问直接与应用程序和视图代码混合在一起。我最近向团队说服了实施数据访问服务层(API)的优势;特别是最近有关水平扩展(本机移动应用程序等)的讨论。

现在想到的实现涉及使用Entity Framework将数据库映射到客户端将使用Data Contract服务请求的WCF类。
我以前在较小的规模上使用过这种方法,但现在有大量数据对象的范围,每个数据对象都有许多标准可供查询,我在设想如何构建API时遇到了问题。

示例数据类列表:

  • 产品
  • 商户
  • 品牌
  • 分类
  • 优惠券
  • 用户
  • 评论
  • 问题
  • 答案

(希望这些对象的相关方式非常明显,可以说明我的观点)

服务要求

  • 服务必须与语言无关(.net,php,java,objective c)
  • 模式必须允许几个不同的数据源充当一个api(假设我们的用户存储在MSSQL服务器中,我们的MySQL中的评论系统,我们的产品来自XML提要)
  • 必须能够从API端实现对象缓存

这些数据对象中的每一个基本上都需要基于其中的几个列进行查询(以返回单个对象或集合)。虽然我可以为每个不同的场景编写一个新的API方法,但我认为必须有一个更优雅的方法来做到这一点。

示例请求:

  • 按ID获取单品。
  • 获取按“创建日期”,“价格”或“折扣百分比”排序的特定商家,品牌或分类的产品列表。
  • 获取用户提交的所有评论
  • 获取产品的所有评论
  • ...

在我的研究中,我遇到了这个MSDN Article,概述了几种创建API的标准方法。我有兴趣听取每种方法的优点和缺点,以及哪种方法似乎符合我上面描述的最佳模型。

1 个答案:

答案 0 :(得分:1)

基本上有很多模式可以做到这一点。 UI Layer =>数据访问层=>核心层 EF用于DAL,模型和CORE中的逻辑。 Core声明了要使用的其他其他层的接口和模型。

对“存储库模式”单元工作模式进行一些阅读“控制反转可选附加。 如果您准备将50USD放在桌面上,http://Pluralsight.com上有一些优秀的视频教程可以引导您完成这些概念。甚至样品应用程序等.50USD在我看来(1个月订阅)。

我特别推荐Julie Lerman在EF和企业架构上的复制视频。 那里有一些很好的提示。

我使用这样的模式。而且效果很好。