FinOps有望降低企业50%+的云成本! 了解详情
写点什么

Google 的 GData/Atom 发布协议相对于微软限制太多

  • 2007-06-14
  • 本文字数:1999 字

    阅读完需:约 7 分钟

Dara Obasanjo 写了一篇关于 Google Data API 作为一个通用的协议(Google 关于 Atom Publishing Protocol 的实现和一些扩展)的不足,并解释了 Microsoft 为什么无法支持 GData 或把 GData 作为标准的理由。

在简短的把 GData 称赞为“简单和一致的接口”之后,Dare Obasanjo 叙述到“ GData/APP 作为一个通用的 Web 编辑协议是不妥的”。根据 Obasanjo 的说法“当你不局限于这些协议的设计初衷,即只为了编辑 Blog 这样的情况下,某些在 Atom Publishing Protocol 中的限制变的十分明显”。然而,Microsoft 虽然没有提供对 GData 的支持,但提供了“类似 REST 的一种标准协议”,对于 Microsoft 的协议,Dara Obasanjo 没有点名也没有讨论,不过他答应未来会发帖子进行讨论。

他指出了如下的限制:

数据模型不匹配,源于它们不是微内容:Atom 的数据模型非常适合表述人为创造的内容或者微内容(译者注:用户所生产的任何数据都算是微内容),在诸如 Blog 日志、链接列表、Podcast、在线相册和日历事件这样的 Web 应用中。当表述“一个具有特殊结构的业务对象”的时候,组成 Atom 条目的大部分元素没有意义。第二,一个人不得不创建大量的专有扩展元素来注释 atom:entry 元素,以便处理业务对象中所有特定的字段。这就像,在一个圆形的孔里面试图去适应一个方形的木栓。如果你强行去弄,有可能会适合,但却要命的难看。 缺乏对条目字段粒度更新的支持:每个客户端需要自己负责确认在被下载的原始 atom:entry 元素中没有丢失任何 XML。第二个问题就更严重,需要关心谁阅读了可编辑 Web:通过无条件的签出来检查丢失更新的问题。如果条目在客户端下载后和试图提交改变之前被更改过,这个问题会引起数据丢失的情况。即使客户端在提交更改之前发出一个 HEAD 请求来比较 ETag,也总是有可能更新发生在 HEAD 请求之后。在某个点之后,有可能出现“最近更新获胜”是合理的,这是因为现存的解决冲突的算法过于简单。不幸的是,这种方法也同样是失败的,由于 Atom Publishing Protocol 让客户端程序负责在 atom:entry 中的所有内容(的处理),即使它们只是感兴趣一个字段。

层级不足的支持:Atom 数据模型是不能直接支持嵌套或层级的。你能拥有媒体资源或者条目资源的集合,但条目资源不能自我包含条目资源。这意味着,如果你想重复一个具有子条目的条目,那么它必须通过一个连接来引用而不是包含在内部。通过连接来引用有时候是有意义的,比如当你考虑到 Blog 聚合和 Blog 编辑这样的情况,直接把所有评论包含在 Feed 条目中确实不是一个好主意。然而从另外一个方面来看,当条目具有一个直接的父子层级关系的时候,而子条目需要通过它自己的资源地址来定位,对于客户端来说总是显得麻烦,因为为了得到它们需要的数据而不得不进行两次或多次的调用。

Bill de hóra 对这个帖子进行了回复,并针对 Dare Obasanjo 提出的局限性提供了一些可行的解决方案。另外,他也添加了两个问题到限制列表中,“以便让人觉得他是多么可靠”:

更新的重新占用功能:一些客户端需要能够分片段上传数据。从较差的用户体验和通常的带宽消耗来看,对于特定清单模型(更新的重新占用功能)是重要的;不那样的话,数据消费端就不得不关注每次失败的数据上传。APP 根本不能说支持这些功能;通常情况下利用 HTTP 是可以做得到的,但是为了得到像样的客户端支持,至少需要提交为 RFC 标准。 批量和多部分上传:这个特性已经被考虑,atom 语法工作组已经开始着手此事了。(需要这个特性的)原因是成批传送消息(即所谓的“boxcarring”)能带来意想不到的复杂处理方式。那就是,仅仅说“发送一堆条目”,简单得让人感觉有些靠不住。尽管如此,这个特性在未来,从某些方面看还是值得关注的。

James Snell Joe Gregorio 明显不同意这样的说法,他们指出,Dara Obasanjo 提出的缺点完全不是缺点。James 把 Dare 的帖子称作“无聊”,Joe 问道:

使我怀疑他对于 APP 抱怨的时间是在 APP 将要获得 RFC 认可的时候。是什么原因突然让他说起葡萄酸来了?

Google 已经明确地提供了一个简单而有效的 API 来访问他们的服务。他们表示,不想百分百地解决所有的使用情况,而是提供一个确实简单和一致的 API 来满足主要的 80% 的情况。我们倒是想看看,Microsoft 为了提供一个针对 Web 的通用编辑协议(General Purpose Editing Protocol)而会提供一个什么样的 RESTful 协议。

查看英文原文: Google GData/Atom Publishing Protocol too limited for Microsoft - - - - - -

译者简介:朱永光,IT 自由人和环境保护者,微软最有价值专家(MVP)和 MCSD。他有 14 年的编程实践经历,5 年软件构架和开发管理经验,擅长微软相关技术和产品,目前主要关注软件构架和开发框架,是成都.NET 俱乐部副主席和核心讲师,个人博客为 http://redmoon.cnblogs.com 。现在他作为共同创始人经营着一家环境保护技术公司。参与InfoQ 中文站内容建设,请邮件至 china-editorial@infoq.com

2007-06-14 02:31663
用户头像

发布了 254 篇内容, 共 49.7 次阅读, 收获喜欢 2 次。

关注

评论

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

Compose 中的图形

Changing Lin

9月日更

数据规范的重要性

奔向架构师

数据治理 9月日更

[资源收藏]高质量外文博客(持续更新)

baiyutang

9月日更

潜入培训机构,顺出来一份价值 2.2W 的 Python 人工智能大纲

梦想橡皮擦

9月日更

数据库为何又如何走向分布式?

多颗糖

MySQL 数据库 分布式 raft TiDB

新思科技:部署数据安全战略,加强安全管理和隐私保护

InfoQ_434670063458

数据安全 新思科技

update 没有索引导致业务崩了,老板骂了一个小时

华为云开发者联盟

数据库 innodb 事务 索引 update 语句

计算机操作系统学习笔记 | 操作系统功能

Regan Yue

操作系统 9月日更

聊聊新工具Hutool

卢卡多多

POI 数据导入 9月日更

一个通用即时通讯(IM)系统的设计

OpenIM

云随想二:云时代,你如何采购软件?

FLASH

云原生 采购软件

翻转未来!钢铁之城重添色彩

脑极体

【Flutter 专题】47 图解新的状态管理 Provider (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

手撸二叉树之左子树之和

HelloWorld杰少

9月日更

源码解读Dubbo分层设计思想

vivo互联网技术

Apache dubbo 服务器 spi

华为云首席产品官方国伟:没有人拥有看到未来的水晶球,云上突围之路如何走?

华为云开发者联盟

云计算 云原生 数字化转型 华为云 伙伴云

大一 PingCAP、大二 JetBrains,专访 00 后开发者:千里冰封

郭旭东

开发者 采访 大学生

敬自由:破壁人华为,开启PC的无界探索

脑极体

Python中如何优雅的使用assert断言

王坤祥

Python assert

ECIC演讲精华|如何构建云原生应用下的高性能持久化存储?

焱融科技

技术 分布式 云原生 高性能 存储技术

FunTester抄代码之路

FunTester

Jmeter 测试框架 HttpClient FunTester ngrinder

Python——lambda 函数

在即

9月日更

macOS 制作 linux 启动盘

耳东@Erdong

Mac 软件 9月日更

密码学系列之:海绵函数sponge function

程序那些事

密码学 程序那些事 海绵函数

教你实现一个朴实的Canvas时钟效果

华为云开发者联盟

标签 函数 canvas 时钟

【LeetCode】栈的最小值Java题解

Albert

算法 LeetCode 9月日更

谈 C++17 里的 Visitor 模式

hedzr

c++ 设计模式 Design Patterns GoF设计模式

一行Java代码实现游戏中交换装备

华为云开发者联盟

Java 线程 游戏 Exchanger JDK 1.5

小白也能看懂的dubbo3应用级服务发现详解

捉虫大师

dubbo 服务发现 Dubbo3

5个非常重要的数据Oceanbase,TiDB,Cassandra,RocksDB,MemDB

hanaper

SaaS 102 | 做 SaaS 产品应该如何做决策?

Teddy Chan

创业 数据 SaaS 决策 电商SaaS

  • 需要帮助,请添加网站小助手,进入 InfoQ 技术交流群
Google的GData/Atom发布协议相对于微软限制太多_SOA_Hartmut Wilms_InfoQ精选文章