使用Eclipse在Google App Engine上创建 mashup,第2部分

使用社会网络可以更轻松地获取并聚合数据,从而创建富有革新精神的新 Web 应用程序。但是,仍然必须处理创建可伸缩 Web 应用程序的所有常见问题。现在,使用 Google App Engine (GAE) 也可以简化工作。使用 GAE,可以不必考虑管理应用服务器池的所有事务,而是集中精力创建优秀的 mashup。本文是共分三部分的系列文章 “使用 Eclipse 在 Google App Engine 上创建 mashup” 的第二部分,在本文中,将利用并增强在第 1 部分中构建的应用程序。我们将通过 GAE 的更多数据建模功能来提高性能。然后使用 GAE 的 Memcache 服务进一步提高性能。

关于本系列

在本系列中,将了解如何开始使用 Google App Engine (GAE)。在 第 1 部分 中,了解了如何设置开发环境,以便可以开始创建运行在 GAE 上的应用程序。了解如何使用 Eclipse 简化应用程序的开发和调试。本文是第 2 部分,将使用 Eclipse 构建 Ajax mashup 并将其部署到 GAE 中。最后,在第 3 部分中,将通过为应用程序创建 RESTful Web 服务返回到生态系统,这样其他人就可以使用它创建自己的 mashup。

GAE 是创建 Web 应用程序的平台。使用它的最重要的先决条件是具备 Python 知识,因为要在 GAE 中使用 Python 作为编程语言(目前为 Python V2.5.2)。对于本系列,具备一些典型的 Web 开发技能将会有帮助(例如,HTML、JavaScript 和 CSS 知识)。要针对 GAE 进行开发,需要下载三个软件包。

Eclipse Classic 我使用的是 Eclipse Classic V3.3.2。更新的版本也可以使用。Google App Engine SDK 阅读 GAE 站点中的官方文档并查找下载 SDK 的链接。PyDev 使用更新站点 http://pydev.sourceforge.net/updates/ 从 Eclipse 内下载 PyDev,它可以将 Eclipse 转换为 Python IDE。

如何安装后两个软件包已经在 第 1 部分 中讨论过。

增强功能

在 第 1 部分 中,我们构建了一个小型应用程序,用来聚集内容提要并通过 GAE 处理它们。我们可以在此基础上继续开发并将该应用程序部署到 GAE 中,但是在这之前,让我们对它实现一些增强功能。第一组增强与性能有关。第 1 部分的版本将在每次请求页面时从订阅的服务中提取数据。这可能需要花费很长时间,尤其是如果任何一项服务响应较慢或一个用户订阅了多项服务。这是常见问题,但是对于运行在 GAE 上的程序来说,这个问题尤为严重。要让 GAE 具有可伸缩性,就需要减少长时间运行的请求。如果处理时间过长,则会终止该请求并向用户发送一条错误消息。这并不是我们想要的结果,因此将更多地使用 GAE 的数据建模和 Bigtable 特性来提高性能。Bigtable 是用于管理结构化数据的分布式存储系统(有关更多信息,请参阅 参考资料)。还将使用它的 Memcache API 来做出更多改进。

我们将在本文中实现的另一组增强将处理用户体验。通过向应用程序添加 Ajax 元素改进用户界面。不仅将使用 Ajax,还将绑定一些数据建模及缓存增强以进一步提高应用程序的性能。实现了这些增强后,我们就可以将应用程序部署到 GAE 中。首先来看一看数据建模增强。

使用关系

在 第 1 部分 中,我们使用了一个数据模型:Account。它使用了 GAE 的 Expando 属性特性来存储服务的 URL。为了提高性能,需要存储提要中的实际数据。访问 Bigtable 绝不会像访问传统的关系数据库(或者至少是负载较轻的关系数据库)一样快,但是应当比从数据源中提取提要快得多。不过,如果只依赖 Bigtable,则永远得不到新功能。因此,需要跟踪何时提取实时数据并将其插入 Bigtable 中,因此如果数据过时,那么我们可以返回到数据源。

在创建新数据模型之前,还有一件事需要考虑。不同的用户可以拥有相同的提要。提要与帐户之间存在多对多关系。了解这些之后,让我们看一看新模型。清单 1 中显示了修改后的 Account 模型。

清单 1. Account 模型

class Account(db.Model):
   user = db.UserProperty(required=True)

这里的主要更改是从模型中移除了服务信息。如何确定服务的 URL?该信息已被移到独立的模型级数据结构(目录)中,如下所示:

清单 2. 服务数据

service_templates = {
   'twitter': "http://twitter.com/statuses/user_timeline/%s.rss",
   'del.icio.us': "http://del.icio.us/rss/%s",
   'last.fm': "http://ws.audioscrobbler.com/1.0/user/%s/recenttracks.rss",
   'YouTube': "http://www.youtube.com/rss/user/%s/videos.rss",
   }

这将允许使用简单的字符串替换来创建基于用户名的服务 URL。换言之,使用服务名称(用作 service_templates 字典中的关键字)与用户名(用于对从字典中检索到的值进行字符串替换)组合可以计算 URL。这将把我们引向 Feed 数据模型。

时间: 2024-08-03 17:20:52

使用Eclipse在Google App Engine上创建 mashup,第2部分的相关文章

使用Eclipse在Google App Engine上创建mashup,第3部分

使用社会网络可以更轻松地获取并聚合数据,从而创建富有革新精神的新 Web 应用程序.但是,仍然必须处理创建可伸缩 Web 应用程序的所有常见问题.现在,使用 Google App Engine (GAE) 也可以简化工作.使用 GAE,可以不必考虑管理应用服务器池的所有事务,而是集中精力创建优秀的 mashup.本文是共分三部分的系列文章 "使用 Eclipse 在 Google App Engine 上创建 mashup" 的最后一部分,在本文中,将利用并进一步增强在前两部分中构建的

使用Eclipse在Google App Engine上创建mashup,第1部分

进军社会软件是为应用程序增值的好方法.使用社会网络可以更轻松地获得并聚合数据,从而创建富有革新精神的新 Web 应用程序.但是,仍然必须处理创建可伸缩 Web 应用程序的所有常见问题.现在,使用 Google App Engine (GAE) 也可以简化工作.使用 GAE,可以不必考虑管理应用服务器池的所有事务.您不必担心存储大量静态内容和动态数据.相反,您可以将精力集中在创建优秀的 mashup 上.本文是共分三部分的系列文章 "使用 Eclipse 在 Google App Engine 上

使用 Eclipse 在 Google App Engine 上创建 mashup,第 3 部分: 使用 RESTful Web 服务

使用社会网络可以更轻松地获取并聚合数据,从而创建富有革新精神的新 Web 应用程序.但是,仍然必须处理创建可伸缩 Web 应用程序的所有常见问题.现在,使用 Google App Engine (GAE) 也可以简化工作.使用 GAE,可以不必考虑管理应用服务器池的所有事务,而是集中精力创建优秀的 mashup.本文是共分三部分的系列文章 "使用 Eclipse 在 Google App Engine 上创建 mashup" 的最后一部分,在本文中,将利用并进一步增强在前两部分中构建的

使用 Eclipse 在 Google App Engine 上创建 mashup,第 1 部分: 创建应用程序

进军社会软件是为应用程序增值的好方法.使用社会网络可以更轻松地获得并聚合数据,从而创建富有革新精神的新 Web 应用程序.但是,仍然必须处理创建可伸缩 Web 应用程序的所有常见问题.现在,使用 Google App Engine (GAE) 也可以简化工作.使用 GAE,可以不必考虑管理应用服务器池的所有事务.您不必担心存储大量静态内容和动态数据.相反,您可以将精力集中在创建优秀的 mashup 上.本文是共分三部分的系列文章 "使用 Eclipse 在 Google App Engine 上

使用 Eclipse 在 Google App Engine 上创建 mashup,第 2 部分: 构建 Ajax mashup

使用社会网络可以更轻松地获取并聚合数据,从而创建富有革新精神的新 Web 应用程序.但是,仍然必须处理创建可伸缩 Web 应用程序的所有常见问题.现在,使用 Google App Engine (GAE) 也可以简化工作.使用 GAE,可以不必考虑管理应用服务器池的所有事务,而是集中精力创建优秀的 mashup.本文是共分三部分的系列文章 "使用 Eclipse 在 Google App Engine 上创建 mashup" 的第二部分,在本文中,将利用并增强在第 1 部分中构建的应用

部署到google app engine上的程序无法访问,怎么解决呢?

问题描述 用过google app engine的指导一下吧 问题补充:fmjsjx 写道 解决方案 很久了,我现在只能访问他的管理台,但像http://suziwen1.appspot.com/ 这个地址根本就访问不了,所以现在很少玩这个了进入管理台后有一个createapplication,你得先创建一个,然后在你本地里上传到这个application里,每上传一次就会有一个新的版本解决方案二:原来是被 墙 了啊,记得我们那时候是到EC2--就是那个亚马逊弹性云--申请了台服务器,自己装了个

Java开发2.0: 针对Google App Engine的Gaelyk

本 系列 将探讨对于如今及未来的 Java 开发的发展起决定作用的各 个技术方面.Java 开发 2.0 的前提开发速度将越来越快,这要归功于开源领域 中的创新以及硬件的商业化.您可以租借其他人的硬件平台来托管自己的应用程 序(主要使用开源库.工具和框架来装配),成本只包括获取和维护自己的基础 设施. 本系列的第一期 "使用 Google App Engine" 讨论 了免费租借 Google 的基础设施来托管您的 Java 应用程序(不过会牺牲少许灵 活性)的概念.在后续文章中,您了

Amazon EC2和Google App Engine,谁是最后的赢家

Amazon EC2和Google App Engine,两大服务平台,谁能更胜一筹,我打算从三个角度来对比这两大云计算平台:技术,业务和未来发展趋势,本文是技术方面的对比,ok,准备好咖啡,我们开始吧! 如果按平台类型来分,大家可能已经知道Amazon EC2属于IaaS(基础设施即服务),Google App Engine属于PaaS(平台即服务).不过,如果Amazon EC2给你一个安装了操作系统的平台,你就可以自己安装应用程序,并且使用AMI(Amazon Machine Image)

用Groovy编写Google App Engine应用

Google的Google App Engine 云计算平台现在已 经支持了除了Python以外的其他的语言:即Java和Groovy! 现在,你可以通过Groovy高效的编写你的Google App Engine 应用了. 几星期以前,SpringSource Groovy团队和Google App Engine Java 团队紧密携手,仔细的处理了大 量的细节问题,以确保这门获奖的颇为流行的基于JVM的动态语言--Groovy可以很好的运行在这个精彩的 平台上.他们针对那些限制严格以及有很强