<Chapter 2>2-2-1.用户偏好模式(The User Preferences Pattern)
在这个模块中我们要创建的应用是一个简单的钟。当一个用户访问这个网站时,这个应用会更具服务器的系统时间显示当前的时间。默认情况下,这个应用使用标准国际时间(UTC)时区显示当前时间。用户可以使用Google帐户登录和偏好设定来自定义时区。
这个应用演示了三个App Engine的特性:
・datastore,主要存储数据,一致的,可靠的,可扩展的。
・内存缓存,辅助存储,比datastore要快,但从长远看不一定时持久的。
・Google帐户,使用Google用户帐户系统来验证和识别用户的能力。
Google账户和大多数用户帐户系统一样工作。如果用户没有登录这个时钟应用,她看到一个一般视图带有默认设置(UTC时区)、登录和创建一个新用户的链接。如果这个用户选择去登录或注册,这个应用会引导她到一个由Google帐户管理的登录窗口。登录或创建一个帐户会再引导用户返回到这个应用。
当然,你可以实现你自己的帐户机制而不是使用Google帐户。你也可以利用App Engine中内置的对OpenID的支持来使用一个OpenID提供者(或用户选择的提供者)。使用Google帐户或OpenID有有点也有缺点——主要的有点就是你不需要实现你自己的帐户机制。如果应用的一个用户已经有了一个Google帐户,这个用户使用这个帐户来登录而不需要为你的应用创建一个新用户。
当用户已经登录后,如果访问这个应用,这个应用会加载用户的偏好数据并利用它来提供网页。应用通过两步取回偏好数据。首先,它会从快速辅助存储(内存缓存)中取数据。如果数据在内存缓存中不存在,应用尝试从主存储(datastore)中取回数据,如果成功的话,应用会将它放到内存缓存中为以后的请求查找。
这就意味着对于大多数请求,应用可以从内存缓存中取回用户的偏好,而不需要访问datastore。尽管从database中读数据也是很快的,但是从内存缓存中读会快得多而且避免了datastore的调用成本。每当用户访问一个网页时都要访问相同的数据时,这个差别就很大了。
我们的时钟应用有两个请求处理器。一个处理器显示当前的时间以及登录和退出的链接。当用户已8登录时,它也显示了一个网页表单来调整时区。当时区被提交时,第二个处理器处理时区。当用户提交了偏好表单时,应用保存变更并再引导浏览器返回这个主页面。
应用从它的服务器的系统时间取得当前时间。值得注意的是App Engine不保证应用的所有网络服务器的系统时钟时同步的。因为对于这个应用的两个请求可能会被不同的服务器处理,不同的请求可能看到不同的时钟。服务器时钟作为一个真实应用的时间数据源是不够一致的,但是对于这个例子已经足够了。
在下一个模块中,我们使用Python来实现这个应用。在"Developing a Java App"模块中我们做相同的事情。和之前一样,可以随意跳过不适合你的部分。
<Chapter 2>2-2-1.用户偏好模式(The User Preferences Pattern)的更多相关文章
- Android 保存用户偏好设置
很多情况下都允许用户根据自己的习惯和爱好去设置软件,而我们需要保存这些设置,可以用一个专业保存用户偏好的类:SharedPreferences. 这个类是实现方法其实也就是创建和修改 XML 文件, ...
- [SharePoint 2010]关于基于声明(Claims)的用户认证模式
转:http://blog.csdn.net/zw_2011/article/details/7417132 SharePoint 2010在用户认证模式上,较之以前的版本有了非常大的改变.在Shar ...
- Oracle用户和模式,表空间
oracle 用户与表空间关系 oracle用户与表空间关系用户=商家表=商品表空间=仓库1. 1个商家能有很多商品,1个商品只能属于一个商家2. 1个商品可以放到仓库A,也可以放到仓库B,但不能同时 ...
- 【Qt官方例程学习笔记】Application Example(构成界面/QAction/退出时询问保存/用户偏好载入和保存/文本文件的载入和保存/QCommandLineParser解析运行参数)
The Application example shows how to implement a standard GUI application with menus, toolbars, and ...
- Oracle 用户与模式的关系
一.用户登录 Oracle 数据库的安全保护流程分为3个步骤. 1.用户向数据库提供身份识别信息,即提供一个数据库账号 2.证明身份识别信息是否有效,通过密码来实现 3.用户输入的密码经过数据库的核对 ...
- hive单用户多点模式配置
简介 单用户多点模式也称远程服务模式,用户非java客户端访问元数据库,在服务端启动MetaStoreServer,客户端利用Thrift协议通过MetaStoreServer访问元数据库. mysq ...
- centos 单用户登陆模式操作
在centos中因为安装java而配置 jdk环境变量的原因,对/etc/profile文件进行了编辑 错误的环境变量配置导致在第一次修改profile文件并保存后,执行source /etc/pro ...
- Oracle的表空间、用户和模式
Oracle 的 表空间(Tablespace).用户(User).模式(Schema) 前面有整理了一篇 Oracle 数据库(database) 与 实例(instance) 的概念及关系整理 ...
- 目标用户偏好指数Target Group Index分析
目标用户偏好指数Target Group Index分析 TGI指数,全称Target Group Index,可以反映目标群体在特定研究范围内强势或者弱势. TGI指数计算公式 = 目标群体中具有某 ...
随机推荐
- Entity Freamwork 6连接PostgreSql数据库
原文 Entity Freamwork 6连接PostgreSql数据库 开发环境 VS 2015 Update 1 Postgre Sql 9.4 使用过程 1.使用Nuget在项目中添加对E ...
- HDU5093——Battle ships(最大二分匹配)(2014上海邀请赛重现)
Battle ships Problem DescriptionDear contestant, now you are an excellent navy commander, who is res ...
- PHP Warning: date(): It is not safe to rely on the system's timezone settings.
OSSEC安装结束后运行,运行以下命令却抛错 cat /opt/ossec/logs/alerts/alerts.log 具体抛错内容: ** Alert 1468897672.2164786: ma ...
- 开源入侵检测系统OSSEC搭建之一:服务端安装
OSSEC是一款开源的多平台的入侵检测系统,可以运行于Windows, Linux, OpenBSD/FreeBSD, 以及 MacOS等操作系统中.主要功能有日志分析.完整性检查.rootkit检测 ...
- ios 使用GCD 多线程 教程
什么是GCD Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法.该方法在Mac OS X 10.6雪豹中首次推出,并随后被引入到了iOS4.0中.GCD ...
- C#通过代码注册COM组件
using System; using System.Diagnostics; using Microsoft.Win32; namespace ChuckLu.Utility { public cl ...
- Android开发之三种动画
转载:http://www.cnblogs.com/angeldevil/archive/2011/12/02/2271096.html http://www.lightskystreet.com/2 ...
- C#获取网页中某个元素的位置,并模拟点击
我们在开发中,往往要得到网页中某个元素的位置,并且点击它.要模拟一次鼠标点击并不难,只要调用一个API就行了,关键就是怎么样得到这个元素的位置,还有判断是否要滚动滚动条,要滚动多少行能让元素显示出来. ...
- 使用设置报头x-Frame-Options限制iframe网页嵌套
x-frame-options的出现一部分是为了防止一些别有用心的者制作钓鱼网站,现在支持的浏览器有一下: chrome 4.1.249.1042 firefox 3.6.9(1.9.2.9) IE ...
- gulp edm测试
gulp工具的 gulp-mailgun 插件可以将你的html代码,通过mailgun服务器来发送,用于测试,用这个工具发送邮件最适合不过了. 首先我们需要引入gulp和gulp-mailgun模块 ...