2013-04-10 160 views
0

我正在開發一個新應用程序(應用程序2),我已經擁有一個具有體面用戶羣的現有應用程序(應用程序1)。在2個Web應用程序之間共享數據

應用2是針對相同的用戶羣,用戶可以使用或應用中任一項兩者,如何可以跨應用共享用戶數據(多實體)?

選項1 - 共享數據庫聽起來像一個壞主意,因爲我最終會在2個不同的地方寫驗證規則。

選項2 - 中央服務和數據存儲將意味着重新編寫應用程序最多1這是運作良好和代碼庫是非常巨大的。

選項3 - 將App 1數據存儲視爲中央數據存儲並將其公開爲API。應用2可以使用它來讀取和寫入數據。我仍然有這個解決方案几個問題 - 在應用程式2.緩存數據。這會導致其他問題

  • 應用2現在依賴於應用程序1,這意味着應用1問題會影響應用程序2.我可以解決這個問題。
  • 在App 1中更改的數據沒有立即反映在App 2中,這是要求之一。我可以通過pub/sub模型應用1和應用2
  • 應用2之間解決這個總是使用API​​將數據寫入到App 1個數據存儲,我可以將數據傳輸迴應用程序2,但隨後其並不一致,而這是最終一致。
  • 應用程序2將數據寫入其自己的數據存儲,然後將其異步推送至應用程序1。這會導致數據衝突問題。

我該如何處理這個問題,而在我的兩個應用程序引入巨大的複雜性。

回答

1

這是我的兩分錢。

最簡單的方法是讓你共享同一個數據庫,既然你提到可以共享數據庫,這意味着來自App1的域規則仍然適用於App2,即使存在一些差異,它也會更好寫出這些變化,而不是寫整個事情。

現在,您確實遇到了一個大問題IMO,因爲如果我理解得很好,您沒有合適的服務層,因爲如果您這樣做了,您實際上可以對DAL進行任何更改而不影響現有的1 。

之前,我可以去任何進一步的我確實需要知道更多你的當前架構的一點,否則我最終作出錯誤的假設。

  • 什麼樣的Web應用程序框架您使用的是例如: - ASP.Net MVC
  • 你有一個服務/ API層和什麼有關域和DAL層?

UPDATE

所以現有的應用程序是建立在PHP中,如果你從App 1提取的REST API,並將其置於可能之間共享一個全新的PHP解決方案(網站)什麼App 1和App 2作爲服務API?我相信這將是您最簡單的方式。

+0

1.兩個應用程序都是用php 。 2.我確實有一個適用於應用程序1的API。如果我直接在應用程序2中使用它,我擔心應用程序2的性能。 – abhinavlal 2013-04-11 00:18:31

+0

您甚至不應該那樣做,我的意思是讓App 2使用Api 1.您能夠從App 1中提取REST API? – Marco 2013-04-11 15:16:54

0

我不能說我對你的情況的所有細節,但我傾向於移動到一個解決方案,你就會有一個新的服務,處理用戶和應用程序都將使用它。

這就是說,它不一定是一個大爆炸的舉動。您可以先在app1中的用戶數據之上添加適當的API。並讓app2使用它。然後,您可以在app1中添加一個抽象層,與新API交談,看起來像App1內部API到APP1,然後將數據移動到新數據庫,這將成爲新服務

相關問題