0

因此,在过去,我工作的网站依赖于将数据访问直接与应用程序和视图代码混合在一起的单层架构。我最近让团队相信实现数据访问服务层 (API) 的优势;尤其是最近关于水平扩展的讨论(本机移动应用程序等)。

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

数据类示例列表:

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

(希望这些对象相关的方式足以说明我的观点)

服务要求

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

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

示例请求:

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

在我的研究中,我遇到了这篇MSDN 文章,其中概述了创建 API 的几种标准方法。我很想听听每种方法的优缺点,以及哪种方法似乎最适合我上面描述的模型。

4

1 回答 1

1

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

阅读“存储库模式”单元的工作模式“控制反转可选额外。如果你准备把 50 美元放在桌面上,http: //Pluralsight.com上有一些优秀的视频教程来引导 你了解这些概念. 甚至是示例应用程序等。在我看来,这 50 美元是物有所值的(订阅 1 个月)。

我特别推荐 Julie Lerman 的关于 EF 和企业架构的复数视觉视频。那里有一些非常好的提示。

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

于 2012-12-19T01:41:51.240 回答