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不多加阐述
相关推荐
本文将基于Thrift的Java实现,总结学习过程中的一些关键知识点,旨在帮助理解Thrift的工作原理以及如何在Java环境中应用。 一、Thrift简介 Thrift是一种远程过程调用(RPC)框架,它通过定义一种中间描述文件(....
总结起来,Thrift是实现跨语言服务调用的强大工具,通过其IDL和生成的代码,开发者可以轻松地在Java和Python等不同语言之间建立高效、可靠的通信。这个例子提供了学习和实践Thrift的一个基础起点,对于理解跨语言...
总结,使用 Thrift 在 Java 环境下构建 `.jar` 文件涉及了多个步骤,包括安装 Thrift、编写 IDL、生成 Java 代码、构建项目以及打包。这个过程有助于实现跨语言服务通信,提高系统的可扩展性和效率。通过遵循上述...
总结来说,Thrift在Java中的服务器和客户端通信涉及以下几个关键步骤: 1. 定义服务接口(IDL文件)。 2. 使用Thrift编译器生成Java代码。 3. 实现服务处理逻辑(服务处理器)。 4. 创建Thrift服务器并启动服务。 5....
总结来说,Thrift 提供了一种高效、简洁的方式来构建分布式系统,通过定义服务接口和数据类型,自动生成跨语言的客户端和服务器端代码。在 Java 平台上,你可以利用这些生成的类创建服务器,处理客户端请求,并通过...
总结来说,Android平台上的Thrift服务端开发涉及了Thrift IDL的编写、编译器的使用、服务接口的实现、服务器的配置以及客户端的调用。这需要对Thrift框架、Android服务、网络编程以及安全性有深入的理解。通过合理的...
Thrift是一种高效的、跨语言的服务框架,最初由Facebook开发,现在是Apache的顶级项目。它提供了强大的代码生成工具,可以从接口定义文件(IDL)生成多种编程语言的客户端和服务端代码,使得不同语言之间可以轻松地...
《Thrift下Java服务器与客户端开发指南》 Thrift 是一个高效的跨语言服务开发框架,由Facebook开源,主要用于构建可扩展且跨平台的服务。它通过定义一种中间表示(IDL,Interface Description Language)来描述数据...
在本实例中,我们将关注一个基于Thrift的RPC调用实现,Thrift是由Facebook开发的一种高效的跨语言服务开发框架。 Thrift的核心思想是定义一种中间描述文件(.thrift),该文件包含了服务接口、数据结构以及服务间的...
在本例中,`thrift总结.txt`可能包含编译命令及生成的代码目录结构,如`gen-java`目录,其中包含了Java客户端和服务端的接口及数据结构实现。 3. **服务端实现** 在Java中,我们可以实现`DemoService.Iface`接口,...
总结,这个“thrift包及其源码”为学习和使用Thrift提供了一个良好的起点,通过阅读源码,我们可以深入理解其设计原理,提高自己的分布式服务开发能力。对于开发者来说,这是一份宝贵的资源,有助于提升对跨语言通信...
总结,Laravel开发与Thrift-Laravel的结合,让开发者能够充分利用Laravel的便利性和Thrift的高性能特性,构建出可扩展、易于维护的分布式系统。通过理解和掌握Thrift-Laravel,开发者可以提升服务之间的通信效率,...
总结起来,这个"Java中使用Thrift实现RPC示例代码"涵盖了Thrift服务的定义、Java代码的生成、服务端与客户端的实现,以及可能的Netty集成。通过学习这个示例,开发者可以深入理解Thrift在Java环境中的工作方式,以及...
Thrift是一种跨语言的服务开发框架,由Facebook于2007年开源,旨在解决大规模分布式系统中的通信问题。它的核心是定义了一种IDL(接口定义语言),允许开发者以一种声明式的方式定义服务,并能自动生成多种编程语言...
在软件开发中,Thrift是一种高效的跨语言服务开发框架,由Facebook开发并开源。它允许定义数据类型和服务接口,然后自动生成各种编程语言的代码,使得不同语言的系统之间可以进行无缝通信。Maven作为Java项目管理...
总结,搭建Thrift环境涉及下载源码、编译安装、配置环境变量以及编写和编译IDL文件。有了这个环境,你就可以开始利用Thrift的强大功能开发高效的跨语言服务。提供的“thrift环境搭建”压缩包应该包含了必要的可执行...
总结起来,"thrift+依赖包整合"是一个包含了Thrift核心库、源码及必需的Java依赖的集合,适用于Windows 7系统。它使得开发者能够快速地搭建和运行Thrift服务,无需担心依赖缺失的问题,从而更专注于业务逻辑的实现。...
总结一下,Thrift 0.9.0提供了跨语言的服务接口定义和实现,Ant用于定制化的项目构建,而Maven则用于更高级的项目管理和依赖解析。这三者结合使用,可以有效地在不同编程语言之间搭建和管理分布式系统。在实际操作中...
标题“thrift jar包及相关学习步骤”意味着我们将探讨Thrift在Java环境中的应用,以及如何使用Thrift的jar包进行服务开发。Thrift的jar包通常包含编译器、运行时库和相关的工具,这些都对理解和使用Thrift至关重要。...