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

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服务的数据:

  • Google Apps Provisioning
  • Google Base
  • Blogger
  • Google Calendar
  • Google Code Search
  • Google Notebook
  • Google Spreadsheets
  • Picasa Web Albums

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的例子:

  • Ambient Clock
  • Google Office
  • Spanning Sync
  • Gumiyo
  • Bloghud

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中文站内容建设,请邮件至 [email protected]

你可能感兴趣的:(Google开发者日2007德国大会报道)