Thrift的一些總結(Java開發)
阿新 • • 發佈:2019-02-08
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不多加闡述