2016-02-12 111 views
2

我有一種情況,應用程序有一個值列表,例如,書籍列表,時常變化。它還具有發佈此信息的REST端點。reactivex和REST Web服務

還有其他幾個應用程序使用此信息,並且他們應該知道我的應用程序中的任何書籍是否發生更改。

反應式會適合這種情況嗎?起初,我是這麼認爲的,基於觀察者模式。但考慮到應用程序只涉及基於Web服務的信息交換,這是否是一種好方法?

我還研究了可以將端點轉換爲java接口的改造。但是我發現的所有例子都與Android應用程序有關。

所以,在這種情況下,這種方法是可取的嗎?如果是這樣,有人可以推薦一本書或任何類型的資源嗎?

編輯:

因爲我將擁有出版書籍的終點,我應該把它以可觀察到的,是可以獲得可用的另一本書的時候,通知本次活動的所有用戶,這反過來將決定如果他們應該或不做某事? 如果是這樣,一個客戶端,例如,angularjs應用程序或另一個Java應用程序如何訂閱此可觀察值?

我希望我能讓自己變得更清楚一些。

+0

目前還不清楚您是在詢問後端還是客戶端架構。無論如何,這個問題太廣泛了。 'Rx'不是一個應用程序的通用架構,它只是一個工具,它可以解決特定的問題。 – eleven

+0

也許維護客戶端和服務器之間的套接字連接,以便在服務器中的數據發生更改時通知所有客戶端..我認爲您實際上需要的東西類似於「Socket」或「Socket」 ..! –

+0

如果您通過網絡進行此操作,則需要考慮網絡客戶端如何對事件做出「反應」。使用'Observable streams'對數據變化做出反應是很好的,但是網絡邊界可能會導致問題。我認爲你需要更具體 - 我猜你的服務器是'Java',但你的客戶是什麼?您是使用'HTTP 1.1'還是可以使用'WebSockets','ServerSentEvents'或'HTTP2'來產生'streams'數據。 – Will

回答

0

我認爲你正在混淆網絡問題的Rx編程。如果您的服務器以X時間間隔通過網絡發送數據,則@TheCoder表示您可以藉助PublishSubject幫助偵聽套接字上的更改並在您的rx流中觸發事件。但我認爲真正的問題在於你的服務器發送數據的方式。

如果您必須查詢您的服務器以確定您的書籍列表是否已更新,那麼當您的目標是實時更新時觸發此類通話並不是非常有效。在這種情況下,Publish-Subscribe pattern更適用於您的客戶端只是作爲接收者,並且只要您的服務器推送新值(您的案例中的新書目錄)就可以自行更新。您可以找到像pubnubMQTT protocol這樣的工具來實現此類功能。

爲了讓您快速瞭解該系統的工作原理,您可以查看this