.NET Core微服务之路:让我们对上一个Demo通讯进行修改,完成RPC通讯

  最近一段时间有些事情耽搁了更新,抱歉各位了。

  上一篇我们简单的介绍了DotNetty通信框架,并简单的介绍了基于DotNetty实现了回路(Echo)通信过程。
  我们来回忆一下上一个项目的整个流程:
  1. 当服务端启动后,绑定并监听(READ)设定的端口,比如1889。
  2. 当客户端启动后,绑定指定端口,等待用户输入。
  3. 当用户输入任意字符串数据后,客户端将这组数据进行转码为byte格式进行传输到服务端。
  4. 当服务端收到客户端传来的数据,进行转码后输出控制台,并将这组数据再次回传到客户端。
  5. 客户端收到数据,也打印出来。

 

  很简单的实现了一个点对点的通信例子。接下来我们将对这个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
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信