背景
经过一段时间的摸索和实践,现在已经可以稳定输出SDK供团队使用了,由于设计到不同的语言,不同组件之间的协作,对于依赖的问题相对比较明显。
实践
其中一个困难是实际的代码生成由Dara来进行控制,Dara本身存在一个版本的概念,而Dara生成的过程中又控制了他们生成代码的版本。 例如Dara是0.0.5的,可能生成的Java是0.0.4,而TypeScript是0.0.3版本的,这里就存在了一个协同作战的过程。好的实践是统一版本,避免各个版本之间的随机性,从而更稳定。
另外一个困难则是各个语言之间的问题。由于个体之间的局限性,很难对各个语言的特性都熟练掌握,这样对于基础模块的生成和测试则成了一个问题。
在实际的SDK中,总共分为4个模块。
- tea-util 基础模块,主要提供一些基础方法,例如响应码是200,还是40x还是50x,字符串相等,数字相等等等功能,它本身仅依赖tea,不再依赖其他的数据了。 它的定位就是基础模块。每一个方法解决一个基础问题
- tea-open-util open的基础模块,主要提供一些加密,表单转字符串,字符串转表单的工作,依赖
tea-util - open-tea-util 核心的http请求模块,参数校验,参数填充,sign生成,http请求等等都在这里完成,依赖tea-open-util和tea-util
- open-platform Client数据,直接发http请求,比较简单
当前都是采取的手工操作,下一阶段应该发展成脚本自动化,这样简化操作方式,降低出错的概率。
语言的组织情况
当前实际提供2种语言的SDK,分别是 Java 和 TypeScript.
- Java可以将依赖deploy到私服,开发和部署都非常的方便
- TypeScript npm的publish非常的方便
golang版本还在开发中。
