0. 背景
上一文客户端websocket(C#)长连接及简易RPC框架设计(一)讲述了客户端websocket(C#)
的长连接,以及相关钩子函数的介绍。接下来文本介绍简易RPC框架,设计关系,最后通过一个echo服务来阐述整个由Client-->Server-->Client
调用流程。
1. 简易RPC框架组件介绍
在本文中的简易RPC框架包含七个组件:
- WebSocket实例(
WebSocket
) - 客户端套接字(
ClientSocket
) - 接收消息线程池处理服务(
Notifier
) - 事件分发(
Dispatcher
) - 消息处理(
Handler
) - RPC管理(
RPCManager
) - 消息控制(
MessageController
)
这七个组件有的相互引接收,发送句柄,有的引用组件本身,他们紧密配合,实现了简单的从远程网络中发送和接收数据消息的机制。客户端程序需要配置WebSocket实例的参数,然后新建消息控制MessageController
实例,然后调用该实例的服务端调用客户端接口注册和客户端调用服务端接口:
//服务端调用客户端接口注册API
public void RegisterHandlers(string funName, Function fun)
//客户端调用服务端API
public void CallServerMethod(string[] rpcSeg)
a). 七个组件的UML图
以上的七个组件相互关系如下图1 所示:
图1. 七个组件相互关系图
其中:
实黑箭头线表示组件所有对方组件作为属性,而实红箭头线表示本组件引用对方的组件的属性,红色双向表示组件间各自引用对方某个属性。
WebSocket
类是websocket-sharp.dll
提供的,它的介绍可以参考 客户端websocket(C#)长连接(一);
ClientSocket
是对WebSocket
的四个钩子函数的实现,可以参考 客户端websocket(C#)长连接(一)的叙述,它的主要属性如下图所示:
图2.