文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C#怎么使用Thrift作为RPC框架

2023-06-21 21:03

关注

这篇文章主要讲解了“C#怎么使用Thrift作为RPC框架”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#怎么使用Thrift作为RPC框架”吧!

完善开发工具

通过nuget在vs2019中安装thrift

在项目中引用右键点击管理Nuget程序包,在打开的界面输入thrift,如下图:

C#怎么使用Thrift作为RPC框架

我们选择ApacheThrift这一项进行安装,安装后,在我们项目里有Thrift45.dll的引用,如下图:

C#怎么使用Thrift作为RPC框架

下载thrift代码生成工具

thrift是支持异构语言、异构平台的通信开发RPC框架,它通过中间语言IDL进行描述你要定义的结构、类、服务等,并通过代码生成工具生成各个语言上对应的代码。

接下来,我们进入Apache网站Thrift项目下载Thrift代码生成工具,如下图:

C#怎么使用Thrift作为RPC框架

我们把下载的这个exe文件放到我们项目的根目录下,以备后用,如下图:

C#怎么使用Thrift作为RPC框架

至此,关于thrift的开发工具,我们已经准备完毕,接下来来编写thrift接口描述文件

thrift描述文件

thrift提供的接口描述文件是以thrift结尾的格式文件,我们来解释一下这种IDL的语法,

在IDL描述文件中,Thrift除了对类型的定义外,我们还需要记住一下知识点:

namespace csharp WpfApp1.ceshi

include 在描述文件的头部定义。 用该命令包含其他thrift描述文件,当编译生成代码时也会编译include指定的thrift文件。代码如下:

include "pe1.thrift"

使用方法,pe1.thrift文件定义如下:

struct pe1{ 1: i32 id;}

在其他文件中,引入上述文件,定义如下:

include "pe1.thrift"service GuidGenService{   string getGuid(1:pe1.pe1 pe1);}

typedef 类型定义命令,将thrift支持的类型定义一个别名。代码如下:

typedef i32 intstruct People{1: int ID;2: string Name;3: i16 Age;4: list<i32> onelist;5: set<string> oneSet;6: map<i32,string> oneset;}

当定义完描述文件后,我们通过如下cmd命令生成代码文件:

thrift-0.12.0.exe -r -gen csharp People.thrift

我们先要通过cd 将当前路径跳转到thrift-0.12.0.exe所在的路径

示例

我定义了了一个描述文件,如下:

namespace csharp WpfApp1.ceshiinclude "pe1.thrift"typedef i32 intstruct People{1: int ID;2: string Name;3: i16 Age;4: list<i32> onelist;5: set<string> oneSet;6: map<i32,string> oneset;}service HelloService{ void SetPeople(1: People people1);}service GuidGenService{  string getGuid(1:pe1.pe1 pe1);}

我们通过上述命令执行后,生成的代码结构如下图:

C#怎么使用Thrift作为RPC框架

我们打开people.cs可以看到struct people生成了如下代码:

namespace WpfApp1.ceshi{  #if !SILVERLIGHT  [Serializable]  #endif  public partial class People : TBase  {    private int _ID;    private string _Name;    private short _Age;    private List<int> _onelist;    private THashSet<string> _oneSet;    private Dictionary<int, string> _oneset;    .....

这里需要注意一下people类的命名空间,这和我们上文讲的时一致的。
我们定义的service GuidGenService生成了如下代码:

C#怎么使用Thrift作为RPC框架

该类是我们使用该框架的重点,它给我们生成了客户端和服务器端代码,从图中我们可以看该文件下生成了两个接口ISync和Iface,前者是同步方法,后者生成的是异步调用方法,接下来是一个供我们客户端调用的类,它继承了iface接口,而iface又继承了ISync接口;再往下看是一个Processor,是服务端使用的类。

感谢各位的阅读,以上就是“C#怎么使用Thrift作为RPC框架”的内容了,经过本文的学习后,相信大家对C#怎么使用Thrift作为RPC框架这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯