VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 263|回复: 8

[原创] 世界上最好的c++ rpc (c++14)

[复制链接]
05_avatar_middle
在线会员 802311chen 发表于 2018-11-19 18:49:36 | 显示全部楼层 |阅读模式
本帖最后由 802311chen 于 2018-11-19 18:51 编辑

世界上最好的c++ rpc 实现, 基于c++14标准
server:

  1. #include "buttonrpc.hpp"

  2. int foo(int age, int mm){
  3.         return age + mm;
  4. }

  5. int main()
  6. {
  7.         buttonrpc server;
  8.         server.as_server(5555);

  9.         server.bind("foo", foo);
  10.         server.run();

  11.         return 0;
  12. }
复制代码


client:
  1. #include <iostream>
  2. #include "buttonrpc.hpp"

  3. int main()
  4. {
  5.         buttonrpc client;
  6.         client.as_client("127.0.0.1", 5555);
  7.         int a = client.call<int>("foo", 2, 3).val();
  8.         std::cout << "call foo result: " << a << std::endl;
  9.         system("pause");
  10.         return 0;
  11. }

  12. // output: call foo result: 5
复制代码


完整地址: https://github.com/button-chen/buttonrpc_cpp14





上一篇:测试题
下一篇:c++编程

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

74_avatar_middle
在线会员 zuiwuchang 发表于 2018-11-21 14:41:27 | 显示全部楼层
對了 grpc 使用的 http2 傳輸
nginx 聽講 已經支持了 grpc(不過 我是還沒試過啦) 這也是一個 很錦上添花的 優勢

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 1 反对 0

使用道具 举报

05_avatar_middle
ico_lz  楼主| 802311chen 发表于 2018-11-19 18:52:42 | 显示全部楼层
amazing amazing amazing

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-11-19 21:17:49 | 显示全部楼层
貌似依赖于 ZeroMQ 这个组件!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

05_avatar_middle
ico_lz  楼主| 802311chen 发表于 2018-11-19 22:47:12 | 显示全部楼层
Syc 发表于 2018-11-19 21:17
貌似依赖于 ZeroMQ 这个组件!

老大好 , 网络用zeromq。 此代码初学者可以学习rpc简单原理和cpp新标准一些用法。  代码也就几百行。   我是在vc驿站学习编程的,  来做点力所能及的  帮助别人。世界上最好的c++ rpc  (c++14)

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-11-19 22:47:50 | 显示全部楼层
802311chen 发表于 2018-11-19 22:47
老大好 , 网络用zeromq。 此代码初学者可以学习rpc简单原理和cpp新标准一些用法。  代码也就几百行。    ...

不错哦~互相帮助,互相学习!世界上最好的c++ rpc  (c++14)

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

74_avatar_middle
在线会员 zuiwuchang 发表于 2018-11-20 09:33:07 | 显示全部楼层
世界上最好? 你知道有個東西叫grpc嗎
我問你 你這個 rpc
可以被其它流行的語言 go java python nodejs 調用嗎?
可以實現 tcp 復用嗎?
可以實現 對一個 rpc 調用進行 數據流 傳輸嗎?
可以進行 ssl 加密傳輸嗎?
怎麼驗證 客戶端 身份?
數據結構可以自動 序列和反序嗎?
看你例子是調用的函數 怎麼調用 類呢? 客戶端 參數 型別比如 int32 和服務器定義 int64 如果不同是 怎麼處理的?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

05_avatar_middle
ico_lz  楼主| 802311chen 发表于 2018-11-20 18:38:33 | 显示全部楼层
zuiwuchang 发表于 2018-11-20 09:33
世界上最好? 你知道有個東西叫grpc嗎
我問你 你這個 rpc
可以被其它流行的語言 go java python nodejs  ...

这叫夸张手法 哈哈,  不过是可以调用类   自定义类型需要实现固定的操作符 是可以支持自定义类型参数的。  学习用的   我觉得可以按照自己的想法写点简单的东西。  你有写的话我可以帮你点赞的。     什么grpc   thrift   ice 啊  之类谁都知道的,  怎么跨语言都是通过idl 描述来做的。  谁都知道的。   你要看出我的夸张   不要太认真 大兄弟 世界上最好的c++ rpc  (c++14)

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

74_avatar_middle
在线会员 zuiwuchang 发表于 2018-11-21 14:34:40 | 显示全部楼层
802311chen 发表于 2018-11-20 18:38
这叫夸张手法 哈哈,  不过是可以调用类   自定义类型需要实现固定的操作符 是可以支持自定义类型参数的 ...

原理就那麼回事 不過要全部實現 和 測試 還有保證易用性 持續支持 則很難了 所以 應該直接用開源項目而不是自己寫  我覺得 grpc 才是 ”世界最好“

雖然知道你是 誇張 不過 "世界最好" 這個詞 強佔了 grpc 在我心中的位置 所以 忍不住要 嗆聲啦  

grpc 的 tcp 復用 和 以 數據流 調用 rpc 函數 都是我最欣賞的地方 不知道 除了 grpc 還有哪些實現了 這兩個特性的
如果不支持 這兩個 在我看來 rpc 就要大打折扣了(所以grpc前我都很少會用 rpc) 因爲以我現在的認知裏 有了這兩個特性 就可以把幾乎任何 tcp 通訊都 改用 rpc了

當然 不支持tcp復用和流式調用的rpc 可以提供一個rpc服務器和 tcp服務器 來解決 但 這時 同個服務就分成了兩個項目 在我看來是 不能接受的(懶人無解) 因爲要多維護一個項目

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-12-14 00:54

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表