DotNettyRPC 1.簡介 DotNettyRPC是一個基於DotNetty的跨平臺RPC框架,支持.NET45以及.NET Standard2.0 2.產生背景 傳統.NET開發中遇到遠程調用服務時,多以WCF為主。而WCF雖然功能強大,但是其配置複雜,不易於上手。而且未來必定是.NET C ...
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