xref: /napi_generator/src/cli/h2sa/README_ZH.md (revision 8c339a94)
18c339a94Sopenharmony_ci# SERVICE框架生成工具
28c339a94Sopenharmony_ci
38c339a94Sopenharmony_ci## 简介
48c339a94Sopenharmony_ci
58c339a94Sopenharmony_ci当开发者为OpenHarmony系统框架开发某些功能时,有时需要将这个功能包装成一个独立的服务进程运行在系统中,为了其它应用进程能够调用此服务,开发人员需要基于系统IPC通信框架编写一套远程接口调用实现。实现Service远程调用接口需要开发人员熟悉IPC通信框架,了解proxy/stub的继承与实现方式,掌握C++类型转为MessageParcel数据包的各种API方法,有一定的学习成本。而Service代码生成工具能够帮助使用者生成框架代码,提升开发效率。用户只需提供一个定义远程方法的.h头文件,工具会自动生成整个Service框架的代码,包含Ability注册、proxy/stub类实现、MessageParcel数据包构造、Service子系统编译及开机自启动相关配置文件。目前工具支持VS Code插件一种入口。
68c339a94Sopenharmony_ci
78c339a94Sopenharmony_ci更多工具的架构和实现原理详情,可以左键单击以下链接了解:
88c339a94Sopenharmony_ci
98c339a94Sopenharmony_ci[工具使用说明](https://gitee.com/openharmony/napi_generator/tree/master/src/cli/h2sa/docs/usage/INSTRUCTION_ZH.md)
108c339a94Sopenharmony_ci
118c339a94Sopenharmony_ci	├── napi_generator                               # NAPI框架代码生成工具
128c339a94Sopenharmony_ci	│   ├── ...                                      # 其它文档
138c339a94Sopenharmony_ci	│   ├── src
148c339a94Sopenharmony_ci	│   │   ├── ...                                 
158c339a94Sopenharmony_ci	│   │   ├── cli                                  # 脚手架源码
168c339a94Sopenharmony_ci	│   │   |   ├── h2sa/src                         # 工具源码
178c339a94Sopenharmony_ci	│   │   |   |   ├── src                    
188c339a94Sopenharmony_ci	│   │   |   |   |   ├── tools                    # 公共模块代码,包括消息体校验、文件读写、正则表达式转换等
198c339a94Sopenharmony_ci	│   │   |   |   |   ├── gen                      # 生成器
208c339a94Sopenharmony_ci	│   │   |   |   ├── package.json                 # 配置文件
218c339a94Sopenharmony_ci	│   │   |   ├── ...                              # 其它工具
228c339a94Sopenharmony_ci
238c339a94Sopenharmony_ci## 约束
248c339a94Sopenharmony_ci系统:建议Ubuntu 20.04或者Windows 10
258c339a94Sopenharmony_ci
268c339a94Sopenharmony_ci依赖版本:VS Code 1.62.0
278c339a94Sopenharmony_ci
288c339a94Sopenharmony_ci## 使用方法
298c339a94Sopenharmony_ci
308c339a94Sopenharmony_ci### 使用对象
318c339a94Sopenharmony_ci
328c339a94Sopenharmony_ci系统开发者 
338c339a94Sopenharmony_ci### 使用场景
348c339a94Sopenharmony_ci
358c339a94Sopenharmony_ci1) 开发者为OpenHarmony系统框架开发某些功能,并将该功能包装成一个独立的服务进程运行在系统中。
368c339a94Sopenharmony_ci
378c339a94Sopenharmony_ci### 工具使用
388c339a94Sopenharmony_ci
398c339a94Sopenharmony_ci#### VS Code插件使用方法
408c339a94Sopenharmony_ci
418c339a94Sopenharmony_ci具体的插件使用步骤,可以左键单击以下链接了解:
428c339a94Sopenharmony_ci
438c339a94Sopenharmony_ci[工具使用说明](https://gitee.com/openharmony/napi_generator/tree/master/src/vscode_plugin/h2sa/service_vs_plugin/docs/usage/INSTRUCTION_ZH.md)
448c339a94Sopenharmony_ci
458c339a94Sopenharmony_ci### 工具输出
468c339a94Sopenharmony_ci
478c339a94Sopenharmony_ci根据使用者指定的.h头文件,工具会输出SERVICE框架代码。为了方便使用者快速上手工具,可供测试的.h文件如下所示:
488c339a94Sopenharmony_ci
498c339a94Sopenharmony_ci```
508c339a94Sopenharmony_ci#ifndef TEST_H
518c339a94Sopenharmony_ci#define TEST_H
528c339a94Sopenharmony_ci
538c339a94Sopenharmony_cinamespace OHOS {
548c339a94Sopenharmony_ci    namespace Example {
558c339a94Sopenharmony_ci    /**
568c339a94Sopenharmony_ci     * @brief service服务,提供IPC调用接口
578c339a94Sopenharmony_ci     * @ServiceClass
588c339a94Sopenharmony_ci     */
598c339a94Sopenharmony_ci        class test {
608c339a94Sopenharmony_ci        public:
618c339a94Sopenharmony_ci            int testFunc(int v1, int v2, bool v3);
628c339a94Sopenharmony_ci        };
638c339a94Sopenharmony_ci    }  // namespace Example
648c339a94Sopenharmony_ci}  // namespace OHOS
658c339a94Sopenharmony_ci#endif  // TEST_H
668c339a94Sopenharmony_ci```
678c339a94Sopenharmony_ci
688c339a94Sopenharmony_ci注意:.h文件中待生成的主class必须加注释:@brief service服务,提供IPC调用接口 ,如下所示:
698c339a94Sopenharmony_ci
708c339a94Sopenharmony_ci```
718c339a94Sopenharmony_ci/**
728c339a94Sopenharmony_ci * @brief service服务,提供IPC调用接口
738c339a94Sopenharmony_ci * @ServiceClass
748c339a94Sopenharmony_ci */
758c339a94Sopenharmony_ci```
768c339a94Sopenharmony_ci
778c339a94Sopenharmony_ci在window环境下的,根据输入.h文件生成的输出文件,如下所示:
788c339a94Sopenharmony_ci
798c339a94Sopenharmony_ci![](./docs/figures/service_framework.png)
808c339a94Sopenharmony_ci
818c339a94Sopenharmony_ci## 工具开发说明
828c339a94Sopenharmony_ci
838c339a94Sopenharmony_ci### 对象
848c339a94Sopenharmony_ci
858c339a94Sopenharmony_ci工具的开发者
868c339a94Sopenharmony_ci
878c339a94Sopenharmony_ci### 开发场景
888c339a94Sopenharmony_ci
898c339a94Sopenharmony_ci若当前工具的功能已经不能满足开发者的全部需求,则开发者可以基于已有的源码对工具进行二次开发,来增强工具的能力,编译打包生成自定义的可执行文件和插件。
908c339a94Sopenharmony_ci
918c339a94Sopenharmony_ci### 开发步骤
928c339a94Sopenharmony_ci
938c339a94Sopenharmony_ci开发者可以根据如下的步骤来完成对工具的开发:
948c339a94Sopenharmony_ci
958c339a94Sopenharmony_ci [工具开发说明](https://gitee.com/openharmony/napi_generator/tree/master/src/cli/h2sa/docs/guide/DEVELOP_ZH.md)
968c339a94Sopenharmony_ci
978c339a94Sopenharmony_ci## 版本说明
988c339a94Sopenharmony_ci
998c339a94Sopenharmony_ci[已支持特性](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/h2sa/docs/release-notes/Service-1.0.md)
1008c339a94Sopenharmony_ci
1018c339a94Sopenharmony_ci[待开发特性](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/h2sa/docs/requirement/ROADMAP_ZH.md)
1028c339a94Sopenharmony_ci
1038c339a94Sopenharmony_ci## FAQ
1048c339a94Sopenharmony_ci
1058c339a94Sopenharmony_ci  [FAQ](https://gitee.com/openharmony/napi_generator/tree/master/src/cli/h2sa/docs/guide/FAQ.md)
1068c339a94Sopenharmony_ci
1078c339a94Sopenharmony_ci## 参与贡献
1088c339a94Sopenharmony_ci
1098c339a94Sopenharmony_ci暂无
1108c339a94Sopenharmony_ci
1118c339a94Sopenharmony_ci## 相关仓
1128c339a94Sopenharmony_ci
1138c339a94Sopenharmony_ci暂无
114