1. 程式人生 > >.NET 跨平臺RPC框架DotNettyRPC

.NET 跨平臺RPC框架DotNettyRPC

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