我有兩個Rails應用程序的數據是相互依賴的。如果我需要在Django中輕鬆訪問另一個應用程序的模型或以其他方式共享這些模型,那麼這很簡單,因爲我只是將兩個應用程序都包含在我的項目中,並且能夠導入其他應用程序的模型。此時,我可以使用Django的ORM訪問另一個應用程序數據庫中的對象,並且它是一致的並且很棒。在Rails應用程序之間訪問數據的最佳實踐?
在Rails中,我得到了壓倒性的氛圍,要做到這一點的方法是在每個應用程序你想要的其他應用程序請求每一件事情創建RESTful API鉤子。看起來乾淨,足夠模塊化的,但它開始變得混亂,因爲我有一個情況如下:
- 製作GET請求應用程序A
- 應用程序A需要獲取來自應用B的數據,所以它是一個GET請求應用程序B上的API鉤子。
- 作爲B控制器中功能的一部分,它需要屬於A數據模型的一部分的數據,因此它向A請求數據。
- 步驟2-3正在連續發生
很明顯,這是造成可伸縮性的噩夢,在我們的例子中,由於這種競爭狀態,請求正在超時,新請求正在等待原始請求完成,但直到新請求完成纔會發生。我們可以啓動更多的Web服務器進程,但是我覺得在維護這兩個應用程序時,必須有一個更好的方法來實現這一點,而不會涉及到這些多餘的GET請求。
最終,我的問題是1)是否有更直接的方法來獲取另一個Rails應用程序的數據,而不是發出一個GET請求,或者我只是試圖用一種真正的優秀設計來殺死它? 2)如果我正在反對設計模式的穀物,這真的是一個很好的方法,是否有任何一般建議可以幫助我保持這些應用程序中的數據不依賴彼此,從而導致競爭像這樣的條件?我知道我可以通過該應用B就需要從A前面的信息(這只是一個領域,但現在可能以後會更多),但是,這是正確的?
如果應用B的人都需要從應用程序的數據來完成來自應用程序A的請求爲什麼不只是將該數據與對應用程序B的請求一起傳遞? –