DotNettyRPC
1. 简介
DotNettyRPC 是一个基于 DotNetty 的跨平台 RPC 框架, 支持. NET45 以及. NET Standard2.0
2. 产生背景
传统. NET 开发中遇到远程调用服务时, 多以 WCF 为主. 而 WCF 虽然功能强大, 但是其配置复杂, 不易于上手. 而且未来必定是. NET Core 的天下, WCF 暂不支持. NET Core(只有客户端, 无法建立服务端). 市面上的其他. NET 的 RPC 框架诸如 gRPC,surging 甚至微服务框架 Orleans 等, 这些框架功能强大, 性能也很好, 并且比较成熟, 但是使用起来不够简单. 基于上述比较 (无任何吹捧贬低的意思), 鄙人不才撸了一个轮子 DotNettyRPC, 它的定位是一个跨平台 (.NET45 和. NET Standard), 简单却实用的 RPC 框架
3. 使用方法
3.1 引入 DotNettyRPC
打开 Nuget 包管理器, 搜索 DotNettyRPC 即可找到并使用
或输入 Nuget 命令: Install-Package DotNettyRPC
3.2 定义服务接口
- public interface IHello
- {
- string SayHello(string msg);
- }
- public class Hello : IHello
- {
- public string SayHello(string msg)
- {
- return msg;
- }
- }
3.3 服务端
- using Coldairarrow.DotNettyRPC;
- using Common;
- using System;
- namespace Server
- {
- class Program
- {
- static void Main(string[] args)
- {
- RPCServer rPCServer = new RPCServer(9999);
- rPCServer.RegisterService<IHello, Hello>();
- rPCServer.Start();
- Console.ReadLine();
- }
- }
- }
3.4 客户端
- using Coldairarrow.DotNettyRPC;
- using Common;
- using System;
- namespace Client
- {
- class Program
- {
- static void Main(string[] args)
- {
- IHello client = RPCClientFactory.GetClient<IHello>("127.0.0.1", 9999);
- var msg = client.SayHello("Hello");
- Console.WriteLine(msg);
- Console.ReadLine();
- }
- }
- }
3.5 运行
先运行服务端, 再运行客户端, 即可在客户端输出 Hello
4. 结语
本机测试一次 RPC 请求平均 0.4ms 左右, 性能不高, 但是足以应对绝大多数业务场景, 重在简单实用. 可以优化的地方很多, 还望大家多多支持.
GitHub 地址: https://github.com/Coldairarrow/DotNettyRPC
QQ 群: 373144077
来源: https://www.cnblogs.com/coldairarrow/p/10193765.html