我有暴露异步远程接口的最佳方式的一个问题。暴露远程接口或对象模型
的条件如下:
- 的协议是异步
- 第三方可以在任何时间修改数据
- 命令往返可以显著
- 该模型应该很好地适用于UI相互作用
- 该协议支持对某些对象的查询,并因此必须与模型
作为提高我的技能缺乏在这方面的手段(和温习一下在一般的Java),我已经开始project创建一个基于Eclipse的前端为xmms2(如下所述)。
所以,问题是;我应该如何将远程接口公开为一个整洁的数据模型(在这种情况下,跟踪管理和事件处理)?
我从图案擅用他人名义或具体的例子和补丁:)
通用讨论我在这里的主要目的是了解这个类的一般问题,欢迎任何东西。如果我的项目可以从中获益,那么很好,但我会严格地提出一些建议来开始讨论。
我已经实现了一个协议抽象,我称之为'client'(出于传统原因),它允许我使用方法调用来访问大多数暴露的特性,即使它很不完美,我也很满意。
由XMMS2守护程序提供的功能是一样的东西轨道检索,元数据检索和操纵,改变播放状态,负载的播放列表等等,等等。
我在更新到XMMS2的最新的稳定版本的中间,我想我也可以解决一些我目前的实施明显的弱点。
我的计划是建立在协议接口的上方,一个允许与守护更自然的交互更好的抽象。目前的'model'实现很难使用,坦率地说相当丑陋(更不用说UI代码真的很恐怖了)。
今天我有Tracks接口,我可以用它来获取基于其ID Track类的实例。搜索是通过Collections接口(不幸的命名空间冲突)来实现的,我想这个接口我宁愿移动到Tracks。
任何数据都可以由第三方在任何时间进行修改,这应该被适当地反映在模型中,改变的通知分布式
连接时,通过返回的对象分层结构,看起来像这些接口被暴露此:
- 连接
- 播放getPlayback()
- 播放,暂停,跳步,当前曲目等
- 揭露回放状态改变
- 曲目getTracks()
- 轨道getTrack(ID)等
- 揭露跟踪更新
- 收藏夹getCollection()
- 加载和操作播放列表或指定集合
- 查询媒体库
- 揭露收集更新
- 播放getPlayback()