简介

Socean.RPC是一个.Net下的高性能RPC框架,框架以高性能、高稳定性为目标,底层基于socket,无第三方库引用,代码简洁,总代码量大约在2000行,框架性能较高,在普通PC上测试,长连接可达14w每秒的处理量,支持10000+长连接消息处理(客户端每100毫秒发1个短消息),内存和cpu占有率偏低

开发背景

好用的轮子太少,只能自己弄个了,希望能促进.Net社区的发展

框架特点

高性能、超稳定、支持异步、资源占用很小、代码简介、清晰易懂

使用介绍

server sample :

1.定义实体

public class Book
{
  public string Name { get; set; }
}

定义MessageProcessor

public class DefaultMessageProcessor : IMessageProcessor
{    public void Init()    {    }

  public async Task<ResponseBase> Process(Socean.Rpc.Core.Message.FrameData frameData)
  {  

var title = Encoding.UTF8.GetString(frameData.TitleBytes);

    if (title == "/books/namechange")
    {
      var content = Encoding.UTF8.GetString(frameData.ContentBytes);

      //here we use newtonsoft.Json serializer
      //you need add refer "newtonsoft.Json.dll"
      var book = JsonConvert.DeserializeObject<Book>(content);
      book.Name = "new name";

      var responseContent = JsonConvert.SerializeObject(book);
      return new BytesResponse(Encoding.UTF8.GetBytes(responseContent));
    }

    if (title == "test empty return")
    {
      return new EmptyResponse();
    }

    return new ErrorResponse((byte)ResponseCode.SERVICE_NOT_FOUND);
  }
}

2.启动服务

var server = new RpcServer();
server.Bind(IPAddress.Any, );
server.Start<DefaultMessageProcessor>(); 

client sample:

1.定义实体

public class Book
{
  public string Name { get; set; }
}

2.执行调用

public Book ChangeBookName(Book book)
{
  using (var rpcClient =  new FastRpcClient(IPAddress.Parse("127.0.0.1"), 11111))
  {
    var requestContent = JsonConvert.SerializeObject(book);
    var response = rpcClient.Query(Encoding.UTF8.GetBytes("/books/namechange"), Encoding.UTF8.GetBytes(requestContent));
    var content = Encoding.UTF8.GetString(response.ContentBytes);
    return JsonConvert.DeserializeObject<Book>(content);
  }
}

其他

NetworkSettings类可修改连接超时时间等参数

项目地址

https://github.com/ch00486259/Socean.Rpc

C# -- 高性能RPC框架:Socean.RPC的更多相关文章

  1. 开源自己实现一个.net rpc框架 - Machete.Rpc

    Machete.Rpc Machete.Rpc 是一个轻量级的Rpc(远程过程调用的)框架.底层代理使用了Emit提高了效率,底层通信采用DotNetty框架以提升通信的效率.目前正在逐步完善中. G ...

  2. c#---Socean.RPC框架实测[并发量13w][响应时间0.04ms]

    目录1.高性能RPC框架:Socean.RPC 前言 经过一段时间的优化,Socean.RPC的性能又提高了一些,不过这差不多是socketAPM模型的极限了.本框架仅仅2000多行代码,无第三方框架 ...

  3. c#---Socean.Rpc之EasyProxy

    目录 1.高性能RPC框架:Socean.RPC 2.Socean.RPC框架实测 3.Socean.Rpc之EasyProxy 简介 这几天给Socean.RPC加上了动态代理,简称EasyProx ...

  4. 这次我设计了一款TPS百万级别的分布式、高性能、可扩展的RPC框架

    作者:冰河 博客地址:https://binghe001.github.io 大家好,我是冰河~~ 没错,这次冰河又要搞事情了,这次准备下手的是RPC框架项目.为什么要对RPC框架项目下手呢,因为在如 ...

  5. 服务化实战之 dubbo、dubbox、motan、thrift、grpc等RPC框架比较及选型

    转自: http://blog.csdn.net/liubenlong007/article/details/54692241 概述 前段时间项目要做服务化,所以我比较了现在流行的几大RPC框架的优缺 ...

  6. dubbo、dubbox、motan、thrift、grpc等RPC框架比较及选型

    概述 前段时间项目要做服务化,所以我比较了现在流行的几大RPC框架的优缺点以及使用场景,最终结合本身项目的实际情况选择了使用dubbox作为rpc基础服务框架.下面就简单介绍一下RPC框架技术选型的过 ...

  7. 高并发架构系列:如何从0到1设计一个类Dubbo的RPC框架

    在过去持续分享的几十期阿里Java面试题中,几乎每次都会问到Dubbo相关问题,比如:“如何从0到1设计一个Dubbo的RPC框架”,这个问题主要考察以下几个方面: 你对RPC框架的底层原理掌握程度. ...

  8. Hadoop系列番外篇之一文搞懂Hadoop RPC框架及细节实现

    @ 目录 Hadoop RPC 框架解析 1.Hadoop RPC框架概述 1.1 RPC框架特点 1.2 Hadoop RPC框架 2.Java基础知识回顾 2.1 Java反射机制与动态代理 2. ...

  9. 如何从0到1设计一个类Dubbo的RPC框架

    之前分享了如何从0到1设计一个MQ消息队列,今天谈谈"如何从0到1设计一个Dubbo的RPC框架",重点考验: 你对RPC框架的底层原理掌握程度. 以及考验你的整体RPC框架系统设 ...

随机推荐

  1. 分享一个Python脚本--统计redis key类型数据大小分布

    概述 今天主要介绍怎么统计redis key类型数据大小分布. 原理:使用redis命令: scan.pipline.type 和 debug object 来得到 redis key 信息. 脚本 ...

  2. Excel多表头设置二级联动选择

    1.初始准备 2.全选,然后开始 -> 查找和选择 -> 定位条件 3.公式 -> 根据所选内容创建 因为一级联动数据在第一行,所以选首行 4.因为学校信息与联动数据不在同一个she ...

  3. [Gamma阶段]第八次Scrum Meeting

    Scrum Meeting博客目录 [Gamma阶段]第八次Scrum Meeting 基本信息 名称 时间 地点 时长 第八次Scrum Meeting 19/06/04 大运村寝室6楼 40min ...

  4. Spring(二十三):Spring自动注入的实现方式

    注解注入顾名思义就是通过注解来实现注入,Spring和注入相关的常见注解包含:Autowrired/Resource/Qualifier/Service/Controller/Repository/C ...

  5. 根据motif binding来确定target gene | HOMER | FIMO | MEME

    主流的motif数据库 JASPAR dbcorrdb - SCENIC使用的 TRANSFAC® 7.0 Public 2005 and TRANSCompel 7.0 Public 2005 - ...

  6. centos7安装python3.7.4和pip3

    亲测有效,针对 阿里云 centos 7 轻量服务器 python ==> 3.7.4 pip ==>  3 一,打开python官网,找到下载Python的tgz文件,有两种方式下载 ( ...

  7. Android Studio 教程

    Android Studio 超详细安装教程 http://dkylin.com/archives/2019/android-studio-installation.html Android Stud ...

  8. 从ASP.NET到ASP.NET Core差异变化

    MSDN原文:链接 ASP.NET Core项目为开发人员提供了针对.NET Core,.NET Framework2种实现方式,根据官网通告NETCORE3.0后将取消对.NET Framework ...

  9. sparkStreaming读取kafka写入hive表

    sparkStreaming: package hive import java.io.File import org.apache.kafka.clients.consumer.ConsumerRe ...

  10. 【原】QuickTime安装时,提示CAB文件"QuickTime.cab"中找不到此文件

    卸载安装程序:apple software updateapple mobile device supportapple 应用程序支持32apple 应用程序支持64 再重新安装quicktime