2009-01-16 45 views
1

我需要在Rails應用程序中實現Web客戶端。現有的Web服務是SOAP,通常需要幾秒鐘才能響應請求。使用SOAP4R,請求塊。將Rails應用程序與慢Web服務集成的最佳方法

從軌道控制器直接調用這些阻塞方法是可以接受的嗎?如果不是,那麼rails控制器應該用一個單獨的服務來緩衝命令,以處理SOAP命令和應答。有第三種更好的方法嗎?

回答

3

這取決於它們是否需要實時處理(例如,當用戶點擊GO時它實際上應該會觸發?)。如果你正在使用雜種,請記住任何正在做「某事」的雜種將會被阻塞,並且從併發的角度來看這很糟糕(除非你有大量的雜種)。如果您使用的是乘客,只要您有多餘的乘客,也可以使用長時間運行的控制器操作。

對於可能發生帶外(並有一些延遲,如報告處理或視頻轉換)的事情,我有一個名爲「JOBS」的模型,然後使用script/runner(與cron結合)來調用每隔幾分鐘Jobs.process_jobs。或者,您可以創建一個小腳本,並將其放在script/yourscript中,並每隔幾分鐘調用一次。

還有第三個選項,使用drb過程,但是 - 根據我的經驗 - 我發現它比每隔幾分鐘簡單地發出一個cron多一點「移動部分」(甚至只是讓控制器動作火災),所以我傾向於避免它,除非我真的需要(例如雪貂)。

+0

這是數據請求(需要立即響應)和消息發送(15秒的延遲是可以接受的)的組合。顯然,阻止呼叫將是最簡單的。 我會看看乘客 – 2009-01-16 22:14:55

相關問題