datastore和运行时环境的关系就是和一个服务的关系:应用使用API访问一个独立的系统(separate system),这个系统管理应用的所有的独立于应用实例的扩展需求(scaling needs)。Google App Engine包含一些对Web应用有用的其他的可自调节的服务。<1.Google App Engine includes several other self-scaling services useful for web applications.>

内存缓存(memcache)服务是一个短期的键值对存储服务。在datastore中它的主要优点就是快,比datastore的简单存取快得多。内存缓存将值存在内存而不是磁盘中来进行快速访问。它就像datastore一样是分布式的,所以每个请求看到的是相同的键值对。然而,它不像datastore那么持久:如果一个服务器宕机了,比如电源故障,内存会被擦掉。对于原子性和事务,它比datastore有更多限制。<2.It also has a more limited sense of atomicity and transactionality than the datastore>。正如名字表明的,内存缓存服务用于频繁执行的查询或计算的结果是最好的。应用检查缓存的值,如果值不在缓存中,它将执行查询或计算,然后将它保存在内存中以便将来使用。

App Engine为大值(large values)提供了一个存储系统叫做Blobstore。你的应用可以使用Blobstore来存储管理大文件,比如图片,视频或者文件下载。Blobstore也接收用户、离线处理上传的大文件。<3.The Blobstore can also accept large files uploaded by users and offline processes.> 这个服务和datastore是不同的。datastore受用户,应用服务器,服务之间的请求响应大小的限制。<4.This service is distinct from the datastore to work around infrastructure limits on request and response size between users,application servers,and services> 应用程序代码在限制范围内可以从Blobstore中以块的方式读取值。代码也可以查询关于Blobstore的元数据。

App Engine 应用可以使用URL获取服务(URL Fetch service)来访问其他的网络资源。这个服务向Internet上的其他服务器发出HTTP请求,比如获取页面或和网络服务交互。由于远程服务器可能响应慢,URL Fetch API支持一个请求处理器做其他事情的时候,在后台获取URLs。但是这个获取URLs的动作必须在这个请求处理器的生命周期里面开始和结束。应用也可以设置一个截止期限。在截止期限之后如果远程宿主不做出响应的话,这个调用会取消。

App Engine 应用可以使用Mail service来发送信息。信息可以代表应用或者发送邮件请求的用户(如果这个信息来自这个用户)被发送。许多网络应用使用邮件来通知用户,确认用户的动作,以及确认联络信息。

一个应用也可以接受邮件信息。如果一个应用被配置来接受邮件,被发送到这个应用地址的信息被路由到Mail 服务。它将把这个信息以针对请求处理器的HTTP请求的方式传递给应用。

App Engine应用可以发送和接受来自支持XMPP协议的聊天服务的即时消息,包括Google Talk。应用通过调用XMPP服务来发送一个XMPP聊天信息。对于发过来的邮件,当某个人发送一个信息到这个应用地址时,XMPP服务通过调用一个请求处理器将它传递给这个应用。

使用Channel 服务,你可以用网络浏览器就实现实时的双向通信。这个服务是一个巧妙的浏览应用通信的Comet model的实现(the Comet model of browser app communication)。Channels允许浏览器在一个网页加载完之后很久也能够与远程宿主的网络连接保持打开来接受实时的信息。App Engine使用一个服务把这个嵌入它的基于请求的处理模型中:浏览器不直接连接到应用的服务器,而是通过服务连接到“channels”上。当一个应用决定在它的常规处理期间发送一个信息到客户端(或客户端组)时,它会带着这个信息调用Channel服务。这个服务会广播这个信息到客户端组,并且管理打开的连接。为了这个信息的从客户端到应用的配对的网络请求,Channel 服务提供了实时的信息浏览而没有高昂的轮询。App Engine包括一个JavaScript 客户端,所以你的在浏览器中的代码可以连接到Channels。

图像处理服务可以做轻量级的图像数据传输,比如制作上载图片的缩略图。图像处理任务使用Google也在用的处理图像的相同的基础设施以及其他的一些产品,因而结果返回很快。这个服务也支持与存储在Blobstore中的大数据对象的交互,因而它可以操纵用户上传的大图像文件。

※本书不讨论Channel 服务也不讨论图像处理服务。查看官方的App Engine网站寻找更多的信息。当这个版本在印刷时,App Engine有一些很不错的新的服务正在开发,一些正在进行公测。在将来特别是搜索服务很可能被证明是面向文档的网站和应用的主要部分。因为这些服务还在开发中且很可能改变,在这个版本中也省略了。再说一遍,可以参考官网的最新信息。

The Services(服务)的更多相关文章

  1. android学习日记19--四大组件之Services(服务)

    一个Android应用主要由四个基本组件组成,Android四大基本组件分别是Activity,Content Provider内容提供者,Service服务,BroadcastReceiver广播接 ...

  2. PHP 调用asp.net Web Services服务问题总结

    原文:PHP 调用asp.net Web Services服务问题总结 PHP是弱类型语言,转换非常不方便. < ?php //soap 客户端 $client=new SoapClient(' ...

  3. Integration Services 服务连接失败,拒绝访问以及无法检索数据报错问题

    第一个方法比较简单:把域账号添加admin组即可: 第二种方法: 添加域账号到分布式 COM 组 命令提示符下运行 dcomcnfg.exe 下一步 下一步 启动和激活权限 下一步 访问权限 同上设置 ...

  4. Power BI 与 Azure Analysis Services 的数据关联:1、建立 Azure Analysis Services服务

    Power BI 与 Azure  Analysis Services 的数据关联:1.建立  Azure  Analysis Services服务

  5. 为何使用Microsoft SQL Server Management Studio连接Integration Services服务失败

    检查是否满足以下各项: 1. 首先你要确保当前你使用的Windows账号是有管理员权限的 2. 其次请在打开Microsoft SQL Server Management Studio时,通过右键Ru ...

  6. HanLP封装为web services服务的过程介绍

    前几天的召开的2019年大数据生态产业大会不知道大家关注到没有,看到消息是hanlp2.0版本发布了.不知道hanlp2.0版本又将带来哪些新的变化?准备近期看能够拿到一些hanlp2.0的资料,如果 ...

  7. Services (服务)

    */ .hljs { display: block; padding: 0.5em; background: #F0F0F0; } .hljs, .hljs-subst, .hljs-tag .hlj ...

  8. Windows server 2008启动remote dosktop services服务报错1079

    原创 欢迎转载,届时请注明出处 报错场景 今天,刚开始启动win server的远程连接服务(remote desktop services)时 该服务可以正常启动,然后选择了  “计算机--> ...

  9. 1.3 Services - 服务

    服务是一种应用组件,它可以在后台执行耗时的操作,它是没有用户界面的.其它的应用组件都可以开启一个服务,服务开启后,即使用户离开了应用,服务仍然可以在后台运行.此外,绑定到服务的组件可以与服务进行交互, ...

  10. 基于soap 的 python web services 服务开发指南

    文章大纲 序言 相关概念 SOA web services SOAP WSDL UDDI 环境搭建 我们使用 python 3.6 这个较新python 版本 服务端开发 客户端开发 suds-jur ...

随机推荐

  1. Qt学习记录--Qt::CaseSensitive

    Qt::CaseSensitivity 为枚举类型, 可取值Qt::CaseSensitive 和 Qt::CaseInsensitive, 表示匹配的灵敏度. 比较字符串的时候 Qt::CaseSe ...

  2. Android开发之onActivityResult()中的resultCode为0,intent为null的解决办法

    BUG:昨天在使用activity之间传值的时候,遇到了一个bug,该bug为:Activity A启动Activity B,然后在Activity B中取到一个值,并通过back键返回到Activi ...

  3. Python3 学习第一弹:基本数据类型

    本人学习主要从<python基础教程第二版>,<dive into python3>等书籍,及一些网上大牛的博客中学习特别是Python官方文档<Python Tutor ...

  4. Java注解实践

    Java注解实践 标签 : Java基础 注解对代码的语意没有直接影响, 他们只负责提供信息给相关的程序使用. 注解永远不会改变被注解代码的含义, 但可以通过工具对被注解的代码进行特殊处理. JDK ...

  5. EF DataBase First生成model的验证

    如何避免在EF自动生成的model中的DataAnnotation被覆盖掉 相信很多人刚接触EF+MVC的时候,DataBase First模式生成model类中加验证信息的时候,会在重新生成mode ...

  6. 教你如何将 Sublime 3 打造成 Python/Django IDE开发利器

    Sublime Text 是一款非常强大的文本编辑器, 下面我们介绍如何将 Sublime Text 3 打造成一款 Python/Django 开发利器: 1. 安装 Sublime Text 3 ...

  7. UVA 10801 Lift Hopping 电梯换乘(最短路,变形)

    题意: 有n<6部电梯,给出每部电梯可以停的一些特定的楼层,要求从0层到达第k层出来,每次换乘需要60秒,每部电梯经过每层所耗时不同,具体按 层数*电梯速度 来算.问经过多少秒到达k层(k可以为 ...

  8. POJ 1523 SPF (割点,连通分量)

    题意:给出一个网络(不一定连通),求所有的割点,以及割点可以切分出多少个连通分量. 思路:很多种情况. (1)如果给的图已经不是连通图,直接“  No SPF nodes”. (2)求所有割点应该不难 ...

  9. angularjs指令中的compile与link函数详解(转)

    http://www.jb51.net/article/58229.htm 通常大家在使用ng中的指令的时候,用的链接函数最多的是link属性,下面这篇文章将告诉大家complie,pre-link, ...

  10. ASP.NET MVC模型部分验证

    在很多情况下,我们为了代码的复用可能会存在ViewModel共用的情形.比方说,web应用中常常会遇到的一个需求就是用户找回密码的功能.用户首先要验证通过验证邮箱(通常是用户名)来获取验证码,然后再进 ...