Crates.io | servant |
lib.rs | servant |
version | 0.1.0 |
source | src |
created_at | 2020-01-09 03:50:17.612938 |
updated_at | 2020-01-09 03:50:17.612938 |
description | Reserve the name. |
homepage | |
repository | https://github.com/automanyang/servant |
max_upload_size | |
id | 196806 |
size | 39,517 |
servant是一个rpc框架库。
Oid:object id,是由对象名称和对象类型组成的一个唯一标识。
Interface:接口定义,客户端的都是按照接口向服务端发起请求。
Entry:在服务端实现接口的对象实体,必须注册到ServantRegister中,才可以被客户端调用。
Proxy:Servant对象在客户端的代理,客户端通过Proxy发出请求调用。
Terminal:代表了客户端的网络层,所有Proxy都是基于Terminal创建的。客户端连接到服务端后,就会产生一个Terminal。
Adapter:代表了服务端的网络层,服务端在接收到客户端的网络连接请求后,创建一个Adapter与客户端进行网络通信。Terminal与Adapter是一对一的关系。
invoke接口:接口中的方法可以有返回值,客户端发出请求后,调用线程被阻塞直到服务端答复请求或超时,服务端使用返回值答复客户端的请求。
query接口:这是一个特殊的invoke接口,每个服务端只能有一个实现query接口的对象。此接口中定义服务端基本的信息,客户端可以获取这些基本信息。相比与其他invoke接口,此接口的实现对象没有Oid,所以客户端可以不需要Oid就发出请求。
report接口:接口中的方法没有返回值,客户端发出请求后不会阻塞,服务端也不会对请求做任何答复。本接口的数据流方向只能是从客户端到服务端。
notify接口:与report接口类似,接口中的方法也没有返回值,每个服务端只能有一个notifier,向所有的客户端发送通知。在客户端每个Terminal可以绑定一个实现notify接口的对象,用于接受和处理从Adapter来的通知信息。本接口的数据流方向是从服务端到客户端。
有三种对象类型:全局对象、用户对象和临时对象。
全局对象:就是在服务端始终存在的对象,全局可见,随时为客户端提供服务。
用户对象:这是用户创建的对象,只有本用户可见。
临时对象:用户可创建临时对象,该用户退出后,临时对象被删除。