Machete.Rpc

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

Github:https://github.com/MacheteTeam/Machete.Rpc.

简单使用

目前还没有放到Nuget上,稍后放上去

1.新建一个类库Machete.Rpc.Sample.Service,新建一个接口IChatService

 [RpcService]
public interface IChatService
{
string Hi(string name); string Hi(string name, string content); string Hello(int age); string Hello(double age);
}

2.在新建一个类库Machete.Rpc.Sample.Implement,在类库里面新建一个实现IChatService的类

 [RpcService]
public class ChatService : IChatService
{
public string Hi(string name)
{
return name + ":你好 世界";
} public string Hi(string name, string content)
{
return name + ":" + content;
} public string Hello(int age)
{
return "int:" + age;
} public string Hello(double age)
{
return "double:" + age;
}
}

3.新建一个控制台程序 Machete.Rpc.Sample.Server(或者其他的程序),添加对Machete.Rpc.Sample.Service,Machete.Rpc.Sample.Implement的引用,在app.config 中增加如下配置,

 <appSettings>
<add key="rpc.service" value="Machete.Rpc.Sample.Implement.dll"/>
<add key="rpc.server.port" value="12900"/>
</appSettings>

在Main方法中开启一个rpc服务

  int port = Convert.ToInt32(ConfigurationManager.AppSettings["rpc.server.port"].ToString());
RpcHub hub = new RpcHub();
hub.Start(port);

4.新建一个wpf(或其他的客户端程序)Machete.Rpc.Sample.Client,添加对Machete.Rpc.Sample.Service的引用,在app.config 文件中增加如下配置,

  <appSettings>
<add key="rpc.server.host" value="127.0.0.1"/>
<add key="rpc.server.port" value="12900"/>
</appSettings>

进行rpc调用代码很简单,如下:

  private void Button_Click(object sender, RoutedEventArgs e)
{
IChatService chatService = InterfaceProxy.Resolve<IChatService>();
string result = chatService.Hi("张三");
MessageBox.Show(result);
}

5.先启动Machete.Rpc.Sample.Server,在启动Machete.Rpc.Sample.Client。点击按钮(Say Hi),会进行rpc调用得到结果。

开源自己实现一个.net rpc框架 - Machete.Rpc的更多相关文章

  1. C# -- 高性能RPC框架:Socean.RPC

    简介 Socean.RPC是一个.Net下的高性能RPC框架,框架以高性能.高稳定性为目标,底层基于socket,无第三方库引用,代码简洁,总代码量大约在2000行,框架性能较高,在普通PC上测试,长 ...

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

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

  3. 各大开源rpc 框架 比较

    各大开源rpc 框架 比较   1. 前言 随着现在互联网行业的发展,越来越多的框架.中间件.容器等开源技术不断地涌现,更好地来服务于业务,解决实现业务的问题.然而面对众多的技术选择,我们要如何甄别出 ...

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

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

  5. 一个简单RPC框架是怎样炼成的(I)——开局篇

    开场白,这是一个关于RPC的相关概念的普及篇系列,主要是通过一步步的调整,提炼出一个相对完整的RPC框架. RPC(Remote Procedure Call Protocol)--远程过程调用协议, ...

  6. Java实现简单的RPC框架

    一.RPC简介 RPC,全称为Remote Procedure Call,即远程过程调用,它是一个计算机通信协议.它允许像调用本地服务一样调用远程服务.它可以有不同的实现方式.如RMI(远程方法调用) ...

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

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

  8. Java实现简单的RPC框架(美团面试)

    一.RPC简介 RPC,全称为Remote Procedure Call,即远程过程调用,它是一个计算机通信协议.它允许像调用本地服务一样调用远程服务.它可以有不同的实现方式.如RMI(远程方法调用) ...

  9. FW:主流RPC框架

    主流RPC框架  2015年10月27日  zman  RPC 介绍目前在互联网公司比较流行的开源的RPC框架. RPC框架比较   语言 协议 ​服务治理 ​社区 机构 Hessian 多语言 he ...

随机推荐

  1. 洛谷 P4026 [SHOI2008]循环的债务

    水水的dp 设f[i][a][b]表示交换完前i种面值的钞票,第一个人有a元,第二个人有b元的最小代价 直接转移就行了 需要注意的是算的式子 第1个人\(\Delta A\),第二个人\(\Delta ...

  2. [FJOI2015]火星商店问题

    [FJOI2015]火星商店问题 神仙线段树分治...不过我不会. 这题用线段树套可持久化Trie还是能写的. 常数有点大,洛谷垫底水平. // luogu-judger-enable-o2 #inc ...

  3. tcp三次握手四次挥手那些事

    建立TCP需要三次握手才能建立,而断开连接则需要四次挥手.三次握手,四次挥手流程图如下: 一.首先看下如何通过三次挥手----------建立连接 首先客户端发送连接请求报文,服务端接受连接后回复AC ...

  4. target属性用于返回最初触发事件的DOM元素。

    target属性用于返回最初触发事件的DOM元素. 在HTML文档中,我们为<p>元素绑定点击事件("click"),由于DOM元素的事件冒泡机制,我们点击<p& ...

  5. python 实现redis订阅发布功能

    redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...

  6. Asp.Net Form验证不通过,重复登录(.net4,4.5form验证兼容性问题)

    问题产生根源: 当然,其实应该需要保持线上所有机器环境一致!可是,写了一个小程序.使用的是4.5,aysnc/await实在太好用了,真心不想把代码修改回去. so,动了念头,在这台服务器上装个4.5 ...

  7. 微信小程序中的 web-view 组件

    web-view 是一个可以承载 web 网页的容器,当 WXML 文件中存在 web-view 组件时,其他组件会自动全部失效,而且 web-view 承载的组件会自动铺满小程序的整个页面.其他组件 ...

  8. yum 出现error: db5 error

    yum 安装k8s的过程中用了 Ctrl+ z, 然后yum 再也不能使用了: Error: rpmdb open failed 解决方法: rpm --rebuilddb yum clean all ...

  9. Go入门指南

    第一部分:学习 Go 语言 第1章:Go 语言的起源,发展与普及 1.1 起源与发展 1.2 语言的主要特性与发展的环境和影响因素 第2章:安装与运行环境 2.1 平台与架构 2.2 Go 环境变量 ...

  10. XAMPP安装PHP_GMP

    CentOS 6.4 Xampp 7.1.12 下载PHP7.1.12的源码包 yum install gmp-devel yum install m4 .tar.xz cd /root/php-/e ...