简单对象访问通道

        对象通道,用于实现跨语言、跨平台的对象间的相互调用。

        不同于 JNI、FFI 等技术,对象通道是基于协议的相互操作。因此,它不是语言之间两两相互调用的解决方案,也不需要某个基础开发语言作为中介,而是一个统一的跨语言、跨平台解决方案,当然,它也可以实现对远程对象的访问。

        对象通道基于语言级别的对象访问的语义,这是开发人员最容易理解的方式。开发语言在进化中越来越统一,类或者对象都有属性、方法、事件,使用这些模式可以实现各种各样的功能。对象通道也仅仅传递对象的属性、方法、事件。因此,它可以在各个平台上很简单的被实现。然而,它却可以被应用于各种复杂的场景。

        在协议表示层面,可以使用基于文本的 Json 或者 XML 格式来描述,也可以使用二进制编码提高效率。还可以使用文本格式化(如 Markdown)数据的可视化。

        在传输层上,可以结合使用场景选择各种各样的方案。比如使用基于 Socket 的通用方案,可以使用 TCP 保证可靠性,也可以使用 UDP 实现并发模式。另外基于消息通道 MQ 的方案,甚至可以使用广播方式的访问。另一类实现是用于两两之间的直接访问,比如基于 JNI 可以实现 C/C++ 与 Java 之间的传输通道,基于 flutter 的 MessageChannel,可以实现 flutter 与 native (Android、iOS)之间的传输通道。

        对象通道的传输层是完全双工的,这不仅是实现对象事件通知的必要条件,也是通讯双方的地位完全对等的体现。因此像 HTTP 这样的通道可能不适合作为对象通道的传输层。

        具体到各个平台、各种语言的实现,各自可以充分运用自身的特性,将抽象的对象及其描述映射到各自的语言要素上,使用通用描述语言描述的对象,将在各种语言上被本地化,被作为一个本地对象访问。其中一个语言真正的实现了这个对象,当然,也是用本地化的方式。

        在对象通道上执行方法调用,一般是异步返回的,结合语言自身的协程机制,或者异步框架,使得对象通道天然地与其他功能模块相互契合。

        在对象通道上,对象的属性会被自动同步到对端,属性的更新也会及时同步,并触发改变通知,在主流的 MVVM 等数据驱动 UI 的设计模式中,对象通道也能够无缝的对接。

        如果你熟悉 Apache Thrift ,那么对象通道与其最根本的区别在于对基于对象开发更好的诠释。对象通道不仅关注对象的接口方法,对象的属性更是对象的主要特征,事件通知也使得通信双方完全处于一个对等的地位。另一个区别是,对象通道更适合解决本地异构系统的通讯需求,这也是其主要的目标领域。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fighting Horse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值