.NET 跨平臺RPC框架DotNettyRPC
阿新 • • 發佈:2018-12-29
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