关于 Java Chassis 3 的契约优先(API First)开发
本文分享自华为云社区《Java Chassis 3技术解密:契约优先(API First)开发》,作者: liubao68。
契约优先(API First)开发是指应用程序开发过程中,将 API 设计作为第一优先级的任务。契约优先开发随着 Web Services 概念的发展而不断得到重视,特别是微服务架构出现以后,API 设计成为影响功能开放、性能优化等问题的关键因素。常见的契约优先开发框架和模式有如下几种:
Web Services 技术可以由设计人员先编写 WSDL 描述 WEB 服务内容,然后结合工具生成代码。WSDL 可以进行分发,不同的语言都可以结合 WSDL 生成客户端。
gRPC 技术可以由设计人员先编写 IDL 描述 RPC 服务内容,然后结合工具生成代码。gRPC 主要解决服务内部之间的调用。
Spring Boot 允许开发人员利用 swagger 工具,先编写 Open API 接口,然后通过工具生成 RESTFul 的服务端代码。
这些技术都要求设计人员掌握一种语言无关的描述语言(WSDL、IDL、Swagger 等),并且通过工具生成具体语言的代码。它们支持的应用场景也有所差异,Web Service 适合对外的 WEB 服务,gRPC 适合对内的 RPC 服务。Java Chassis 契约优先开发具备下面的几个改进:
允许直接使用 Java 语言定义服务接口,不需要设计者掌握新的描述语言。
同时定义 Web 服务接口和内部 RPC 接口。
和 Spring Boot 一样, Java Chassis 的语言无关性描述语言仍然是 Open API,通过 Open API,可以满足跨语言和服务分发的要求。
契约优先开发的过程
契约优先开发可以涵盖设计、开发、测试、部署、运维等软件开发的全流程,通过契约可以实现不同环节的并行工作,从而提高开发效率。 一个简单的契约开发过程如下:
下面通过代码简单展示通过 Java 语义定义契约,并实现提供者和消费者的过程。
定义服务契约
定义提供者
定义消费者
使用 RPC 方式访问提供者。
服务分发和 Web 服务访问
提供者的服务定义会生成如下 Open API 信息
这个信息可以用于 WEB 服务访问,比如上面的信息可以使用
的 HTTP 请求来访问。 对于其他框架或者语言,也可以使用 Open API 生成对应的代码来访问。
服务治理
服务治理被设计为独立于开发过程,结合 Open API 和服务治理规则描述语言,能够对 API 进行服务治理配置。
上述规则对 API 接口进行限流控制。
契约优先开发的其他方面
测试方面,可以通过契约生成自动化测试代码,以覆盖 API 的测试。 部署实施方面,可以将 Open API 信息导入网关,实现 API 能力开放、认证鉴权、计费等。 此外,契约还可以用于文档生成、应用监控统计等各个方面。
总结
Java Chassis 基于 JAVA 语言的接口定义,可以同时满足 Native 语言和平台无关描述语言两种情况的 SDK 分发,并且不需要使用工具生成额外的运行代码,给外部服务开发和内部服务开发提供了统一一致的开发体验。 契约优先开发是面向服务化/微服务化非常高效的过程方法,Java Chassis 给支持契约优先开发提供了很好的工具支持。
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/866c0dbc7b74feb4de9adfbb5】。文章转载请联系作者。
评论