【RRQMSocket.RPC】C# 创建多协议、多方式、多语言、多平台RPC框架

文章目录

    • 一、序言
        • 1.1 什么是RPC
        • 1.2 为什么要用RPC
    • 二、程序集源码、Demo下载
        • 2.1 源码位置
        • 2.2 Demo位置
    • 三、安装
    • 四、创建RPC
        • 4.1 RPC服务器说明
        • 4.2 创建RPC服务器
    • 五、添加RPC解析器
        • 5.1 TCP协议解析器(`TcpRpcParser`)
        • 5.2 UDP协议解析器(`UdpRpcParser`)


一、序言

1.1 什么是RPC

大家好,我是若汝棋茗,今天这个专题是关于RPC的,那么大家要问了,什么是RPC呢?RPC就是远程过程调用协议(Remote Procedure Call Protocol),简单点来说就是让客户端像调用本地方法一样的调用服务端的方法(有点像web前端和服务器)。

1.2 为什么要用RPC

有些时候,有些逻辑,不能全在客户端本地完成,这时候就需要服务器辅助计算,然后返回对应值即可。

额。。。还是不好理解?那这样描述以下场景

我(客户端)想计算两个数之和,所以可以使用以下方法实现:

Public int Add(int a,int b)
{
     
      return a+b;
}

假设我(客户端)太傻了,连这样的加法都不会写,但是我大哥(服务器)会,但是他怕我学不会(计算太麻烦),又怕被别人学会(反编译),所以只说让我给他两个数,然后给我返回一个和就行了。

同时,我又太懒,又笨,且要求高(高性能),就想在本地调用一个“int sum =Add(1,2);”解决问题(不想自己写请求方法体)。所以RPC应运而生(此处RPC泛指所有具有远程调用的行为)。

这样想必大家对RPC都有了一个简单的认识了吧,那么接下来就让我们一起学习吧。


二、程序集源码、Demo下载

2.1 源码位置

RRQMSocket

2.2 Demo位置

RRQMBox

三、安装

安装RRQMSocket.RPC即可,具体步骤详看链接博客。

VS、Unity安装和使用Nuget包

四、创建RPC

4.1 RPC服务器说明

RPC服务器是一个可多协议多方式多语言多平台调用服务管理器。它可以承载以TCPUDPHttp等差异化协议的调用,也可以承载以RRQMBinaryFormatterBinaryFormatterJsonProtocol Buffer等序列化差异的调用,当然也可以自定义RPC调用。下列本文将从基础,给大家娓娓道来。

4.2 创建RPC服务器

服务器项目中新建一个类,继承于ServerProvider类(或实现IServerProvider),然后在该类中写公共方法,方法可定义同步执行,也可以定义异步执行

实例化RPCService, 然后添加RPC解析器(重中之重),然后注册服务。完成。

注意:
下列示例代码中并未添加真实解析器,所以在MyRpcServer类中的方法也并没有标记任何属性标签,所以也无法调用

//实例化RPCService
RPCService rpcService = new RPCService();

//添加解析器,解析器根据传输协议,序列化方式的不同,调用RPC服务
//rpcService.AddRPCParser("TcpParser", tcpRPCParser);

//注册服务
rpcService.RegisterServer<MyRpcServer>();

//注册当前程序集的所有服务
//rpcService.RegisterAllServer();
Console.WriteLine("RPC服务已启动");

public class MyRpcServer : ServerProvider
{
     
    public string TestOne(int id)//同步服务
    {
     
        return $"若汝棋茗,id={
       id}";
    }
    public string TestOne(int id, string name)
    {
     
        return $"若汝棋茗,Name={
       name},id={
       id}";
    }
    
    public Task<string> AsyncTestOne(int id)//异步服务,尽量不要用Async结尾,不然生成的异步代码方法将出现两个Async
    {
     
        return Task.Run(() =>
        {
     
            return $"若汝棋茗,id={
       id}";
        });
    }
}

五、添加RPC解析器

5.1 TCP协议解析器(TcpRpcParser

TcpRpcParser是一个高效、便捷、成熟的RPC解析器。其特点:

  • 简单易用。
  • 多线程处理。
  • 高性能,在保证送达但不返回的情况下,10w次调用用时0.8s,在返回的情况下,用时3.9s。
  • 支持指定服务异步执行。
  • 支持权限管理,让非法调用死在萌芽时期。
  • 全自动代码生成,可使用系统编译,也可以自己使用源代码编译。
  • 代理方法会生成异步方法,支持客户端异步调用。
  • 支持out、ref,参数设定默认值等。
  • 随心所欲的序列化方式。
  • 支持编译式调用,也支持方法名+参数式调用。
  • 全异常反馈,服务里发生的异常,会一字不差的反馈到客户端。
  • 超简单的回调方式。

详细创建过程请看:

5.2 UDP协议解析器(UdpRpcParser

UdpRpcParser是一个高效、便捷的RPC解析器。其特点:

  • 简单易用。
  • 多线程处理。
  • 支持指定服务异步执行。
  • 支持权限管理,让非法调用死在萌芽时期。
  • 支持out、ref,参数设定默认值等。
  • 随心所欲的序列化方式。
  • 支持编译式调用,也支持方法名+参数式调用。
  • 全异常反馈,服务里发生的异常,会一字不差的反馈到客户端。

详细创建过程请看:

你可能感兴趣的:(RRQMSocket,rpc,c#,高并发,tcpip)