不久前发布了一篇博文“.NET轻量级RPC框架:Rabbit.Rpc”,当初只实现了非常简单的功能,也罗列了之后的计划,经过几天的不断努力又为Rabbit.Rpc增加了一大波新特性,今天主要介绍下项目近况。

特性一览

  1. Apache License 2.0协议开源

  2. 支持客户端负载均衡(提供了轮询、随机算法的实现)

  3. 支持ZooKeeper和文件共享形式的服务协调

  4. 运行时客户端代理生成(基于Roslyn)

  5. 预生成客户端代理

  6. 客户端代理预生成(基于Roslyn)

  7. 抽象的编解码器(提供了JSON、ProtoBuffer协议的实现)

  8. 抽象的传输通道(提供了DotNetty与Cowboy.Sockets的移植实现)

  9. 异常信息传递(服务端运行时的本地异常可以传递至客户端)

  10. NET Core项目架构

  11. 跨平台

项目概况

开源地址:https://github.com/RabbitTeam/Rpc

Rabbit.Rpc(支持跨平台)

Rpc核心类库,有如下功能:

  1. 服务Id生成

  2. 传输消息模型

  3. 类型转换

  4. 服务路由抽象

  5. 序列化器抽象(默认提供JSON序列化器)

  6. 传输抽象

  7. 编解码器抽象(默认提供JSON的编解码器实现)

  8. 客户端运行时(地址解析器、地址选择器,远程调用服务)

  9. 服务端运行时(服务条目管理、服务执行器、服务发现抽象、RpcServiceAttribute标记服务发现实现)

Rabbit.Rpc.ProxyGenerator(支持跨平台)

服务代理生成器,提供的功能:

  1. 服务代理实现生成

  2. 服务代理实例创建

extensions(相关扩展)

Rabbit.Rpc.Codec.ProtoBuffer(支持跨平台)

ProtoBuffer协议的编解码器实现。

Rabbit.Rpc.Coordinate.Zookeeper(支持跨平台)

基于ZooKeeper的服务路由管理。

Rabbit.Transport.DotNetty(暂不支持跨平台)

基于DotNetty的传输实现。

ps:官方以有将DotNetty支持NET Core的计划,大伙可以再等等,待官方支持后,会尽快进行适配。

Rabbit.Transport.Simple(支持跨平台)

由于DotNetty不支持跨平台运行,为了让rpc能在其它平台上跑通,故移植了“Cowboy.Sockets”实现了一个简单的传输实现。

tools

Rabbit.Rpc.Tests

单元测试项目。

Rabbit.Rpc.ClientGenerator(支持跨平台)

预生产服务代理的工具,提供了如下功能:

  1. 生成服务代理实现代码文件

  2. 生成服务代理实现程序集文件

性能测试

测试环境

OS

CPU

内存

硬盘

网络环境

虚拟机

Windows 10 x64

I7 3610QM

16GB

SSD

127.0.0.1

Ubuntu 16.04 x64

I7 3610QM

4GB

SSD

127.0.0.1

Windows10+NETCoreApp1.0+JSON协议+Simple传输

概述

平均用时:2601.6毫秒

平均每次用时:0.26毫秒

通过率:100%

Windows10+NETCoreApp1.0+ProtoBuffer协议+Simple传输

概述

平均用时:2625.4毫秒

平均每次用时:0.25毫秒

通过率:100%

Ubuntu16.04-x64+NETCoreApp1.0+JSON协议+Simple传输

概述

平均用时:3108.4毫秒

平均每次用时:0.31毫秒

通过率:100%

Ubuntu16.04-x64+NETCoreApp1.0+ProtoBuffer协议+Simple传输

概述

平均用时:3580.4毫秒

平均每次用时:0.35毫秒

通过率:100%

ps:linux性能与windows上的性能有一些差距,不知道是不是虚拟机的原因,但有个有趣的现象,protobuffer在linux上的性能居然比json低,应该是protobuffer库的实现不够优秀。

测试代码

https://github.com/RabbitTeam/Rpc/tree/master/src/examples/performances

下一步?

等待DotNetty组件支持NETCore,并进行适配。

继续写Rabbit.Rpc相关的文章。

下一篇应该是,如何在Ubuntu上运行Rabbit.Rpc

交流方式

QQ群:384413261(RabbitHub)

Email:majian159@live.com

相关文章:

  • ASP.NET Core 1.0 入门——了解一个空项目

  • ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)

  • .NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0简介

  • 云服务器下ASP.NET Core 1.0环境搭建(包含mono与coreclr)

  • 使用VS Code开发ASP.NET Core 应用程序

  • dotnet run是如何启动asp.net core站点的

  • ASP.NET Core提供模块化Middleware组件

  • “dotnet restore"和"dotnet run"都做了些什么?

  • 探秘 dotnet run 如何运行 .NET Core 应用程序

  • .NET Portability Analyzer 已开源

  • ASP.NET Core的配置(1):读取配置信息

  • ASP.NET Core的配置(2):配置模型详解

  • .NET Core 1.0 RC2 历险之旅

  • 使用VS Code开发 调试.NET Core 应用程序

  • 让我们Core在一起:ASP.NET Core & .NET Core

  • .NET Core VS Code 环境配置

  • 官方博客明确了 .NET Core RC2/RTM 时间表

  • .NET Core全新的配置管理[共9篇]

  • 利用记事本创建一个ASP.NET Core RC2 MVC应用

  • 微软.NET 正式劈腿成功,横跨所有平台

  • .NET Core 1.0 CentOS7 尝试

  • 解读发布:.NET Core RC2 and .NET Core SDK Preview 1

  • [.NET Core].NET Core R2安装及示例教程

  • ASP.NET Core 开发-中间件(Middleware)

  • 结合Jexus + Kestrel 部署 asp.net core 生产环境

  • 通过Jexus 部署 dotnetcore版本MusicStore 示例程序

  • ASP.NET Core 中文文档 第一章 入门

  • 用 Visual Studio Code 在 macOS 上创建首个 ASP.NET Core 应用程序

  • 用 Visual Studio 和 ASP.NET Core MVC 创建首个 Web API

  • 用 Visual Studio 发布一个 Azure 云 Web 应用程序

  • ASP.NET Core MVC 与 Visual Studio 入门

  • 第二章指南(4.2)添加 Controller

  • DotNet Core 介绍

  • asp.net core 中间件详解及项目实战

  • 教你实践ASP.NET Core Authorization(免看文档教程)

  • asp.net core 使用 Redis 和 Protobuf 进行 Session 缓存

  • asp.net core 中间件详解及项目实战

  • 第二章 指南(4.3)添加 View

  • dotnet core开发体验之开始MVC

  • dotnet core 开发体验之Routing

  • 聊聊ASP.NET Core默认提供的这个跨平台的服务器——KestrelServer

  • 简析.NET Core 以及与 .NET Framework的关系

  • .NET Core 使用Dapper 操作MySQL

  • 使用 CommandLineApplication 类创建专业的控制台程序

  • 简析 .NET Core 构成体系

  • .NET Core也可以使用MongoDB了

  • .NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布

  • .NET Core:面向未来的开源跨平台开发技术

  • 微软说它深爱着Linux,现在它用行动证明了

  • 移植.NET Core计划,整合各平台变得更简单了!

  • ASP.NET Core 介绍

  • 通过几个Hello World感受.NET Core全新的开发体验

  • ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行

  • .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门

  • Asp.Net Core 发布和部署( MacOS + Linux + Nginx )

  • Asp.Net Core 发布和部署(Linux + Jexus )

  • 学习ASP.NET Core,你必须了解无处不在的“依赖注入”

  • .NET Core应用类型(Portable apps & Self-contained apps)

  • .NET Core 1.0发布:微软开源跨平台大布局序幕

  • ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)

  • 在Windows Server 2012 R2 Standard 部署 ASP.NET Core程序

  • ASP.NET Core 开发-Entity Framework (EF) Core 1.0 Database First

原文地址:http://www.cnblogs.com/ants/p/5652132.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

赞赏

人赞赏

拥抱.NET Core,跨平台的轻量级RPC:Rabbit.Rpc相关推荐

  1. 拥抱.NET Core,如何开发一个跨平台类库

    在此前的文章中详细介绍了使用.NET Core的基本知识,如果还没有看,可以先去了解"拥抱.NET Core,学习.NET Core的基础知识补遗",以便接下来的阅读. 在本文将介 ...

  2. 拥抱.NET Core,如何开发一个跨平台类库 (1)

    在此前的文章中详细介绍了使用.NET Core的基本知识,如果还没有看,可以先去了解"拥抱.NET Core,学习.NET Core的基础知识补遗",以便接下来的阅读. 在本文将介 ...

  3. 拥抱.NET Core,学习.NET Core的基础知识补遗

    前言 .NET Core的新特性之一就是跨平台,但由于对之前框架的兼容导致编写一个.NET Core类库变得相当复杂,主要体现为相当多的框架目标和支持平台,今天我们就对.NET Core的跨平台特性进 ...

  4. .Net Core跨平台应用研究-HelloArm(串口篇)

    引言 为了验证采用dotnet core技术开发的物联网设备数据采集接入服务应用是否能在高性价比的linux嵌入式平台运行,针对dotnet core应用程序进行嵌入式linux环境的发布部署运行验证 ...

  5. 拥抱.NET Core系列:依赖注入(2)

    上一篇"拥抱.NET Core系列:依赖注入(1)大体介绍了服务注册.获取和生命周期,这一篇来做一些补充.由于内容跨度大(.NET Core.ASP.NET Core),所以文章并不是非常的 ...

  6. wpf 开源框架_.NET Core跨平台基础框架:10 篇热文汇总

    (给DotNet加星标,提升.Net技能) 本文精选了DotNet 2019年12月份的10篇热门文章.其中有技术分享.技术资源. 注:以下文章,点击标题即可阅读 <C#异步编程 > Ta ...

  7. ASP.NET Core跨平台技术内幕

    ASP.NET Core设计初衷是开源跨平台.高性能Web服务器,其中跨平台特性较早期ASP.NET是一个显著的飞跃,.NET现可以理直气壮与JAVA同台竞技,而ASP.NET Core的高性能特性更 ...

  8. 当我们在谈 .NET Core 跨平台时,我们在谈些什么?--学习笔记

    摘要 .NET Framework在过去十多年在跨平台上的尝试. .NET Core跨平台的实现有何不同? 基于 .NET Standard的平台兼容性是如何实现的? 讲师介绍 历史枷锁 .NET F ...

  9. 【.NET Core 跨平台 GUI 开发】第一篇:编写你的第一个 Gtk# 应用

    本文是[.NET Core 跨平台 GUI 开发]系列博文的第一篇.该系列博文是一个关于 Gtk# 跨平台应用开发的初级随笔集合.该随笔集合介绍了 GTK 和 Gtk# 的基本信息以及开发方法,并展示 ...

最新文章

  1. leetcode--反转链表--python
  2. 机器学习数据预处理之缺失值:插值法填充+多项式插值
  3. 三代测序关键计算技术开发及应用
  4. 博弈论笔记1:囚徒困境与纳什均衡
  5. 【机器学习PAI实践十】深度学习Caffe框架实现图像分类的模型训练
  6. 精通java图片_面试必备:详解Java I/O流,掌握这些就可以说精通了?
  7. 51`CTO下载中心——我的新爱
  8. 2.3.1 进程的同步与互斥
  9. python将html存为pdf_用Python将HTML转为PDF。
  10. Protobuf编码指南
  11. [Usaco2007 Dec]宝石手镯[01背包][水]
  12. 做深度学习需要知道哪些linux指令?
  13. (六)linux内核中的offsetof与container_of宏
  14. CIO思考:混合云为行业注入了哪些活力?
  15. matlab 向量元素,MATLAB遍历向量的元素
  16. 能分析压缩的日志,且基于文件输入的PYTHON代码实现
  17. 阿里巴巴面试题- - -Java体系最新面试题(2022内部资料)
  18. 第7讲 视觉里程计1 下篇
  19. nexus3私服搭建
  20. Android 6.0 状态栏信号图标分析

热门文章

  1. Nginx+Tomcat动静态资源分离
  2. android 多布局
  3. 优秀的培训机构该如何培养学生?
  4. centos linux 禁止ping
  5. RHEL 5.4下cyrus-sasl-2.1.22 的编译安装
  6. 测试Live Write的插件
  7. ASP.NET中常用输出JS脚本的类(改进版)
  8. MYSQL 表的修复(不断更新)
  9. 基于 Azure 的认知服务将文本合成语音
  10. 中国移动云能力中心 Iaas 产品部软件开发工程师陈焱山:社区始于连接,也成就于连接...