浅谈组件技术

10 篇文章 0 订阅
6 篇文章 0 订阅

将组件思想推广的最出名的应该算是微软的COM技术了。组件技术的核心思想是将软件划分成一个个独立的模块,这些模块只暴露对外开放的接口,模块间通过接口拼接,调用,组装成最终的系统。软件开发模型中的增量模型用到的就是组件思想。

组件的客户只关心组件的接口,不关心组件的内部实现和存放的路径。

对于组件自身而言,有以下问题需要考虑:

  1.由于客户语言的多样性,客户语言的参数可能与自身实现语言的参数不一致,这个需要制定规范。

  2.组件和客户的运行环境可能不一致,例如组件和用户不是运行在同一个进程里,客户如何将参数传给组件,组件如何将结果传回用户。

  3.组件需要维护自身的生命周期,没有用户使用的时候应该销毁自己释放资源。

android系统中,应用开发经常会用AIDL实现进程间通讯,个人认为这个和组件思想一致,因此将它们放在一起对比。

COM有IDL文件用来定义接口,android应用开发可以用AIDL文件定义接口,目的就是制定参数类型规范。

COM可以用IPC,LPC,RPC等技术实现请求方法请求参数和响应结果的传递,AIDL中借助binder机制实现。实现原理都是按照规范将参数打包,解包过程。

为了扩展性和对用户透明,IDL和AIDL编译器会自动生成XXX.proxy和XXX.stub文件,整个组件用户从请求到接收到结果过程是这样的:

  1.组件用户调用组件接口时,proxy自动代理组件用户的请求,并将请求方法和参数打包传给stub,组件用户不需要感知proxy的存在。

  2.stub与proxy进行通讯,将proxy的请求解包,提取方法和参数传给组件并等待组件的返回结果。

  3..stub将返回的结果打包传给proxy, proxy解包后,传给组件用户。至此, 一次完整的用户的组件的交互完成。

至于组件自身生命周期的管理, COM中使用引用计数算法, android中则由虚拟机的标记跟踪算法决定。

利用组件技术的优势:

  1.升级方便,只需要换某一个组件。许多优秀的系统都采用组件技术,例如windows系统,还有Elastos系统 ( 呵呵,打个广告)。

  2.适用敏捷开发模式。核心基础组件,业务逻辑组件,UI组件等可以相互独立,开发人员都可以发挥自己的特长。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值