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. phpcms V9首页 频道页 列表页 推荐位 简单获取文章浏览量和评论统计

    phpcms V9首页 频道页 列表页 推荐位 简单获取文章浏览量和评论统计 列表取得数据方法: {pc:content action="lists" catid="$c ...

  2. 在Eclipse下debug 出现Source not found for ...

    在Eclipse下debug 出现Source not found for ... 在Eclipse下调试Servlet出现了Source not found for XxxAction.execut ...

  3. JDynamic :支持Json反序列化为Dynamic对象

    JDynamic :支持Json反序列化为Dynamic对象   2010年 .NET 4.0 发布前后,从3.5向4.0迁移,那时也有一些异构系统的需求,主要是和PHP打交道,通信使用的HTTP 格 ...

  4. OpenCV码源笔记——Decision Tree决策树

    来自OpenCV2.3.1 sample/c/mushroom.cpp 1.首先读入agaricus-lepiota.data的训练样本. 样本中第一项是e或p代表有毒或无毒的标志位:其他是特征,可以 ...

  5. MySQL增加列,移动列

    ALTER TABLE test ADD COLUMN id INT UNSIGNED NOT NULL auto_increment PRIMARY KEY FIRST 给表添加列是一个常用的操作, ...

  6. 1742. Team building(dfs)

    1742 最小的是找联通块数 最大的找环 一个环算一个 其它的数各算一个 #include <iostream> #include<cstdio> #include<cs ...

  7. POJ 1276 (多重背包) Cash Machine

    题意: 有n种纸币,已知每种纸币的面值和数量,求所能凑成的不超过cash的最大总面值. 分析: 这道题自己写了一下TLE了,好可耻.. 找了份比较简洁的代码抄过来了..poj1276 #include ...

  8. Android development tools line_endings hacking

    /******************************************************************** * Android development tools li ...

  9. UVA 658 It's not a Bug, it's a Feature! (最短路,经典)

    题意:有n个bug,有m个补丁,每个补丁有一定的要求(比如某个bug必须存在,某个必须不存在,某些无所谓等等),打完出来后bug还可能变多了呢.但是打补丁是需要时间的,每个补丁耗时不同,那么问题来了: ...

  10. Java [Leetcode 268]Missing Number

    题目描述: Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is ...