thrift系列 - 快速入门

1.简介
            Thrift是当前流行的RPC框架之一,它有强大的代码生成引擎,可以跨语言,轻松解决程序间的通信问题。

本文旨在帮助大家快速入门,若想深入原理,请参见thrift官网:http://thrift.apache.org/。(大家都很忙,少说废话)


2.下载windows版的IDL compiler

     访问地址:http://www.apache.org/dyn/closer.cgi?path=/thrift/0.9.3/thrift-0.9.3.exe,在打开的页面中,任选一个资源下载。
      下载完成后,假设我把thrift-0.9.3.exe文件移到"F:\test\thrift\bin"(你想移到哪儿你随意) 这个文件夹下。


3.定义接口文件

      新建一个名为test.thrift的文件。以下是该文件里的内容:
      

namespace java test.thrift_test

service TestService {
  string getStruct(1: i32 num,2: string name)
}
           这就是一个很简单的接口文件。thrift的引擎(此处你可以理解为thrift-0.9.3.exe),就要利用test.thrift生成你指定的语言的代码。这个接口有两个参数,一个是32位的整数,一个是一个字符串,返回值的类型也是一个字符串。关于接口文件定义的方式,请参见下一篇文章《thrift类型定义》。


4.利用接口文件生成代码

     打开windows的命令行(这个你不要问我)。切换到"F:\test\thrift\bin"(第2步的时候说过)
     使用命令:thrift-0.9.3.exe -r --gen java test.thrift
     打开"F:\test\thrift\bin"这个目录,你会发现有一个名为"gen-java"的文件夹,该文件夹下就是生成的java代码。


5.搭建maven环境

     利用你的Java IDE构建一个maven工程。这里是pom.xml中需要添加的内容:

<dependency>
	<groupId>org.apache.thrift</groupId>
	<artifactId>libthrift</artifactId>
	<version>0.9.3</version>
</dependency>
        这里面有thrift运行时所需要的所有依赖jar。

    注意,请把gen-java文件夹下的代码粘贴到工程中去!


6.java版demo

     首先把首先实现TestService接口:

package test.thrift_test;

import org.apache.thrift.TException;

import test.thrift_test.TestService.Iface;

//我们定义的test.thrift的接口的具体实现
class TestServiceHandler implements Iface{

	public String getStruct(int num, String name) throws TException {
		return name + num;
	}
	
}


         Thrift是CS的通信方式,即有一个server端,和一个client端。

     以下是Server端的示例代码:

package test.thrift_test;

import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TServer.Args;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TServerTransport;
import org.apache.thrift.transport.TTransportException;

public class Server 
{
	public static void main( String[] args ){
    	try {
    		TestService.Processor processor = new TestService.Processor(new TestServiceHandler());
    		
		TServerTransport serverTransport = new TServerSocket(9090);
		TServer server = new TSimpleServer(new Args(serverTransport).processor(processor));
		server.serve();
		    
	} catch (TTransportException e) {
		e.printStackTrace();
	}
    }
}

      

        以下是Client端的示例代码:

package test.thrift_test;

import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;
import org.apache.thrift.transport.TTransportException;

public class Client {
	public static void main(String[] args) {
		TTransport transport = new TSocket("localhost", 9090);
		try {
			transport.open();
			TProtocol protocol = new TBinaryProtocol(transport);
			TestService.Client client = new TestService.Client(protocol);

			String result = client.getStruct(123, "test");
			System.out.println(result);
			transport.close();
		} catch (TTransportException e) {
			e.printStackTrace();
		} catch (TException e) {
			e.printStackTrace();
		}
	}
}

              启动的时候,先运行 Server.java,再运行Client.java。正常情况下,控制台输出结果为:test123


        本文内容参考如下:

        【1】http://thrift.apache.org/


        注意:
        如您发现本文档中有明显错误的地方,
        或者您发现本文档中引用了他人的资料而未进行说明时,请联系我进行更正。
        转载或使用本文档时,请作醒目说明。
        必要时请联系作者,否则将追究相应的法律责任。

        note:
        If you find this document with any error ,
        Or if you find any illegal citations , please contact me correct.
        Reprint or use of this document,Please explain for striking. 
        Please contact the author if necessary, or they will pursue the corresponding legal responsibility.








你可能感兴趣的:(java,rpc,thrift,示例,快速入门)