1 unstable release
0.1.0 | Jan 9, 2020 |
---|
#59 in #reserve
39KB
991 lines
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来的通知信息。本接口的数据流方向是从服务端到客户端。
对象类型
有三种对象类型:全局对象、用户对象和临时对象。
-
全局对象:就是在服务端始终存在的对象,全局可见,随时为客户端提供服务。
-
用户对象:这是用户创建的对象,只有本用户可见。
-
临时对象:用户可创建临时对象,该用户退出后,临时对象被删除。
Dependencies
~16–29MB
~545K SLoC