写点什么

Google 开发者日 2007 德国大会报道

  • 2007-06-05
  • 本文字数:2906 字

    阅读完需:约 10 分钟

Google 开发者日 2007 在全球 10 个城市陆续举行,从澳大利亚的悉尼开始到美国加州山景城结束。以下是对其中 2007 年 5 月 31 日德国汉堡的活动中一些议程的报道。

在Karl Krainer——Google 的北欧市场负责人——的开幕致词中,介绍了本次活动的各位演讲者和时间安排。随后他欢迎了Stephan Uhrenbacher—— Qype 的创始人。Stephan 介绍了他对 Google Maps API 的体会和这个 API 对 Qype 的影响。Qype 是一个给服务商、商店、餐馆以及所有其他在德国的公共场所和供应商评分的平台。Google Maps 是这个平台的一项关键技术,它被用来提供所有地点的地理信息以及用户查找的地点一定范围内的其他(相关)地点的信息。评级信息来自 Qype 用户提交的数据,这让 Qype 也成为一个社交平台。在被问到他希望 Google Maps 或者其他 Google API 增加哪些功能时,他回答说他对一项本地化功能非常关心,比如限制 Google Ads 只显示一些切合某个地点的广告条目。

Douwe Osinga 是来自 Google 瑞士的一位工程师,他谈论了 Google Gadgets API 。Google Gadgets 是一些用 XML 文档形式实现的微型程序( applet)。Google 为 Gadgets 提供免费主机和一个 Gadgets 目录。Gadget 的 XML 文档可以包含 JavaScript 代码,这让程序能够实现非常多的操作,Google Data APIs 是其中之一。由 XML 和 JavaScript 构成的 Gadget 可以在几乎任何地方运行,也可以简单地通过博客和网站发布,让它得以迅速、大量地传播。 Gadget 的内部构造非常简单:文档的根节点“module”包含一个“moduleprefs”元素,若干“userpref”元素和一个“content”元素。Gadget 提供一些有趣的功能,比如:

  • 获取远程内容——获取并处理远程文本(通常是 HTML)、XML 和 RSS/Atom Feed 数据;
  • 国际化——Gadget 中的任何文本都可以放入消息资源包(Message Bundles)之中。Google 在运行时根据用户浏览器的语言设置获取相应的资源包;
  • 缓存外部资源——Google 为 Gadget 使用的任何外部资源提供缓存。

Frank Mantek 是 Google 德国的员工,他探讨了 Google Data APIs Protocol (GData)。他首先解释了为什么 Google 选择提供一个基于 REST 的 API。过去 Google 的 API 建立于 SOAP 之上,导致开发者不得不应付产品之间不相一致的“一堆 API 和规格书”。现在 Google 为他们的服务提供了统一的 API,API 由一组四种操作、若干 URI 和 Atom/RSS feed 组成。根据 Frank Mantek 的说法这套工具已经被证明可行,它简化了开发,并且对大多数(> 80%)用途是足够的。仍然有一些需求需要更复杂的 API 才能满足,比如事务、消息级的安全以及通知——回复的消息交换模式,但这些只是少数。目前 GData 可以用来访问以下 Google 服务的数据:

Frank 引用 Dare Obasanjo 关于 GData 的意见来支持他对基于 REST 和基于 SOAP 两种方式的看法:

将这个(GData)跟 Yahoo! Developer Network 的 API 或者 Windows Live Dev 的一坨粘糊糊的不协调不兼容的 REST 风格的协议、SOAP API 和 XML-RPC 方法,都放到同一个屋檐下对比。在 Google 这边,一个可以从 Blogger 读写数据的程序只需要细微的修改就可以从 Google Calendar 或者 Picasa Web Albums 读写数据。而换成 Yahoo! 的两个服务(比如 Flickr 和 del.icio.us)或者两个 Windows Live 服务(比如 Live Search 和 Windows Live Spaces)情况就大不相同,即便来自同一家公司的两个服务都使用完全不一致的协议、对象模型和认证机制。

GData 通过 HTTP 谓词 GET、PUT、POST 和 DELETE 来支持对(用 URI 表示的)资源的 CRUD 操作。操作的结果用 Syndication Feed(Atom/RSS)的形式提供。 Atom 的元数据里加入了额外的扩展标签以满足 Google 服务的个别需要。查询和乐观并发也已经加入。乐观并发由“编辑链接(edit links)”实现。指向资源的每个链接(URI)都包含版本信息。这个版本信息随着每次更新自动调整。并发问题通过在每次更新或删除时比较所提交的版本信息和服务器上的版本信息来解决。

身份认证由 Google Desktop 或 Web Authentication Service 实现。两者都会创建一个认证令牌,可被客户程序用来鉴别单个用户的身份。Web Authentication Service 由相应的 Google 站点通过重定向掉用。两种方式都可以保持密码安全。

演讲还涵盖了一些其他开发者如何运用 Google Data APIs 的例子:

Frank 还提到了 Google Data API Protocol 的一些弱点,Google 将会在以后的版本中解决:

  • 身份认证——Web Authentication Service 是通过重定向调用的,导致用户要离开客户程序并被带到一个可能看上去完全不同的用户界面之前。很多客户都对此有所抱怨。
  • 乐观并发——编辑链接不是一个很干净的解决方案。Frank 说他们当初应该采用强 ETags
  • 增量更新——现在没有办法做到增量更新,即改变资源的特定部分而不必发送整个新版本的数据。
  • 版本控制——这是一个悬而未决的问题。Google 还没有决定他们要如何处理 Google Data APIs 的版本,不过基本可以确定是通过提供一组新的 URI 来实现。旧版本可能在一段时间后下线。

Matthias Zenger 是 Google 瑞士的 Tech Lead Manager,他谈论了 Google Base 。Google Base 为应用程序处理结构化的数据提供了一个平台。任何人都可以定义数据项的类型并提交数据项到库(base)中,以产生一个结构化数据的库,以便 Google Search 能够找到并适当地表示这些数据。

Google Base 的数据模型非常简单。Base 是一个数据项的仓库,它的结构是由数据项类型(item type)定义的。数据项类型由一组类型化的属性构成,属性则是一个名称 / 值的绑定。比如“Product”就是数据项类型的一个例子。它被 Google Product Search (Froogle 的成功关键)使用。

Google Base 基于 GData 并增加了一些特定的扩展。对数据项的创建、读取、更新和删除的所有 CRUD 操作都被支持。当中还包括了通过" bq"查询参数实现的结构化查询,例如“?bq=[cuisine: asian][cooking time <= 45 minutes]”。Google Base Query 查询语言提供的标准化查询包括“[name(type) op value]”模式、专门的日期和地点查询、内建及定制的排序函数(成熟 SQL 的“order”)和分组表达式(SQL 的“group”)。

Matthias 以演示 Google Base 的范例项目其中之一 Honda Certified Used Cars 结束了他的演讲。

Google 开发者日的参与者们能够深入地了解最新的 Google 服务,以及这些服务的开发和用途。本次活动提供了丰富的信息以及开发者之间沟通和讨论的充分机会。 GDD07 德国主页上还为没有机会参与此次活动的开发者们提供了现场的视频。

查看英文原文: Google Developer Day 2007 - - - - - -

译者简介:郭晓刚是一名独立开发者。在经过了 10 年修练之后,总算是懂得一点编程了。目前主要关注以 Spring Framework 和 Hibernate 为主干的 Java Stack 和 Adobe Flex。Microsoft Office 的插件开发也是关心的方向之一。同时也在尽力做一些技术翻译工作,把知识分享给更多的人。参与 InfoQ 中文站内容建设,请邮件至 china-editorial@infoq.com

2007-06-05 20:23680
用户头像

发布了 225 篇内容, 共 63.6 次阅读, 收获喜欢 50 次。

关注

评论

发布
暂无评论
发现更多内容

数据智能基础设施升级窗口将至?看九章云极 DingoDB 如何击破数据痛点

九章云极DataCanvas

人工智能 数据库 数据 数据智能

【Java Web 系列】Session的原理分析和使用细节

倔强的牛角

Java javaWeb session 6月月更

从行业角度看,数仓领域的未来是什么?

字节跳动数据平台

字节跳动 数据仓库 OLAP

IDM短信发送接口设计说明

agileai

数据安全 集成底座 企业服务总线 统一身份管理平台 主数据管理平台

直播app源码,充值提现模板的设计看似简单却不简单

开源直播系统源码

软件开发 直播源码 app定制开发

融云首席科学家任杰:数字游民和意识体,疫情将如何影响人类社会进化

融云 RongCloud

Wallys/Routerboard/DR344/WiFi/AR9344 FCC/CE/IC

wallys-wifi6

AR9344 802.11a

web前端培训VUE开发者需要知道哪些实用技术点

@零度

Vue 前端开发

InfoQ 极客传媒 15 周年庆征文|Spring Cloud netflix概览及架构设计

No Silver Bullet

架构 6月月更 InfoQ极客传媒15周年庆 Spring Cloud netflix

Nginx 配置和性能调优

CRMEB

帮助文档在软件中的存在价值是什么?

小炮

量化夹子机器人系统开发逻辑分析

开发微hkkf5566

TiDB 6.0 实战分享丨内存悲观锁原理浅析与实践

PingCAP

分布式数据库 TiDB

API工具--Apifox和Postman对比(区别)

Liam

Java 后端 Postman API API接口管理

十分钟带你入门Docker容器引擎

百思不得小赵

云原生 Docker 镜像 6月月更

二级等保要求几年做一次测评?测评项目有多少项?

行云管家

等级保护 等保测评 二级等保 等保二级

【云计算】云计算平台是什么意思?可以划分为哪三类?

行云管家

云计算 云服务 私有云 云平台 云计算平台

保险APP适老化服务评测框架 发布

易观分析

保险

云GPU的618,拿捏了

恒源云

人工智能 深度学习 GPU服务器

莫把暑假插错秧,代码哪有足球香,Alluxio足球青训营在线摇人!

Alluxio

微软 开源 足球 分布式, CCF开源高校行

Go语言入门基础之库源码文件

Damon

6月月更

KubeVela 1.4:让应用交付更安全、上手更简单、过程更透明

孙健波

Kubernetes OAM KubeVela 云原生应用 K8s 多集群管理

天翼云数据中台通过“数字政府智慧中台”评估

Geek_2d6073

深度合作 | TDengine + 华为云 Stack 强强联合打造高效物联网时序数据处理解决方案

TDengine

数据库 tdengine 时序数据库

2022年中国社区团购发展新动向

易观分析

社区团购

物联网低代码平台如何添加报警配置?

AIRIOT

物联网 低代码开发 低代码平台

服务网格项目Aeraki Mesh正式进入CNCF沙箱

York

开源 云原生 istio Service Mesh 服务网格 cncf

How to solve the different brightness of LED display colors

Dylan

LED LED display

【LeetCode】找到一个数字的 K 美丽值Java题解

Albert

LeetCode 6月月更

从 keynote 大神到语雀画图大神,她是怎么做到的?

编辑器 思维导图 文档管理 企业知识管理

justcows奶牛理财dapp系统开发

开发微hkkf5566

Google开发者日2007德国大会报道_Java_Hartmut Wilms_InfoQ精选文章