以下为授权转载的一盎司科技公众号文章
Tars是腾讯开源的基于名字服务的高性能RPC开发框架,也是一套开发模式,接下来我们将简单介绍C++开发服务的一些基本步骤,详细的说明可参考官方文档(https://doc.tarsyun.com)。
以下以一个示例来作为参考,来说明具体的开发过程:
-
应用名APP: TodoApp
-
服务名Server: BizServer
-
服务提供者Servant: TodoTarsObjObj
示例代码地址:
GitHub地址:https://github.com/iounce/tars-demo
Gitee地址:https://gitee.com/iounce_admin/tars-demo
环境
-
Windows操作系统:Windows10(21H2,19044.1766)
-
Linux操作系统:Ubuntu 22.04 LTS
-
Docker Desktop:v4.10.1
-
Tars framework: 3.0.14
定义接口文件
定义接口文件TodoTarsObj.tars,包括api,出入参结构体等:
接口文件名称建议不带Obj,略显重复。
编译接口文件
使用命令/usr/local/tars/cpp/tools/tars2cpp TodoTarsObj.tars编译协议文件,生成对应头文件:
生成服务端程序框架
使用脚本生成服务端基本结构,执行命令
/usr/local/tars/cpp/script/cmake_tars_server.sh TodoApp BizServer TodoTarsObj,其中Servant不加obj,即TodoTarsObjObj只写TodoTarsObj:
拷贝协议文件TodoTarsObj.tars和编译后的头文件TodoTarsObj.h到BizServer/src目录,替换默认生成的文件。
Servant名称建议不带Obj,略显重复。
实现接口类
首先在协议头文件TodoTarsObj.h里找到interface名称对应类的纯虚函数:
拷贝这两个函数的声明到实现类TodoTarsObjImp头文件中,同时修改继承类为TodoApp::api,然后添加实现:
编写CMakeLists.txt文件
在BizServer目录下有自动生成的CMake文件,修改下工程名,再根据需要添加库文件目录:
编译服务端
分别执行以下命令,生成BizServer.tgz文件:
-
cd BizServer/build
-
cmake ..
-
make
-
make tar
整个过程主要是定义协议文件TodoTarsObj.tars,然后实现Imp的Servant 的接口实现类TodoTarsObjImp,其他都可以通过脚本自动生成,非常方便快捷。
下一篇,我们将介绍如何发布编写的服务到Tars框架平台,同时编写客户端验证协议中定义的接口。
说明:
由于是在docker中安装的Tars框架,所以开发环境需要进入Tars的framework框架所在的容器中开发,主机与容器之间的文件拷贝,需要使用以下命令:
-
本机到容器:docker cp [本地目录] [容器ID]:[容器目录]
docker cp -a D:\iounce\src\tars\TodoApp\BizServer\src 84d040a770c1:/root/BizServer
-
容器到本机:docker cp [容器ID]:[容器目录] [本地目录]
docker cp -a 84d040a770c1:/root/BizServer/src D:\iounce\src\tars\TodoApp\BizServer