<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指数计算公式 = 目标群体中具有某 ...
随机推荐
- jQuery编程基础精华01(jQuery简介,顶级对象$,jQuery对象、Dom对象,链式编程,选择器)
jQuery简介 什么是jQuery? jQuery就是一个JavaScript函数库,没什么特别的.(开源)联想SQLHelper类 jQuery能做什么?jQuery是做什么的? jQuery本身 ...
- highcharts 结合phantomjs纯后台生成图片
highcharts 结合phantomjs纯后台生成图片 highcharts 这个图表展示插件我想大家应该都知道,纯javascript编写,相比那些flash图表插件有很大的优势,至少浏览器不用 ...
- MapReduce编程系列 — 5:单表关联
1.项目名称: 2.项目数据: chile parentTom LucyTom JackJone LucyJone JackLucy MaryLucy Ben ...
- php库Faker
Faker License : MIT Source Code Allo点评:Faker是一个很神奇的项目,会自动生成拟真的数据,包括用户资料.长文本.IP.日期等等,在网站上线前测试时非常好用. g ...
- selenium--大家庭介绍
安装好配置环境后,开始我的selenium之旅.简单的了解一下色,selenium大家庭的组成. Selenium是ThoughtWorks专门为 Web 应用而开发的功能测试工具.Selenium使 ...
- [POJ1330]Nearest Common Ancestors(LCA, 离线tarjan)
题目链接:http://poj.org/problem?id=1330 题意就是求一组最近公共祖先,昨晚学了离线tarjan,今天来实现一下. 个人感觉tarjan算法是利用了dfs序和节点深度的关系 ...
- 如何过滤 adb logcat 输出
对原作者表示感谢,转自博客:http://www.otechu.me/zh/2011/12/filtering-adb-logcat-output/ 本文介绍如何在 shell 命令行中过滤 adb ...
- @interface java注解
@Documented,@Retention,@Target,@Inherited 1. 编写自定义@Todo注解经常我们在写程序时,有时候有些功能在当前的版本中并不提供,或由于某些其它原因,有些方法 ...
- Python3 学习第四弹:编码问题(转载)
关于python的编码问题一直以来不得解,终于在今天从这篇博文中明白了. 原文地址: http://nedbatchelder.com/text/unipain.html 译文地址:http://py ...
- bzoj2800
这题好难,翻了一下波兰文的题解……这好像是当年唯一没人A的题目 首先区间修改不难想到差分,我们令d1=x1,dn+1=-xn,di=xi-xi-1 注意Σdi=0,这样对于[l,r]的修改(比如+a) ...