1. 程式人生 > >Thrift的一些總結(Java開發)

Thrift的一些總結(Java開發)

Client的開發順序為:

1、定義Tsocket

2、將Socket包裝到Transport(記得Transport要open() )

3、將Transport包裝進Protocol

4、將Protocol包裝到Client

5、呼叫Client的函式

6、最後關閉Transport

總之,Client就是“一步一步包進去“的過程:

<span style="white-space:pre">	</span>//定義一個Socket
    	TSocket socket=new TSocket("localhost", 8888);
    	//定義一個transport層,這裡使用NIOtransport
    	TTransport transport=new TFramedTransport(socket);
    	//開啟transport層!!!!!!!
    	transport.open();
    	//定義一個protocol層,這裡使用BinaryProtocol
    	TProtocol protocol=new TBinaryProtocol(transport);
    	//(客戶端缺了個Processor層),所以不用定義
    	//定義client
    	Echo.Client client=new Echo.Client(protocol);
    	//呼叫client,使用client的函式
    	System.out.println(client.getEcho("Hello World!"));
    	//關閉client
    	transport.close();

Server的開發順序為:

1、實現service的Iface,生成Handler

2、將Handler包裝到Processor

3、定義一個ServerSocket

4、將ServerSocket包裝到Server.Args物件中

5、使用“搭積木”的方式不斷搭建args(Server的引數),包括Processor,Protocol,Transport等

6、最後將Args包裝進Server

7、啟動Server

總之,Server採用“填引數”的方法搭建起來:

<span style="white-space:pre">	</span>//定義一個Processor層,包裝Handler
    	Echo.Processor processer=new Processor(new EchoHandler());
    	//定義一個ServerSocket
        TNonblockingServerSocket serverSocket=new TNonblockingServerSocket(8888);
        //定義一個伺服器引數物件,包裝Socket
// 		單執行緒nio模式
//		TNonblockingServer.Args serverArgs=new TNonblockingServer.Args(serverSocket);
// 		one selector,n worker模式
//   	THsHaServer.Args serverArgs=new THsHaServer.Args(serverSocket);
// 		n selector ,n worker模式
        TThreadedSelectorServer.Args serverArgs=new TThreadedSelectorServer.Args(serverSocket);
        //引數物件使用連續搭建模式,搭建出processor層,protocol層,和Transport層
        serverArgs.processor(processer)
        			.protocolFactory(new TBinaryProtocol.Factory())
        			.transportFactory(new TFramedTransport.Factory())
        			.workerThreads(8)//Hsha和ThreadSelector特有的引數
        			.selectorThreads(2);//ThreadSelector特有的引數
        //建立Server,傳進引數物件
//   	TServer server=new TNonblockingServer(serverArgs);
//   	THsHaServer server =new THsHaServer(serverArgs);
        TThreadedSelectorServer server=new TThreadedSelectorServer(serverArgs);
        //啟動Server
        System.out.println("server start...");
        server.serve();


注意:使用NIO模式時都要使用TFramedTransport,BIO不多加闡述