基于JSON API为数据访问层构建网站的任何缺点

时间:2015-02-04 15:09:24

标签: json database api data-access-layer

例如,在电子商务网站中,我们通常有两个界面。客户与之交互并下订单的公司,以及与公司员工进行交互以管理订单和客户等的订单。

如果我们将此网站划分为两个不同的网站。这意味着,两个不同的项目在一起,而不是彼此依赖。两个网站之间唯一共同的东西就是数据库。两个网站都将使用相同的数据库。那么什么是制作数据访问层

的好方法
  1. 每个网站都有自己的数据库访问代码和实体。
  2. 将两个网站链接到一个集中层 - 使用基于JSON的API公开读/写数据库
  3. 在我看来,第二种选择会更好。由于它取消了数据库的依赖性,因此不需要在两个地方进行数据库中的任何更改。还有很多其他好处。

    但我唯一担心的是,它能阻碍整个系统的性能?因为在这种情况下,我们正在对对象进行序列化和反序列化,并且还使用HTTP连接。

    与有自己的数据库访问代码相比,有人可以对API支持的数据访问层的优点和缺点进行一些说明。

2 个答案:

答案 0 :(得分:2)

人们不同意这种事情的最佳架构,但一个常见且流行的架构指南建议您不惜一切代价避免在数据库层集成两个产品。拥有两个可以彼此独立更改的独立应用程序和数据库更简单,如果需要从另一个中引用数据,则应该在esb上配置的两个之间存在某种事件管道。

而且,你应该有两个以上的后端数据库 - 除非你有一个非常简单的系统只有你提到的两类对象,你可能会发现你有两个以上的有界域。

此外,如果您的性能要求增加,那么您可能希望看看拆分服务和数据库的读写端,通过某种事件系统(可能是事件源)连接双方。

在决定做什么之前,您应该阅读Implementing Domain Driven Design by Vaughn Vernon。并且,关于CQRS by Martin Fowler的论文。关于event sourcing, also from Dr Fowler的论文。要获得额外积分,您还应阅读Fowler on Microservices architecture

最后,在JSON上 - 我是一个很大的粉丝 - 但是如果你要在后端使用javascript,你应该只在存储库界面使用它(如果你使用的话,这是一个好主意io.jsKoa)以及前端(backbone& marionette,请),或者如果您使用的是本机发出json的数据源。如果你必须解析它,那么它只会减慢你的速度,所以使用一些本地数据源及其消费者的格式,这样你就会尽可能快。

答案 1 :(得分:1)

以数据为标准化的API中心方法更有意义,并且可以通过任何语言为一个或多个接口使用,从而为您提供更大的灵活性。

性能方面,这在很大程度上取决于API背后的技术堆栈的质量和实现。您还可以查看在前端缓存某些数据以改善页面加载时间。

moltin的那些人已经建立了这样一个平台,我使用它取得了很大的成功。已经有一个后端仪表板,响应时间也非常快!