分布式对象是否需要属性

srplab1 2008-07-14 10:00:24
分布式对象不需要属性吗?如果单纯谈及对象的概念,是应该具有属性的,学过或者使用过面向对象的编程方法的都知道这一点。但是
谈及分布式对象,都在或多或少的回避该问题,从客户端角度看,分布式对象仅仅有抽象的接口,不具有属性。为什么呢?一者,分布式对象
的概念是从远程过程调用(RPC)逐步发展起来的,有着历史的痕迹;再者,如果分布式对象支持属性,会在实现上带来很多复杂性,也将改变
目前服务器端类似被动接收请求的交互流程。
如果分布式对象具有属性,则在客户端连接到服务器时,对于服务器端默认创建的对象,或者动态创建的对象,需要将属性传递给客户端;如果对象属性发生变化,
则需要由服务器端通知客户端。诚如在COBRA IIOP接口规范中提到的,服务器端仅仅是被动接收客户端的请求,并予以正确响应,显然不
能够支持分布式对象具有属性。这种交互方式的变化,增加了实现的复杂性,但是同样增加了分布式应用开发的灵活性。
假如客户端需要依赖分布式对象的属性(状态)的判断而采取不同的动作,如何实现呢?采用定时器,客户端周期的调用对象的远程Get方法
获取属性,这样一方面增加了交互的通信量,另一方面定时器周期不好设置,太小,通信量大;太大,不能够迅速响应对象状态的变化;或者每次处理都
远程调用对象的Get方法,可以想象,这种程序实现方法的效率有多低。
最好的方法就是为分布式对象增加属性,属性变化时服务器端通知客户端更新,客户端只需要本地判断属性即可。
WebService虽然是目前流行的概念,但是并未支持该机制,WSDL也仅仅描述了对象的抽象的接口。
更加具体一点的例子如网页,网页中的对象是有属性的,如:<img src = "...", width = ..,..>,其中src,width即为属性。但是从接口
上只提供了类似Get的方法,客户端在连接、或者刷新时,通过Request获取网页。如果服务器端为了增加效果,需要动态改变图片的内容,也即
更新对象的属性,客户端如何处理呢,定时刷新网页,还是启动定时器,使用AJAX动态获取改变,再进行局部更新,定时器如何设置呢。
分布式对象中增加属性的概念,势必使现有的应用更加丰富多彩。当然,这种支持意味着太多的改动,但是晚改不如早改,特别在SOA, WebService
还不是完全成熟的阶段。
Mail: li9416@tom.com,网址:http://www.srplab.com
...全文
55 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

52,795

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧