TEN 扩展开发完整指南
TEN Framework 提供了丰富的扩展模板,帮助开发者快速创建扩展并完成从开发到测试的完整流程。本指南将通过实际操作演示,详细介绍如何使用 C++,Go 和 Python 三种语言进行扩展开发的全流程。
开发前准备
环境要求
在开始扩展开发之前,请确保您的开发环境已正确配置。通过以下命令验证安装:
正常情况下,您应该看到类似以下的版本信息输出:
重要提示:请确保您使用的
tman
版本 >= 0.10.12,如果版本过低,请前往 GitHub Releases 下载最新版本。
开发流程概览
无论使用哪种编程语言,TEN 扩展开发都遵循以下标准化流程:
- 项目创建 - 使用官方模板生成扩展项目骨架
- 依赖安装 - 配置运行环境并安装必要的依赖包
- 核心开发 - 实现扩展的业务逻辑和功能代码
- 构建测试 - 编译项目(如需要)并执行单元测试
- 调试优化 - 使用专业调试工具定位并解决问题
C++ 扩展开发
C++ 扩展适用于对性能要求极高的应用场景,如实时音视频处理、高频数据计算、底层系统操作等。
创建项目
使用 TEN 官方提供的 C++ 扩展模板快速创建新项目:
项目创建成功后,您会得到以下完整的项目结构:
环境配置验证
进入项目目录并验证构建工具是否正常工作:
期望输出:
如果命令无法执行,请检查 TEN Framework 开发环境是否正确安装。
依赖包安装
安装扩展运行时所需的全部依赖包:
安装成功后,您将看到类似以下的详细安装日志:
项目构建
TEN framework 提供了两种便捷的构建方式供您选择:
方式一:手动分步构建
方式二:使用 tman 快捷命令
构建完成后,检查生成的可执行测试文件:
运行测试
验证扩展功能是否正常工作:
方式一:直接执行测试文件
方式二:使用 tman 统一命令
测试执行成功时的输出示例:
成功标志:当您看到
[ PASSED ] 1 test.
时表示测试全部通过。
核心代码结构详解
扩展主体实现(src/main.cc)
C++ 扩展的核心类需要继承自 ten::extension_t
基类,并实现完整的生命周期管理方法:
测试框架实现(tests/basic.cc)
使用 TEN 专用测试框架编写完整的单元测试:
调试环境配置
VSCode 集成调试
- 安装 VSCode 的 CodeLLDB 扩展插件
- 在源代码中设置断点
- 选择 "standalone test (lldb, launch)" 调试配置
- 按 F5 键启动调试会话
调试配置文件 .vscode/launch.json
的内容:
命令行调试
使用经典的 GDB 调试器进行命令行调试:
Go 扩展开发
Go 扩展在高性能和开发效率之间提供了很好的平衡,特别适合构建网络服务、并发处理、微服务架构等应用场景。
创建项目
使用 Go 扩展模板创建新项目:
项目创建成功后会显示:
完整的项目结构如下:
依赖包安装
安装项目运行所需的依赖包:
运行测试
验证扩展功能的正确性:
方式一:使用启动脚本
方式二:使用 tman 命令
测试成功执行的输出示例:
核心代码结构详解
扩展实现(extension.go)
Go 扩展的核心实现结构:
测试框架(tests/basic_tester.go)
Go 扩展的测试框架实现:
开发环境优化
为了提升开发体验和调试便利性,建议在扩展根目录创建 go.work
工作空间文件:
调试环境配置
VSCode 集成调试
确保已安装 Go 官方扩展,然后使用以下调试配置:
Python 扩展开发
Python 扩展具有最高的开发效率,特别适合快速原型开发、AI/ML 应用集成、复杂业务逻辑实现等场景。
创建项目
使用 Python 异步扩展模板创建项目:
完整的项目结构:
依赖包安装
安装项目所需的 Python 依赖包:
运行测试
验证 Python 扩展的功能:
方式一:使用启动脚本
方式二:使用 tman 命令
测试成功执行的输出示例:
核心代码结构详解
扩展实现(extension.py)
Python 扩展推荐使用现代异步编程模式,以获得更好的性能和并发处理能力:
插件注册入口(addon.py)
扩展插件的注册和创建逻辑:
测试实现(tests/test_basic.py)
完整的异步测试框架实现:
调试环境配置
VSCode 集成调试
确保已安装 Python 扩展和 debugpy 调试器,使用以下配置进行调试:
Node.js 扩展开发
Node.js 扩展提供了现代 JavaScript/TypeScript 开发体验,特别适合 Web 应用集成、快速原型开发、前端技术栈扩展等场景。得益于 Node.js 的异步特性和丰富的生态系统,开发者可以轻松构建高效的实时应用。
创建项目
使用 TEN 官方提供的 Node.js 扩展模板快速创建新项目:
项目创建成功后,您会得到以下完整的项目结构:
环境配置验证
进入项目目录并验证开发环境:
期望输出:
依赖包安装
安装扩展运行时所需的全部依赖包:
安装成功后,您将看到类似以下的详细安装日志:
重要提示:
tman install --standalone
会在项目目录下创建.ten/app/ten_packages/extension/my_example_ext_nodejs/
目录,后续的构建和测试操作都需要在这个目录下进行。
项目构建
Node.js 扩展使用 TypeScript 进行开发,需要先安装独立模式依赖,然后编译为 JavaScript:
方式一:手动构建
方式二:使用 tman 快捷命令
构建完成后,检查生成的编译结果:
运行测试
验证扩展功能是否正常工作:
方式一:使用启动脚本
方式二:使用 tman 统一命令
测试执行成功时的输出示例:
成功标志:当您看到所有测试用例显示
✓
并且最后显示passing
时表示测试全部通过。
核心代码结构详解
扩展主体实现(src/index.ts)
Node.js 扩展的核心类需要继承自 Extension
基类,并实现完整的生命周期管理方法:
插件注册入口
扩展插件的注册和创建逻辑:
测试框架实现(tests/src/index.ts)
使用 TEN 专用测试框架编写完整的单元测试:
测试用例定义(tests/src/index.spec.ts)
使用 Mocha 测试框架编写具体的测试用例:
TypeScript 配置
Node.js 扩展使用现代 TypeScript 配置,支持最新的语言特性:
调试环境配置
VSCode 集成调试
确保已安装 Node.js 官方扩展,然后使用以下调试配置:
命令行调试
使用 Node.js 内置调试器进行命令行调试:
完整开发流程总结
为了帮助开发者快速上手,这里提供一个完整的 Node.js 扩展开发流程总结:
工作目录说明:
- 扩展源代码位于项目根目录的
src/
文件夹- 实际的构建、测试和运行操作都在
.ten/app/ten_packages/extension/my_example_ext_nodejs/
目录下进行- 这种设计确保了扩展的独立性和依赖管理的正确性
开发最佳实践
异步编程
Node.js 扩展充分利用异步编程模式,提供更好的性能:
错误处理
实现完善的错误处理机制:
开发总结
通过遵循本指南提供的完整开发流程,您可以高效地进行 TEN 扩展的开发、测试和调试工作。无论选择 C++,Go,Python 还是 Node.js,TEN Framework 都为您提供了完整的工具链和最佳实践,帮助您充分发挥 TEN Framework 的强大功能,构建出高性能、高可靠性的扩展应用。
每种语言都有其独特的优势和适用场景:
- C++:适用于对性能要求极高的场景,如实时音视频处理、高频计算
- Go:在高性能和开发效率之间提供平衡,适合网络服务、并发处理
- Python:具有最高的开发效率,特别适合AI/ML应用、快速原型开发
- Node.js:提供现代 Web 开发体验,适用于前端技术栈扩展、实时应用
请根据您的具体需求和团队技术栈选择最合适的开发方案。在开发过程中,建议充分利用 TEN Framework 提供的调试工具和测试框架,以确保扩展的质量和稳定性。