(1)从ICE的对象讲起

通信实体、通信信息、链路传输

从网络节点层面看,网络中的通信实体是以计算机为单位。从tcp编程的角度看,通信实体是以socket为单位。从ice的角度看,通信实体以对象为单位。

ice认为分布式系统是由对象构成的,所以对分布式系统建模的时候采用的是面向对象设计方法。ice中的对象和面向对象领域里的对象概念上没有什么本质区别,只是ice中的对象只包含操作,所以ice中的对象又叫做接口类型的对象。

定义对象之间通信协议的时候,也就是.ice文件里面命名时,对象的类型用的是interface这个关键字,而不是class。

既然通信实体有了,要完成点和点通信这个业务,必须要传输通信的信息才行。从网络节点层面看,通信信息需要通过计算机网卡传输才行。从tcp编程角度看,通信信息(也就是二进制数据流)的传输需要通信的双方通过调用read和write才行。从ice的角度看,通信信息的传输只需要调用对象中的操作就可以实现。

所以说ice本质就是个RPC调用,只不过原来大多的RPC调用是个全局函数,不便于管理。ice为了便于管理,加了一层抽象,现在变成是类中的成员函数罢了。这么做带来好处跟面向对象编程带来的好处是一样的,当然带来的坏处是一样的。

通信框架图

下面这个图是最初ice对分布式系统建模时所用的模型,很简单,就是对象和对象在进行通信。随着认识的深入,后面对分布式系统中各个组件的划分也会越来越细。
这里写图片描述

对象(object)

身份标识唯一性(id)

每个Ice 对象都有一个唯一的对象标识(object identity)。对象标识是用于把一个对象与其他所有对象区别开来的标识值。Ice 对象模型假定对象标识是全局唯一的,也就是说,在一个Ice 通信域中,不会有两个对象具有相同的对象标识。这个也是ice对象作为通信实体的基本性质。

特征多样性(facets)

每个Ice 对象具有一个特殊的接口,称为它的主接口。此外, Ice 对象还可以提供零个或更多其他接口,称为facets (面)。客户可以在某个对象的各个facets 之间进行挑选,选出它们想要使用的接口。提出这个概念主要是为了对通信信息进行一级分类,其实我觉得没必要对通信信息进行一级分类,因为没有什么卵用。如果需要用到对通信信息的一级分类,为什么不搞另一个ice对象呢?

发布了31 篇原创文章 · 获赞 5 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章