前言
本小节是NetworkSocket系列的第10小节,在阅读本小节之前,您可能需要先阅读前面的使用FastTcpServerEx构建服务器,否则觉得本文内容跳转比较大。
描述
FastTcpServerEx是从TcpServerEx派生,使用的协议和TcpServerEx完成相同,FastTcpServerEx充分结合C#强大的反射功能,大大地简化了服务器编程难度,从使用FastTcpServerEx构建服务器看出中,只要定义服务接口,实现接口,就完成了服务器,这是因为利用了反射。下面是使用FastTcpServerEx构建服务器小节中中的DemoServer类图,IDemoServer里的所有方法,是需要反射动态调用的方法,因为这些方法会被频繁地调用,所以我们需要把它们缓存到列表中,用到的时候取出就可以,在缓存到列表之前,我们把方法转换为MethodinfoEx对象,因为MethodinfoEx的Invoke方法是优化过的,后面我们需要调用它的Invoke方法。
运行原理
当前上面的第1、3、4、5步,都是由FastTcpServerEx内部来完成,DemoServer需要做的,仅仅是把Login方法给实现了,就也是业务部分的内容。客户端请求Login之后,DemoServer会收到DataEventExArg参数,我们把DataEventExArg的Action属性与缓存的方法关联起来,就可以从缓存中方便找出对应Login对应的MethodinfoEx对象,在调用MethodinfoEx对象,Invoke的数据参数是从DataEventExArg的Binary中转换而得。