您的位置:首页 > 其它

移动设备上跨平台通用远程调用框架的实现

2010-09-19 11:51 369 查看
目前小组正在做的项目是Symbian平台上的手机电视客户端,是一个基于3G网络的富媒体应用,所以与远端服务器间的数据交换将不可避免。

实现一个调用远程服务的模块以保证通信的高效和畅通是我们当前采取的方案,不过接口的需求略有不同:
l 由于运行在移动终端,受存储空间和处理速度的限制,框架必须精简
l 另有WM、Brew、iPhone等平台,所以生成的接口必须能够跨平台,以减少工作量

目前采用的方案:



该方案的一个升级版本是定义一个XML Schema,该Schema描述的接口如FuncName(param1,param2,param3……)来作为第二类接口,这样任何业务相关的控制状态信息都可以通过该接口通信,客户端与服务器端之间只维护一份XML Schema,该通信方式也可描述成函数Post(XML DATA),具有很不错的特性:
a) 接口稳定,结构简洁清晰
b) 任何业务数据都能通过,当然任何数据都可以通过
c) XML处理实现上可以更灵活,有效减少连接数和通信量
d) 可以实现自定义通信协议,具有远程过程调用接口梦寐以求的特性
但缺点也是大大的:
a) XML数据的解析将变得异常繁琐,需要无比辛苦地把XML消息映射成具体平台相关的数据结构,而且还不能保证在各平台通用。
b) 由于数据完全依赖XML的解析,服务端对应答包结构的微小修改,也可能会给客户端XML结构数据的解析带来麻烦,部署和维护将会变得很痛苦。

于是,构想中的另外一种方案:



比起HTTP+XML的通信方式多了一个基于XML通用远程调用层,这层的实现可以使用SOAP类库。客户端与服务器端之间只保存一个WSDL文件,在用户数据发生变化的时候,该接口不用发生变化。这种架构具有HTTP+XML方案的特性,又可以解决许多缺陷。

注:由于WSDL和具体语言的具体操作接口绑死,导致修改WSDL需要重新使用工具导出具体语言的接口。这个是SOAP实现的远程过程调用本身带来的问题,但这些都可以使用自动工具来完成,实际人工工作量并不是很大。

不过,这样也引入了SOAP在不同平台下的互操作性问题,为了最大限度的避免互操作性问题,则必须遵守WebService Base Profile 1.x系列标准。引入SOAP也增加了性能消耗和处理复杂度,所以一个简洁的SOAP实现将是必须的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: