首页
/ Thrifty: 轻量级Android上的Apache Thrift实现

Thrifty: 轻量级Android上的Apache Thrift实现

2024-09-23 22:43:42作者:裘旻烁

1. 项目介绍

Thrifty 是微软为Android平台定制的一个Apache Thrift的轻量化版本,它显著降低了方法计数(相较于标准的Apache Thrift编译器所生成的Java代码),从而特别适合资源受限的Android环境。这个库通过去除冗长的getter/setter,并采用公共final字段来代替,同时简化核心抽象并仅生成实际所需的协议代码,不包括默认的服务器实现,以此节省方法数量。最初,该库在Outlook for Android项目中孕育,成功地将生成的Thrift类消耗的方法数从20,000减少到了5,000。

2. 项目快速启动

添加依赖

首先,在你的build.gradle文件中添加仓库和依赖:

repositories {
    mavenCentral()
    // 若需使用快照版本,则启用以下行
    // maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
}

dependencies {
    implementation 'com.microsoft.thrifty:thrifty-runtime-jvm:3.1.0'
}

生成代码

接下来,你需要从Thrift定义文件生成Java代码。你可以通过命令行或者Gradle插件来完成这一步。

命令行方式:

java -jar thrifty-compiler.jar --out=path/to/output your_file.thrift

Gradle插件方式:

确保你的构建脚本包含了Thrifty插件:

buildscript {
    dependencies {
        classpath 'com.microsoft.thrifty:thrifty-gradle-plugin:3.1.0'
    }
}
apply plugin: 'com.microsoft.thrifty'

thrifty {
    // 根据需要配置选项,详情查看插件文档
}

3. 应用案例和最佳实践

当你在Android应用中集成Thrifty后,利用其生成的不可变对象可以极大地增强数据的安全性和一致性。最佳实践中,你应该:

  • 利用Thrift定义服务和数据结构,以保持跨语言服务的一致性。
  • 避免手动的序列化/反序列化,直接使用生成的客户端和服务接口进行通信。
  • 确保所有生产环境中需要的数据都是提前设置好的,因为Thrift结构一旦创建就不可修改且要求所有必要字段初始化。

示例代码,发起一个搜索请求:

// 创建传输层和协议层
val transport = SocketTransport.Builder("example.com", 9090).build().apply { connect() }
val protocol = BinaryProtocol(transport)

// 实例化客户端并调用服务方法
val client = YourService.Client(protocol)
val response = client.search(YourQuery()) // 假设YouQuery是你的查询对象

4. 典型生态项目

尽管Thrifty本身专注于简化Android端的Thrift使用,它的存在促进了更多围绕微服务架构和跨平台通讯的项目发展。虽然特定的“典型生态项目”直指与Thrifty直接相关联的不多,Thrifty的实际应用广泛存在于那些需要高效、低方法计数的Android客户端与不同语言服务端通讯场景中。开发者社区可能会围绕它开发工具或框架来进一步简化Thrift的使用流程,如自动生成的服务客户端封装、或是在Kotlin Multiplatform项目中的整合策略,但这些通常不是由Microsoft直接维护的官方生态部分。


此文档提供了使用Thrifty的基础知识和启动步骤,帮助你迅速上手并在Android项目中高效利用这一工具。深入了解更多高级特性和生态拓展时,建议参考Thrifty的官方GitHub页面及其文档。

热门项目推荐

项目优选

收起
Python-100-DaysPython-100-Days
Python - 100天从新手到大师
Python
610
115
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
286
79
mdmd
✍ WeChat Markdown Editor | 一款高度简洁的微信 Markdown 编辑器:支持 Markdown 语法、色盘取色、多图上传、一键下载文档、自定义 CSS 样式、一键重置等特性
Vue
111
25
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
60
48
RuoYi-Cloud-Vue3RuoYi-Cloud-Vue3
🎉 基于Spring Boot、Spring Cloud & Alibaba、Vue3 & Vite、Element Plus的分布式前后端分离微服务架构权限管理系统
Vue
45
29
go-stockgo-stock
🦄🦄🦄AI赋能股票分析:自选股行情获取,成本盈亏展示,涨跌报警推送,市场整体/个股情绪分析,K线技术指标分析等。数据全部保留在本地。支持DeepSeek,OpenAI, Ollama,LMStudio,AnythingLLM,硅基流动,火山方舟,阿里云百炼等平台或模型。
Go
1
0
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
205
57
MateChatMateChat
前端智能化场景解决方案UI库,轻松构建你的AI应用,我们将持续完善更新,欢迎你的使用与建议。 官网地址:https://matechat.gitcode.com
376
36
RuoYi-VueRuoYi-Vue
🎉 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本
Java
182
44
frogfrog
这是一个人工生命试验项目,最终目标是创建“有自我意识表现”的模拟生命体。
Java
8
0