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群1(已满)

QQ群2:579202910

最新文章

  1. Django动态渲染多层菜单
  2. 首师大附中互测题:LJX的校园:入学典礼【C003】
  3. 不一样的角度 解读微信小程序
  4. asp.net 服务器Button控件使用(onclick和onclientclick使用)
  5. 【Effective Java】2、构造参数过多的时候
  6. 僵尸传染bfs
  7. CodeForces 702B Powers of Two (暴力,优化)
  8. 量化Hacker News 中50天的数据 Quantifying Hacker News with 50 days of data
  9. [React] React Fundamentals: Build a JSX Live Compiler
  10. linuxC编程实战 my_server.c例子问题总结
  11. STL--stack/queue的使用方法
  12. XML DTD详解(转)
  13. Spring基础学习(二)&mdash;详解Bean(上)
  14. [NOI2016]循环之美
  15. h5页面实战——与andriod和ios的交互
  16. uva_answers
  17. eclipse在mac上的快捷键
  18. webstorm设置VCS:版本控制顶部按钮
  19. 可以用软连接的方式解决linux内存空间不足的问题
  20. zsh:no matches found 问题解决

热门文章

  1. Android开发:文本控件详解——TextView(一)基本属性
  2. 第5章 简单的C程序设计——循环结构程序设计
  3. 【Linux篇】--awk的使用
  4. C# 中的Async 和 Await 的用法详解
  5. ASP.NET Core中使用GraphQL - 第四章 GraphiQL
  6. ubuntu文件系统分区调整(解决目录空间不足、分配不均问题)
  7. AssetsUtils【读取assets、res/raw、./data/data/包名/目录下的文件】
  8. 一套代码小程序&amp;Web&amp;Native运行的探索01
  9. Spring Boot 2.x基础教程:工程结构推荐
  10. activemq配置安装