网站上线需要多久,网站建设收获与不足,十堰网络推广公司,最新的网络营销的案例前面介绍了thrift 基础的东西#xff0c;怎么写thrift 语法规范编写脚本#xff0c;如何生成相关的语言的接口。不清楚的可以看这个《Thrift总结(一)介绍》。做好之前的准备工作以后#xff0c;下面就开始如何用Thrift写RPC接口。如何用Thrift写RPC接口1. 打开之前下载的thr…前面介绍了thrift 基础的东西怎么写thrift 语法规范编写脚本如何生成相关的语言的接口。不清楚的可以看这个《Thrift总结(一)介绍》。做好之前的准备工作以后下面就开始如何用Thrift写RPC接口。 如何用Thrift写RPC接口 1. 打开之前下载的thrift 源码thrift-0.10.0libcsharpsrc 编译生成Thrift.dll 文件。 2. 新建一个空白解决方案命名为HelloThrift。在解决方案根目录下创建一个lib文件夹将刚刚生成的Thrift.dll文件放入lib文件夹中。在解决方案分中建立两个控制台程序和一个类库控制台程序分别命名为HelloThrift.Client 和 HelloThrift.Server类库命名为Thrift.Interface。Client、Server和Interface分别引用lib文件夹中的Thrift.dll文件将准备工作中生成的HelloService文件导入到Interface类库中。Client和Server分别引用Interface。具体结果如下图所示 3. 创建完相关的项目和引用之后在服务端HelloThrift.Server 创建一个类命名为MyHelloService,实现HelloService.Iface接口代码如下 清单1.MyHelloServiceusing System;using HelloThrift.Interface;namespace HelloThrift.Server{ public class MyHelloService : HelloService.Iface { /// /// 只有一个参数返回值为字符串类型的方法 /// /// string类型参数 /// 返回值为string类型 public string HelloString(string para) { System.Threading.Thread.Sleep(1 * 1000); Console.WriteLine(客户端调用了HelloString方法); return para; } /// /// 只有一个参数返回值为int类型的方法 /// /// /// 返回值为int类型 public int HelloInt(int para) { System.Threading.Thread.Sleep(1 * 1000); Console.WriteLine(客户端调用了HelloInt方法); return para; } /// /// 只有一个bool类型参数返回值为bool类型的方法 /// /// /// 返回值为bool类型 public bool HelloBoolean(bool para) { System.Threading.Thread.Sleep(1 * 1000); Console.WriteLine(客户端调用了HelloBoolean方法); return para; } /// /// 返回执行为空的方法 /// public void HelloVoid() { System.Threading.Thread.Sleep(1 * 1000); Console.WriteLine(客户端调用了HelloVoid方法); Console.WriteLine(HelloWorld); } /// /// 无参数返回值为null的方法 /// /// 返回值为null public string HelloNull() { System.Threading.Thread.Sleep(1 * 1000); Console.WriteLine(客户端调用了HelloNull方法); return null; } }} 4. 创建服务器端HelloThrift.Server 宿主的实现代码在Program.cs 中添加如下代码这样一个thrift 服务器就创建好了。 清单2.HelloThrift.Serverusing System;using Thrift;using Thrift.Protocol;using Thrift.Server;using Thrift.Transport;using HelloThrift.Interface;namespace HelloThrift.Server{ class Program { static void Main(string[] args) { try { //设置服务端口为8080 TServerSocket serverTransport new TServerSocket(9081); //设置传输协议工厂 TBinaryProtocol.Factory factory new TBinaryProtocol.Factory(); //关联处理器与服务的实现 TProcessor processor new HelloService.Processor(new MyHelloService()); //创建服务端对象 TServer server new TThreadPoolServer(processor, serverTransport, new TTransportFactory(), factory); Console.WriteLine(服务端正在监听9081端口); server.Serve(); } catch (TTransportException ex)//捕获异常信息 { //打印异常信息 Console.WriteLine(ex.Message); } } }} 5. 创建完服务端之后下面开始生成一个客户端实现代码在HelloThrift.Client 的 Program.cs 中添加如下代码 清单3.HelloThrift.Clientusing System;using HelloThrift.Interface;using Thrift.Protocol;using Thrift.Transport;namespace HelloThrift.Client{ class Program { static void Main(string[] args) { try { //设置服务端端口号和地址 TTransport transport new TSocket(localhost, 9081); transport.Open(); //设置传输协议为二进制传输协议 TProtocol protocol new TBinaryProtocol(transport); //创建客户端对象 HelloService.Client client new HelloService.Client(protocol); //调用服务端的方法 Console.WriteLine(client.HelloString(HelloThrift)); Console.ReadKey(); } catch (TTransportException e) { Console.WriteLine(e.Message); } } }} 上面的代码调用了服务端的HelloString方法服务端也会返回传入的传输值客户端将服务端返回的数据打印出来。好了完成了代码以后将先启动Server在启动Client。客户端调用结果 和 服务端请求显示。 说明 1. 关于使用Thrift 构建我们自己的rpc 的方法这里基本讲完了。其他的方法本文就不再演示了调用起来都是一样。 2. 后续会简单讨论一下Thrift 框架的通信原理。 3. 源代码下载HelloThrift.rar