0

我正在开发一个新的应用程序(应用程序 2),我已经有一个现有的应用程序(应用程序 1)具有不错的用户群。

应用程序 2 针对相同的用户群,用户可以使用任何一个应用程序或两者都使用,我如何跨应用程序共享用户数据(多实体)?

选项 1 - 共享数据库听起来是个坏主意,因为我最终会在 2 个不同的地方编写验证规则。

选项 2 - 中央服务和数据存储将意味着重新编写大部分运行良好且代码库非常庞大的应用程序 1。

选项 3 - 将 App 1 数据存储区视为中央数据存储区并将其公开为 API。App 2 可以使用它来读取和写入数据。对于这个解决方案,我仍然有几个问题 -

  • 应用 2 现在依赖于应用 1,这意味着应用 1 问题会影响应用 2。我可以通过在应用 2 中缓存数据来解决这个问题。这会导致其他问题。
  • App 1 中更改的数据不会立即反映在 App 2 中,这是要求之一。我可以通过 App 1 和 App 2 之间的发布/订阅模型来解决这个问题。
  • 应用程序 2 始终使用 API 将数据写入应用程序 1 数据存储区,我可以将数据推送回应用程序 2,但它并不一致,而是最终一致。
  • App 2 将数据写入自己的数据存储区,然后异步推送到 App 1。这会导致数据冲突问题。

我如何在不给我的两个应用程序引入巨大复杂性的情况下处理这个问题。

4

2 回答 2

1

这是我的两分钱。

最简单的方法是让您共享同一个数据库,并且由于您提到数据库可以共享,这意味着来自 App1 的域规则仍然适用于 App2,即使存在一些差异,最好编写这些更改而不是写整件事。

现在,您确实有一个大问题 IMO,因为如果我理解得很好,您没有适当的服务层,因为如果您这样做了,您实际上可以对 DAL 进行任何更改而不会影响现有的 1。

在我进一步讨论之前,我实际上需要更多地了解您当前的架构,否则我最终会做出错误的假设。

  • 您使用什么样的 Web 应用程序框架,例如:ASP.Net MVC
  • 你有服务/API 层吗?域和 DAL 层呢?

更新

因此,您现有的应用程序是用 PHP 构建的,如果您从应用程序 1 中提取 REST API 并将其放置在一个全新的 PHP 解决方案(站点)中,该解决方案可以在应用程序 1 和应用程序 2 之间作为服务 API 共享,该怎么办?我相信这对你来说是最简单的方法。

于 2013-04-10T23:24:03.043 回答
0

我不能说我掌握了有关您情况的所有详细信息,但我倾向于采用一种解决方案,在这种解决方案中,您将拥有一项处理用户的新服务,并且两个应用程序都会使用它。

也就是说,它不一定是一个大爆炸。您可以首先在 app1 中的用户数据之上添加适当的 API。并让 app2 使用它。然后,您可以在 app1 中添加一个抽象层,该层与新 API 对话,看起来像 App1 内部 API 到 APP1,然后才将数据移动到新数据库,这将是新服务

于 2013-04-12T18:39:57.923 回答