BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 蔡芳芳 关注 5 他的粉丝 发布于 2017年11月30日. 估计阅读时间: 5 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

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

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的简单使用教程,供开发人员参考。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT