我有暴露異步遠程接口的最佳方式的一個問題。暴露遠程接口或對象模型
的條件如下:
- 的協議是異步
- 第三方可以在任何時間修改數據
- 命令往返可以顯著
- 該模型應該很好地適用於UI相互作用
- 該協議支持對某些對象的查詢,並因此必須與模型
作爲提高我的技能缺乏在這方面的手段(和溫習一下在一般的Java),我已經開始project創建一個基於Eclipse的前端爲xmms2(如下所述)。
所以,問題是;我應該如何將遠程接口公開爲一個整潔的數據模型(在這種情況下,跟蹤管理和事件處理)?
我從圖案擅用他人名義或具體的例子和補丁:)
通用討論我在這裏的主要目的是瞭解這個類的一般問題,歡迎任何東西。如果我的項目可以從中獲益,那麼很好,但我會嚴格地提出一些建議來開始討論。
我已經實現了一個協議抽象,我稱之爲'client'(出於傳統原因),它允許我使用方法調用來訪問大多數暴露的特性,即使它很不完美,我也很滿意。
由XMMS2守護程序提供的功能是一樣的東西軌道檢索,元數據檢索和操縱,改變播放狀態,負載的播放列表等等,等等。
我在更新到XMMS2的最新的穩定版本的中間,我想我也可以解決一些我目前的實施明顯的弱點。
我的計劃是建立在協議接口的上方,一個允許與守護更自然的交互更好的抽象。目前的'model'實現很難使用,坦率地說相當醜陋(更不用說UI代碼真的很恐怖了)。
今天我有Tracks接口,我可以用它來獲取基於其ID Track類的實例。搜索是通過Collections接口(不幸的命名空間衝突)來實現的,我想這個接口我寧願移動到Tracks。
任何數據都可以由第三方在任何時間進行修改,這應該被適當地反映在模型中,改變的通知分佈式
連接時,通過返回的對象分層結構,看起來像這些接口被暴露此:
- 連接
- 播放getPlayback()
- 播放,暫停,跳步,當前曲目等
- 揭露回放狀態改變
- 曲目getTracks()
- 軌道getTrack(ID)等
- 揭露跟蹤更新
- 收藏夾getCollection()
- 加載和操作播放列表或指定集合
- 查詢媒體庫
- 揭露收集更新
- 播放getPlayback()