最近一段时间有些事情耽搁了更新,抱歉各位了。
  上一篇我们简单的介绍了DotNetty通信框架,并简单的介绍了基于DotNetty实现了回路(Echo)通信过程。
  我们来回忆一下上一个项目的整个流程:
-     当服务端启动后,绑定并监听(READ)设定的端口,比如1889。
-     当客户端启动后,绑定指定端口,等待用户输入。
-     当用户输入任意字符串数据后,客户端将这组数据进行转码为byte格式进行传输到服务端。
-     当服务端收到客户端传来的数据,进行转码后输出控制台,并将这组数据再次回传到客户端。
-     客户端收到数据,也打印出来。

  很简单的实现了一个点对点的通信例子。接下来我们将对这个DEMO进行简单的修改,模拟最简单的gRPC通信的一个构造过程。
  本篇很简单,只要实现了上一个demo,稍作修改,就能实现gRPC了(当然实际构建gRPC根本不会这么简单),本篇也是顺带一下这几天搞出来的一个轻量级RPC框架,先接上一个例子。
服务端
增加两个静态方法SayHello和SayByebye,用于提供远程调用,超级简单,不解释。
public static class Say { public static string SayHello(string content) { return $"hello {content}"; } public static string SayByebye(string content) { return $"byebye {content}"; } }
在我们原来的ChannelRead函数中,将原有的Echo回路传输,直接替换成如下内容。
1 public override void ChannelRead(IChannelHandlerContext context, object message) 2 { 3 if (message is IByteBuffer buffer) 4 { 5 Console.WriteLine($"message length is {buffer.Capacity}"); 6 var obj = JsonConvert.DeserializeObject<Dictionary<string, string>>(buffer.ToString(Encoding.UTF8).Replace(")", "")); // (1) 7 8 byte[] msg = null; 9 if (obj["func

