拥抱.NET Core,跨平台的轻量级RPC:Rabbit.Rpc
不久前发布了一篇博文“.NET轻量级RPC框架:Rabbit.Rpc”,当初只实现了非常简单的功能,也罗列了之后的计划,经过几天的不断努力又为Rabbit.Rpc增加了一大波新特性,今天主要介绍下项目近况。
特性一览
Apache License 2.0协议开源
支持客户端负载均衡(提供了轮询、随机算法的实现)
支持ZooKeeper和文件共享形式的服务协调
运行时客户端代理生成(基于Roslyn)
预生成客户端代理
客户端代理预生成(基于Roslyn)
抽象的编解码器(提供了JSON、ProtoBuffer协议的实现)
抽象的传输通道(提供了DotNetty与Cowboy.Sockets的移植实现)
异常信息传递(服务端运行时的本地异常可以传递至客户端)
NET Core项目架构
跨平台
项目概况
开源地址:https://github.com/RabbitTeam/Rpc
Rabbit.Rpc(支持跨平台)
Rpc核心类库,有如下功能:
服务Id生成
传输消息模型
类型转换
服务路由抽象
序列化器抽象(默认提供JSON序列化器)
传输抽象
编解码器抽象(默认提供JSON的编解码器实现)
客户端运行时(地址解析器、地址选择器,远程调用服务)
服务端运行时(服务条目管理、服务执行器、服务发现抽象、RpcServiceAttribute标记服务发现实现)
Rabbit.Rpc.ProxyGenerator(支持跨平台)
服务代理生成器,提供的功能:
服务代理实现生成
服务代理实例创建
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(支持跨平台)
预生产服务代理的工具,提供了如下功能:
生成服务代理实现代码文件
生成服务代理实现程序集文件
性能测试
测试环境
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的配置(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相关推荐
- 拥抱.NET Core,如何开发一个跨平台类库
在此前的文章中详细介绍了使用.NET Core的基本知识,如果还没有看,可以先去了解"拥抱.NET Core,学习.NET Core的基础知识补遗",以便接下来的阅读. 在本文将介 ...
- 拥抱.NET Core,如何开发一个跨平台类库 (1)
在此前的文章中详细介绍了使用.NET Core的基本知识,如果还没有看,可以先去了解"拥抱.NET Core,学习.NET Core的基础知识补遗",以便接下来的阅读. 在本文将介 ...
- 拥抱.NET Core,学习.NET Core的基础知识补遗
前言 .NET Core的新特性之一就是跨平台,但由于对之前框架的兼容导致编写一个.NET Core类库变得相当复杂,主要体现为相当多的框架目标和支持平台,今天我们就对.NET Core的跨平台特性进 ...
- .Net Core跨平台应用研究-HelloArm(串口篇)
引言 为了验证采用dotnet core技术开发的物联网设备数据采集接入服务应用是否能在高性价比的linux嵌入式平台运行,针对dotnet core应用程序进行嵌入式linux环境的发布部署运行验证 ...
- 拥抱.NET Core系列:依赖注入(2)
上一篇"拥抱.NET Core系列:依赖注入(1)大体介绍了服务注册.获取和生命周期,这一篇来做一些补充.由于内容跨度大(.NET Core.ASP.NET Core),所以文章并不是非常的 ...
- wpf 开源框架_.NET Core跨平台基础框架:10 篇热文汇总
(给DotNet加星标,提升.Net技能) 本文精选了DotNet 2019年12月份的10篇热门文章.其中有技术分享.技术资源. 注:以下文章,点击标题即可阅读 <C#异步编程 > Ta ...
- ASP.NET Core跨平台技术内幕
ASP.NET Core设计初衷是开源跨平台.高性能Web服务器,其中跨平台特性较早期ASP.NET是一个显著的飞跃,.NET现可以理直气壮与JAVA同台竞技,而ASP.NET Core的高性能特性更 ...
- 当我们在谈 .NET Core 跨平台时,我们在谈些什么?--学习笔记
摘要 .NET Framework在过去十多年在跨平台上的尝试. .NET Core跨平台的实现有何不同? 基于 .NET Standard的平台兼容性是如何实现的? 讲师介绍 历史枷锁 .NET F ...
- 【.NET Core 跨平台 GUI 开发】第一篇:编写你的第一个 Gtk# 应用
本文是[.NET Core 跨平台 GUI 开发]系列博文的第一篇.该系列博文是一个关于 Gtk# 跨平台应用开发的初级随笔集合.该随笔集合介绍了 GTK 和 Gtk# 的基本信息以及开发方法,并展示 ...
最新文章
- leetcode--反转链表--python
- 机器学习数据预处理之缺失值:插值法填充+多项式插值
- 三代测序关键计算技术开发及应用
- 博弈论笔记1:囚徒困境与纳什均衡
- 【机器学习PAI实践十】深度学习Caffe框架实现图像分类的模型训练
- 精通java图片_面试必备:详解Java I/O流,掌握这些就可以说精通了?
- 51`CTO下载中心——我的新爱
- 2.3.1 进程的同步与互斥
- python将html存为pdf_用Python将HTML转为PDF。
- Protobuf编码指南
- [Usaco2007 Dec]宝石手镯[01背包][水]
- 做深度学习需要知道哪些linux指令?
- (六)linux内核中的offsetof与container_of宏
- CIO思考:混合云为行业注入了哪些活力?
- matlab 向量元素,MATLAB遍历向量的元素
- 能分析压缩的日志,且基于文件输入的PYTHON代码实现
- 阿里巴巴面试题- - -Java体系最新面试题(2022内部资料)
- 第7讲 视觉里程计1 下篇
- nexus3私服搭建
- Android 6.0 状态栏信号图标分析