AWS AppSync 发布:可使用 GraphQL 来构建响应式 API

  • 蔡芳芳

2017 年 11 月 29 日

话题:AWS语言 & 开发架构文化 & 方法

在当今时代,如果没有了移动设备和移动应用程序几乎是寸步难行。随着我们对手机的依赖度不断增长,手机应用程序市场已经爆炸,数百万个应用程序正在争夺我们的关注。对于移动开发人员来说,这意味着必须确保开发的应用程序能够提供符合用户期望的高质量实时体验。因此,移动应用程序是否能够提供诸如多用户数据同步、离线网络支持和数据发现等功能,已经变得至关重要。而上述功能又涉及到移动数据同步和数据存储,因此由云驱动的移动应用程序开始进入开发人员的视野。

11 月 28 日,亚马逊宣布推出一项新服务 AWS AppSync,帮助开发人员开发由云端数据密集型服务驱动的创新移动应用程序。AWS AppSync 是一项全托管、无服务式的GraphQL服务,支持实时数据查询、同步、通信和离线编程功能。

GraphQL 是一种响应式数据查询语言和支持查询数据源的服务器端运行时,支持实时数据检索和动态查询执行。开发人员可以使用 GraphQL 来构建响应式 API,用于客户端应用程序开发。GraphQL 工作在应用层,并提供用于定义模式(Schema)的类型系统。这些模式可以作为规范,用于定义如何对数据执行操作,以及如何在检索数据时对数据进行结构化。此外,GraphQL 还有一个声明式编程模型,已经得到许多客户端库和框架(包括 React、React Native、iOS 和 Android)的支持。

现在,通过 AWS AppSync 丰富的托管服务,开发人员也能享受 GraphQL 开放标准查询语言的强大功能。借助 AppSync,开发人员可以轻松简化跨多个数据源的数据检索和操作,从而快速建立原型,并创建可靠的、协作式的多用户应用程序。当设备接入时,AppSync 会保证数据实时同步和持续更新,同时也允许开发人员通过在本地缓存数据并在连接可用时同步本地数据来构建脱机工作的解决方案。

AWS AppSync 的重要概念

  • AWS AppSync 客户端:定义操作、封装请求的授权信息以及管理脱机工作逻辑的服务终端。
  • 数据来源:数据存储系统或设备数据
  • 身份认证(Identity):一组包含权限和身份信息的凭证,在发给 GraphQL 代理的请求中提供。
  • GraphQL 代理:用于处理和映射请求,处理冲突解决方案以及管理细粒度访问控制的 GraphQL 引擎组件。
  • 操作(Operation):AppSync 支持的三种 GraphQL 操作如下
    • Query:只获取数据
    • Mutation:在修改数据之后返回数据
    • Subscription:为响应事件而接收数据的长连接
  • 执行(Action):给接入 GraphQL 订阅(subscription)的订阅者发送通知。
  • 解析器(Resolver):使用请求和响应映射模板来转换和执行数据源有效载荷的功能组件。

AWS AppSync 的工作原理

首先创建一个模式(Schema)来定义所需的 GraphQL API 的类型和功能,并绑定到一个 Resolver 函数。该模式可以通过镜像现有数据源来创建,AWS AppSync 也可以根据模式定义自动创建表。开发人员无需知道后端数据源,也可以使用 GraphQL 功能发现数据。

在完成模式定义之后,可以通过操作请求配置 AWS AppSync 客户端,如 Query 操作。客户端将操作请求与身份信息和凭证一起提交给 GraphQL 代理。GraphQL 代理再将请求传递给 Resolver,Resolver 根据预先配置的 AWS 数据服务(如 Amazon DynamoDB 表、AWS Lambda 函数或使用 Amazon Elasticsearch 的搜索功能)映射和执行请求的有效载荷。Resolver 在单个网络调用中执行对这些服务的一个或全部调用,并将响应返回给客户端,从而最大限度地减少 CPU 周期和带宽需求。

此外,客户端应用程序可以根据需要更改代码中的数据要求,AppSync GraphQL API 将相应地动态映射数据请求,从而实现原型设计并加快开发速度。

目前亚马逊已经推出 AWS AppSync 的抢先预览版,支持 iOS、Android 和 JavaScript 应用程序的开发。AWS 官方博客上提供了一份 AppSync 的简单使用教程,供开发人员参考。

AWS语言 & 开发架构文化 & 方法