1 unstable release

0.1.0 Jan 9, 2020

#246 in #rpc

MIT license

38KB
991 lines

servant是一个rpc框架库。

术语

  1. Oid:object id,是由对象名称和对象类型组成的一个唯一标识。

  2. Interface:接口定义,客户端的都是按照接口向服务端发起请求。

  3. Entry:在服务端实现接口的对象实体,必须注册到ServantRegister中,才可以被客户端调用。

  4. Proxy:Servant对象在客户端的代理,客户端通过Proxy发出请求调用。

  5. Terminal:代表了客户端的网络层,所有Proxy都是基于Terminal创建的。客户端连接到服务端后,就会产生一个Terminal。

  6. Adapter:代表了服务端的网络层,服务端在接收到客户端的网络连接请求后,创建一个Adapter与客户端进行网络通信。Terminal与Adapter是一对一的关系。

接口类型

  1. invoke接口:接口中的方法可以有返回值,客户端发出请求后,调用线程被阻塞直到服务端答复请求或超时,服务端使用返回值答复客户端的请求。

  2. query接口:这是一个特殊的invoke接口,每个服务端只能有一个实现query接口的对象。此接口中定义服务端基本的信息,客户端可以获取这些基本信息。相比与其他invoke接口,此接口的实现对象没有Oid,所以客户端可以不需要Oid就发出请求。

  3. report接口:接口中的方法没有返回值,客户端发出请求后不会阻塞,服务端也不会对请求做任何答复。本接口的数据流方向只能是从客户端到服务端。

  4. notify接口:与report接口类似,接口中的方法也没有返回值,每个服务端只能有一个notifier,向所有的客户端发送通知。在客户端每个Terminal可以绑定一个实现notify接口的对象,用于接受和处理从Adapter来的通知信息。本接口的数据流方向是从服务端到客户端。

对象类型

有三种对象类型:全局对象、用户对象和临时对象。

  1. 全局对象:就是在服务端始终存在的对象,全局可见,随时为客户端提供服务。

  2. 用户对象:这是用户创建的对象,只有本用户可见。

  3. 临时对象:用户可创建临时对象,该用户退出后,临时对象被删除。

Dependencies

~10–17MB
~388K SLoC