前言本文将介绍Facebook开发的远程服务调用框架ApacheThrift,它使用接口描述语言来定义和创建服务,支持可扩展的交叉-语言服务开发,包含的代码生成引擎可以创建多种语言的高效无缝服务,如C++、Java、Python、PHP、Ruby、Erlang、Perl、Haskell、C#、Cocoa、Smalltalk等。二进制格式为比XML和JSON更小,对于高并发、大数据量、多语言的环境更有优势。本文将详细介绍C#语言如何使用Thrift,并提供丰富的示例代码进行讲解和讲解,帮助用户快速搭建服务。完善开发工具在vs2019中通过nuget安装thrift在项目中右键管理Nuget包,在打开的界面中输入thrift,如下图:我们选择ApacheThrift进行安装。安装后,我们的项目中就有了Thrift45。dll参考,如下图:下载thrift代码生成工具thrift是一个支持异构语言和异构平台的通信开发RPC框架。它使用中间语言IDL来描述你要定义的结构、类、服务等,并生成代码该工具在每种语言中生成相应的代码。接下来我们进入Apache官网的Thrift项目下载Thrift代码生成工具,如下图:至此,关于Thrift的开发工具,我们已经完成了准备工作。接下来,我们将编写thrift接口描述文件。,i16,i32,i64,double,stringenumStruct一些基本类型的封装,对应C#中的Class字段和一些集合定义,包括set<>对应C#中的HashSet,是唯一元素的集合(Thrift框架本身定义THashSet类型与之对应);list<>对应C#中的List<>;map对应C#中的Dictionaryservice这是thrift的重点,它是方法的集合,thrift根据这个定义,客户端代码和服务端代码异常都会产生对应的ExceptiontypethriftinC#类型的定义和示例代码请打开这个网站:IDL描述在IDL描述文件中,Thrift不仅定义了类型,还需要记住一个知识点:命名空间定义在描述文件。以当前文件为根目录,生成多级目录;将命名空间命名空间添加到生成的代码中。代码如下:namespacecsharpWpfApp1.ceshiinclude定义在描述文件的头部。使用此命令包含其他thrift描述文件。编译生成代码时,include指定的thrift文件也会被编译。代码如下:包含“pe1.thrift”使用方法,pe1.thrift文件定义如下:structpe1{1:i32id;}在其他文件中,导入上述文件,定义如下:include"pe1.thrift"serviceGuidGenService{stringgetGuid(1:pe1.pe1pe1);}typedef类型定义命令,为thrift支持的类型定义一个别名。代码如下:typedefi32intstructPeople{1:intID;2:字符串名称;3:16岁;4:列表一个列表;5:setoneSet;6:map一组;定义好描述文件后,我们通过如下cmd命令生成代码文件:thrift-0.12.0.exe-r-gencsharpPeople.thrift我们需要通过cd将当前路径跳转到thrift-0.12.0.exe我定义描述文件的路径示例如下:namespacecsharpWpfApp1.ceshiinclude"pe1.thrift"typedefi32intstructPeople{1:intID;2:字符串名称;3:16岁;4:listonelist;5:setoneSet;6:map一组;}serviceHelloService{voidSetPeople(1:Peoplepeople1);}serviceGuidGenService{stringgetGuid(1:pe1.pe1pe1);}我们执行上面的命令后,生成的代码结构如下:我们打开people.cs可以看到structpeople生成了如下代码:namespaceWpfApp1.ceshi{#if!SILVERLIGHT[Serializable]#endifpublicpartialclass人:TBase{privateint_ID;私有字符串_Name;私人短_Age;私有列表_onelist;私有THashSet<字符串>_一套;私人字典_oneset;.....这里需要注意people类的命名空间,这和我们上面说的是一致的。我们定义的服务GuidGenService生成如下代码:这个类是我们使用这个框架的重点,它为我们生成客户端和服务端代码。从图中我们可以看到在这个文件下生成了ISync和Iface两个接口。前者是同步方法,后者生成异步调用方法。接下来是我们客户端调用的一个类,它继承了iface接口,iface继承了ISync接口;往下看,是一个Processor,也就是服务器使用的类。在这篇文档的最后,我们讲了thrift框架从0到1的使用方法,也讲了框架的一些基础知识。在接下来的文档中,我们将通过一个例子来解释服务命令代码生成的代码的具体含义和意义。如何使用这篇关于C#使用Thrift作为RPC框架介绍(一)的文章介绍到这里。更多关于c#ThriftRPC框架的内容请搜索往期文章或继续浏览以下相关文章。希望以后大家多多支持。!本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: