2010-09-05 80 views
1

我現在有一個實施挑戰,它基本上由兩個不同的rails應用程序組成。系統架構,使用API​​集成兩個應用程序

一個rails應用程序(應用程序A)只是在JSON中提供了一個響應,在這種情況下,這是一個特定食物成分的營養數據記錄。

的其他應用程序(APP B)還Rails提供一個前端,方便用戶查看成份,以及由應用程序A.提供的搜索結果匹配起來

我們這樣做的原因是因爲我們希望最終將應用程序A變成可公開訪問的營養數據API,因此我們想要將應用程序B的負載從Web應用程序B中分離出來。

我想我想知道你們的想法,一般來說你將如何處理需要以這種方式緊密集成的兩個系統。

回答

1

我會創建一個新的Rails 3應用程序,因爲Rails 3與Rack緊密集成。 Rack允許我們在請求處理鏈中插入各種適配器。這些可以幫助我們區分各種請求(標準請求,API請求)。

對於應用程序A我會使用輕量級的東西,比如Sinatra(甚至是我自己的從頭開始構建的機架適配器)。這是由於API通常不會使用Rails及其魔法的任何額外超級特性。

因此,嚴格來說,我將只在Rails 3上創建一個應用程序(應用程序B),它將爲API處理提供一種子模塊。因此,他們將彼此捆綁在一起。

1

無論應用程序B是內部應用程序還是外部應用程序,暴露營養數據都是應用程序A的責任。這是你不想複製的東西。

內部應用程序B應該使用與外部應用程序相同的機制來訪問此公開函數。將App B視爲使用該API的第一個客戶端。