Web applications 在2个web应用程序之间共享数据

Web applications 在2个web应用程序之间共享数据,web-applications,database-design,soa,Web Applications,Database Design,Soa,我正在开发一个新的应用程序(应用程序2),我已经有了一个拥有良好用户基础的现有应用程序(应用程序1) 应用程序2的目标用户群相同,用户可以使用其中任何一个应用程序或两个应用程序,我如何跨应用程序共享用户数据(多个实体) 选项1-共享数据库听起来不是个好主意,因为我将在两个不同的地方编写验证规则 选项2-中央服务和数据存储将意味着重新编写大部分运行良好且代码库相当庞大的App1 选项3-将App 1数据存储视为中心数据存储,并将其作为API公开。应用程序2可以使用它读取和写入数据。对于这个解决方案

我正在开发一个新的应用程序(应用程序2),我已经有了一个拥有良好用户基础的现有应用程序(应用程序1)

应用程序2的目标用户群相同,用户可以使用其中任何一个应用程序或两个应用程序,我如何跨应用程序共享用户数据(多个实体)

选项1-共享数据库听起来不是个好主意,因为我将在两个不同的地方编写验证规则

选项2-中央服务和数据存储将意味着重新编写大部分运行良好且代码库相当庞大的App1

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

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

这是我的两分钱

最简单的方法是让您共享同一个数据库,因为您提到数据库可以共享,这意味着App1中的域规则仍然适用于App2,即使存在一些差异,编写这些更改也比编写整个内容要好

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

在我进一步深入之前,我实际上需要更多地了解您当前的体系结构,否则我最终会做出错误的假设

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


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

我不能说我掌握了关于你情况的所有细节,但我倾向于转向一个解决方案,在这个解决方案中,你将拥有一个处理用户的新服务,并且两个应用程序都将使用它


也就是说,这不一定是一次大爆炸。您可以从在app1中的用户数据上添加适当的API开始。让app2使用它。然后,您可以在app1中添加一个抽象层,该抽象层与新API对话,看起来像app1内部API与app1,然后将数据移动到一个新的数据库,该数据库将成为新的服务。这两个应用程序都是用php编写的。2.我有一个应用程序1的restful API。如果我直接在应用程序2中使用应用程序2,我会担心它的性能。你们甚至不应该这样做,我的意思是让应用程序2使用Api 1。你能从应用程序1中提取REST API吗?