概述 #
本文档用于指引如何从代码开发开始接入本平台。
开发 #
基础开发(WASM程序开发) #
基础开发是指wasm程序除纯逻辑外,只利用到目前已经提供的能力,例如:weelink、存储、Redis、网络(包括调用中台子服务)能力。而不会获取自定义的能力。
基础开发可以基于已有的sdk和模板仓库进行开发。支持rust、go、Python语言。构建模板仓库可以通过wash new命令在本地新建一个仓库,这种方式可以通过命令行交互自定义一些信息。也可以fork模板仓库。
开发wasm程序与开发正常程序一样,对于go语言来说,只是一些涉及到协程、反射等的功能无法使用。对于已经提供的能力都有良好的sdk封装,引入sdk后即可以调用本地函数的方式使用这些功能。
进阶开发 #
已有的系统能力不能满足用户使用需求,用户需要开发自定义的ABI交互。这种情况常见于中台以外的场景。目前中台的使用来说网络、kv、子服务调用都有。所以本部分介绍以引导性介绍和官方使用手册为主,不展开详细步骤。
创建interface #
需要通过命令行在本地创建interface,开发完成后添加到远程仓库。具体创建和开发流程参考
创建Provider #
需要通过命令行在本地创建Provider仓库,然后引用创建interface生成的sdk,实现对应的功能函数。通过命令wash new provider nameof-provider来创建,详细流程参考.
创建WASM程序 #
这里就与基础开发的流程一样了,只是在引入sdk的时候引入创建interface生成的sdk就行了。
构建 #
构建包括编译和推仓两个环节。wasm程序和Provider程序的编译推仓流程上来说都是一样的,以下以wasm程序为例进行介绍。
编译 #
先介绍本地开发如何编译,编译实际上就是将代码编译为wasm二进制文件的过程,对于不同的语言会有不同的工具链。在模板仓库中会提供编译的命令,所以通常来说就是make build即可。但是编译需要安装对应语言的编译wasm工具,对于go语言来说,安装tinygo的环境既可,镜像:docker4zc/washwithgo:0.26.0。
所以对于中台来说,由基础架构提供具有tinygo环境的编译镜像,添加到中台镜像库中。在这个镜像中执行编译,跟正常的go程序编译的流程一样,只不过使用的编译镜像不同。
推仓 #
推仓需要通过wash命令将编译后的文件推送到公有或者私有镜像仓。由于其符合OCI标准,所以任何支持docker的镜像仓库包括私有harbor都是可以的。
之前的是在docker容器中通过docker命令推仓,现在是在docker容器通过wash命令进行推仓,所以需要提供一个有wash命令的镜像即可:docker4zc/washwithgo:0.26.0。但是需要将harbor的访问信息在启动推仓镜像时以环境变量或者命令行参数形式给定。
部署 #
wasm平台会提供对外的《API接口》 ,可以通过调用这些接口来进行部署。