使用许多Web API服务时是否有必要复制数据?

时间:2015-10-08 15:16:28

标签: c# asp.net web-services asp.net-web-api soa

我正在创建一个基于多个Web API服务的架构,我正在寻找构建数据的最佳方法。数据在当前结构中重复。

我有一个应用程序数据库和Web API项目,用于存储和管理在公司内创建的所有应用程序。它包含名称和GUID。

使用Web API服务检索和管理此信息。

我有另一个管理车辆类型的API服务和数据库。我遇到的问题是某些车辆类型只能由某些应用程序使用。因为这, 车辆类型系统需要了解应用程序数据库中存在的应用程序。例如,客户可以发出获取请求以查看某个应用程序可以访问的所有车辆类型。

所以在这个数据库中我会有三个表,车辆类型,应用程序,车辆类型应用程序链接。 我需要在车辆类型数据库中完整复制应用程序数据库,以便管理此映射。

这种重复感觉不太对劲。数据必须在多个地方进行管理并保持同步。 这也不是一个孤立的案例。随着公司基础设施的发展,许多其他服务将对产品表产生很大的依赖。 我不愿意在各处制作副本。

对于像这样的场景中管理数据的最佳方法,您有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我不会将应用知识嵌入到车辆服务中。这不会扩大规模。

我也想知道为什么管理车辆类型不是单一车辆服务的省份。

如果这是一项REST服务,我会将车辆数据库划分为不同的资源/文件夹/ URL,以便应用程序可以询问他们有权获得什么。 HTTP GET查询的URL可能是https://host/vehicle/type/{type}

如果要强制执行应用程序的权限,可能需要考虑的另一件事是基于角色的安全性。提供仅允许那些允许使用这些资源和凭据的URL的URL。

听起来车辆服务是应用程序在交易中使用的参考数据。应用程序可以请求车辆实例,但它不是"重复"。车辆服务仍然是事实的来源。