AICon 北京站 Keynote 亮点揭秘,想了解 Agent 智能体来就对了! 了解详情
写点什么

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:23938
用户头像

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

关注

评论

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

计算机的时间

伴鱼技术团队

分布式 服务器 技术交流

说到做到

Yukun

拖延症

艺术生,我劝你Mac

zhoo299

Mac CG 艺术

码农远程办公指北

大伟

Vol.3 人工智能这么热,你必须知道一点儿!

pyfn2030

人工智能

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (十)在项目中准备测试环境

编程道与术

Java 编程 软件测试 TDD 单元测试

使用SpreadJS 开发在线问卷系统,构筑CCP(云数据采集)平台

葡萄城技术团队

数据挖掘 大数据 SpreadJS CCP

Wi-Fi p2p & ap 共存

贾献华

wifi p2p ap

Vol.6 几个数据库相关的词

pyfn2030

数据库 大数据 新手指南

Dataway 4.1.5 以上版本升级指南

哈库纳

string StringBoot Dataway Hasor

无需代码!通过 Dataway 配置一个带有分页查询的接口

哈库纳

spring springboot Dataway Hasor

Anaconda与虚拟环境

halapano

Python virtualenv Anaconda

自己常用的一些快捷键 windows10

halapano

Windows技巧

代码简洁之路 [持续更新]

hq

Java 大前端 编程习惯

Vol.2 谷歌不只有搜索

pyfn2030

谷歌Google

Gartner 【RPA市场竞争格局】:中国厂商首次进入国际视野

人称T客

如何用一台电脑制作一部动画短片?

zhoo299

动画 CG

AB 测试平台的设计与实现

伴鱼技术团队

架构 系统设计 后端 A/B

ARTS-WEEK01

子路无倦

ARTS 打卡计划

【快点查查】微信小程序使用流程

tomatocc

那些会阻碍程序员成长的细节[1]

MavenTalker

程序员 职业规划

Vol.4 了解一下渗透测试

pyfn2030

黑客 网络安全

Vol.5 Go初探,新手必看!

pyfn2030

编程语言 新手指南

Dataway 整合 Swagger2,让 API 管理更顺畅

哈库纳

Spring Boot DataQL Dataway Hasor

绝了!Dataway让Spring Boot不再需要Controller、Service、DAO、Mapper

哈库纳

StringBoot DataQL

系统服务化构建-两方OAuth

图南日晟

微服务 软件工程 身份认证 架构设计

Dataway 配置数据接口时和前端进行参数对接

哈库纳

Spring Boot DataQL Dataway Hasor

《程序员的数学》笔记

Rex

读书笔记

从 0 到 1 搭建技术中台之技术文化篇

伴鱼技术团队

企业文化 技术管理

免费领课的活动你错过了么?

池建强

极客时间

完美兼容老项目!Dataway 4.1.6 返回结构的全面控制

哈库纳

spring Spring Boot Dataway Hasor

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