在2个网络应用之间共享数据

时间:2013-04-10 22:02:48

标签: web-applications database-design soa

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

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

这是我的两分钱。

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

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

在我能够进一步发展之前,我实际上需要了解您当前的架构,否则我最终会做出错误的假设。

  • 您使用的是什么类型的Web应用程序框架,例如:ASP.Net MVC
  • 您是否有服务/ API层以及Domain和DAL层?

<强>更新

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

答案 1 :(得分:0)

我不能说我已经了解了你的具体情况,但是我倾向于转向一个解决方案,在这个解决方案中你有一个处理用户的新服务,而且这两个应用都会使用它。

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