写点什么

Astoria:微软的 REST 式数据服务

  • 2007-05-14
  • 本文字数:1855 字

    阅读完需:约 6 分钟

MIX 07 会议上,微软宣布了 Astoria 项目,这个项目能通过一个 REST 化的方式将数据以 Web 上的数据服务展示。 Astoria 在线服务网页描述了微软 Astoria 项目的目标:

……使得应用可以以数据服务的方式展现数据,然后被应用在企业网络和互联网上的 Web 客户端中。数据服务是通过 HTTP 获取的,URI 用来标识以服务形式存在的不同信息。数据服务之间的交互是通过像 GET、POST、PUT 和 DELETE 等这样的 HTTP 动词来实现的,这些交互中的数据转换是由像 XML 和 JSON 这样简单的格式表示的。

微软关于 Astoria 的官方概览文档阐述了数据是如何通过 Astoria 数据服务来定位和表示的。为了用 Astoria 数据服务定位数据,需要用到下面的定位模式: http://host/vdir//{{<[predicate]>}。比如 URI http://myserver/data.svc/Customers 表示指向一个包含所有客户实例的资源。单个的客户可以通过比如 http://myserver/data.svc/Customers[ALFKI] 这样的资源 URI 指定,这儿的“ALFKI”表示客户数据中的唯一键值(Key)。

谓词可以被整合进资源 URI 中,比如 http://myserver/data.svc/Customers[City eq ‘London’],还有一些控制输出的查询字符串等:

http://myserver/data.svc/Customers?$orderby=City
http://myserver/data.svc/Customers?$top=5
http://myserver/data.svc/Customers?$skip=30&$take=10

关于输出和数据表示,Astoria 支持 XML、JSON 和 RDF+XML 的子集等,默认的数据表示是 XML,比如 http://myserver/data.svc/Customers[ALFKI] 可能会有如下的响应:

复制代码
<span><</span><span>DataService</span> <span>xml:base</span><span>="http://myserver/data.svc"</span><span>></span>
<span><</span><span>Customers</span><span>></span>
<span><</span><span>Customer</span> <span>uri</span><span>="Customers[ALFKI]"</span><span>></span>
<span><</span><span>CustomerID</span><span>></span>ALFKI<span><span>CustomerID</span><span>></span>
<span><</span><span>CompanyName</span><span>></span>Alfreds Futterkiste<span><span>CompanyName</span><span>></span>
<span><</span><span>ContactName</span><span>></span>Maria Anders<span><span>ContactName</span><span>></span>
<span><</span><span>ContactTitle</span><span>></span>Sales Representative<span><span>ContactTitle</span><span>></span>
<span><</span><span>Address</span><span>></span>Obere Str. 57<span><span>Address</span><span>></span>
<span><</span><span>City</span><span>></span>Berlin<span><span>City</span><span>></span>
<span><</span><span>Region</span> <span>/></span>
<span><</span><span>PostalCode</span><span>></span>12209<span><span>PostalCode</span><span>></span>
<span><</span><span>Country</span><span>></span>Germany<span><span>Country</span><span>></span>
<span><</span><span>Phone</span><span>></span>030-0074321<span><span>Phone</span><span>></span>
<span><</span><span>Fax</span><span>></span>030-0076545<span><span>Fax</span><span>></span>
<span><</span><span>Orders</span> <span>href</span><span>="Customers[ALFKI]/Orders"</span> <span>/></span>
<span><span>Customer</span><span>></span>
<span><span>Customers</span><span>></span>
<span><span>DataService</span><span>></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

根节点上的“DataService”永远包含由服务表示的任何资源的基准 URI。代表关联资源的导航节点包含相关的 URI。比如客户“ALFKI”的订单是由根节点上的基准 URI 和订单节点里的相关 URI 一起组成的:“ http://myserver/data.svc ” + “/” + “Customers[ALFKI]/Orders”。

根据微软的说法,Astoria 提供了一种能实现提供数据的 REST 化 Web 服务简单方式。除了可以通过 GET 从数据服务中取数据,数据还可以通过 HTTP PUT 或者 HTTP POST 更新和增加。

Udi Dahan 却对 Astoria 带来的好处和适用性以及微软的数据服务方式表示怀疑

但是我不得不说,我从一开始就反对那些“数据服务”。REST 方式大部分情况下应用在巨型的资源上——但这儿好像只是用在数据库里的一张表里。看看一些关于 REST 和 SOA 的讨论就知道了。

但是, Danny Ayers 却认为微软通过Astoria 看到了语义网的希望 Alex James 还总结了一些关于 Astoria 争论的概览。

2007-05-14 20:111231

评论

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

Camtasia入门技巧之视频剪辑

淋雨

视频剪辑 Camtasia 录屏软件

阿里集团业务驱动的升级 —— 聊一聊Dubbo 3.0 的演进思路

阿里巴巴中间件

云计算 阿里云 云原生 dubbo 中间件

iOS面试·一个iOS程序员的BAT面试全记录(内含百度+网易+阿里面试真题)

iOSer

ios 面试 iOS 知识体系

PancakeSwap交易所市值管理机器人开发

Geek_23f0c3

市值管理机器人开发 PancakeSwap交易所 交易所机器人

音视频的这些功能你知道吗?

anyRTC开发者

音视频 屏幕共享 智能降噪

新时代程序员都用什么写代码?

程序员鱼皮

Java Python 大前端 Web 开发工具

阿里内部最新出炉“SpringCloudAlibaba笔记”号称微服务界的里程碑!

Java 编程 架构 微服务 计算机

耗时半年,堪称奇迹!阿里架构师整合出258W字Java全栈面试题

钟奕礼

Java 程序员 架构 面试 计算机

因聚而生 | 图扑受邀参加“生态融合,智创未来”大会

一只数据鲸鱼

数据可视化 数字孪生 智慧工业 智能制造

为什么“内存管理”漏洞值得你的绝对关注!

鉴释

代码审查 内存 代码

漏洞非小事,金融服务机构如何对抗代码缺陷?

鉴释

金融科技 代码安全检测

抓住“开源盛世“,这个工具你必须了解一下

鉴释

开源 代码安全

5000页?一份字节跳动Java面试全解手册发布!瞬间登顶各大搜索栏

钟奕礼

Java 编程 程序员 架构 面试

彩印图文版《Elasticsearch实战》文档,阿里内部共享,堪称精品

白亦杨

Java 编程 程序员 架构师 计算机

支持60+数据传输链路,华为云DRS链路商用大盘点

华为云开发者联盟

华为云 DRS

赖建新:关于静态代码分析的问与答

鉴释

静态代码分析

鉴释陈新中:源代码安全在物联网时代的重要性

鉴释

物联网 源代码

不保护数据的代价!

鉴释

数据 数据安全

真香!180页100+题15W+字解析的《Java高级面试指南》,果断收下

Java 编程 程序员 架构师

把凭据嵌入源代码,来看看你的代码里有这样的操作吗?

鉴释

代码安全

阿里秋招面试必问的几个知识点:Spring+Redis+MySQL+HashMap+多线程,不看我真的怕你后悔

Java 程序员 架构 面试 计算机

字节大牛的1850页Leetcode刷题笔记外泄!用实力折服众人

进击的王小二

Java 面试 算法 LeetCode

从零开始学习3D可视化之数据对接(2)

ThingJS数字孪生引擎

大前端 数据 可视化 数字孪生

IDC报告深度解析:谁将领跑中国RPA市场?

ToB行业头条

RPA IDC

数字经济时代下,区块链如何助力数字产业发展?

旺链科技

区块链 分布式存储 数字经济

互操作性和去信任化的两难困境,到底需要治标还是治本?

CECBC

给需要关心安全的技术人员的一些建议

鉴释

网络安全 安全

鉴释获得 A+ 轮融资,将加强对新技术的投资并扩展中国团队规模

鉴释

企业融资 创业公司

华为云MVP程云:知识化转型,最终要赋能一线

华为云开发者联盟

人工智能 自然语言处理 机器学习 华为云 智能问答机器人

ES本地debug详解

泽睿

ES 搜索引擎;

真的强!来自扫地僧总结的39W字上千道Java一线大厂面试题手册,成功助我拿下蚂蚁金服offer!

钟奕礼

Java 编程 程序员 架构 面试

Astoria:微软的REST式数据服务_.NET_Hartmut Wilms_InfoQ精选文章