写点什么

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:111042

评论

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

会员业务基于Cloud KMS的数据安全应用

爱奇艺技术产品团队

数据安全法 Cloud KMS

联想新IT引擎引领智能化变革,助力“中国力量”更加强大

科技范儿

【SoCC2018论文】DAGOR:微信「大规模微服务过载控制系统」

OpenIM

北鲲云超算平台凝聚技术实力,赋能高算力需求行业加速发展

北鲲云

App 不想被“点名”,mPaaS 隐私合规检测为开发者护航数字生态建设

蚂蚁集团移动开发平台 mPaaS

移动开发 mPaaS 监管合规 隐私安全

【墨天轮专访第四期】华为云GaussDB苏光牛:发挥生态优势,培养应用型DBA

墨天轮

数据库 华为云 GaussDB

数字化助力能源高效利用

CECBC

用诸葛孔明的智慧,读懂新型数据中心的“四新”机遇与产业逻辑

脑极体

想要入职阿里P6?最少啃完这本500页Java并发多线程源码笔记

Java 编程 面试 多线程 阿里

阿里官方保姆级Java技术图谱发布!够学到春节了,赶紧收藏!

Java 面试 阿里 大厂 金九银十

开源应用中心|动手自建一个超高度自由的个人知识库,原来这么容易!

开源

京东云金秋上云特惠进行中!扫码参与活动

京东科技开发者

云计算 云主机 大促

kube-ovn 组网结构

Geek_f24c45

k8s Kube-OVN cni

百度智能云开物工业互联网平台解决方案亮相2021服贸会成果发布会

百度大脑

人工智能 服贸会

面对面小程序开源

OpenIM

上线半天下载量破100W!美团大佬的Java性能调优实战手册,超详细

Java 编程 面试 性能调优

阿里后端优化这么恐怖?看完这20W字Java性能实战经验手册,最少P7

Java 阿里巴巴 面试 性能调优 金九银十

交易所刷量机器人定制开发案例(源码搭建)

量化系统19942438797

交易所 做市机器人 自动刷量机器人

GraphQL 快速入门【1】简介

码语者

Rest graphql

守护油田安全,EMQ X 在石油石化危化品监测管理中的应用

EMQ映云科技

物联网平台 物联网 IoT 边云协同 emq

亚信科技AntDB数据库国产化进程加速,计费上云再下一城

亚信AntDB数据库

实践案例 9月日更

流媒体:依托于声网的连麦解决方案

声网

音视频 流媒体

低代码时代来临,织信Informat携手低码星球探讨「企业数字化转型之路」

优秀

低代码

浪潮云洲发布标识解析数据网关产品

工业互联网

前端技术概览

数据库 大数据 时序数据库 tsdb 数据智能

让 Serverless 应用开发更简单,Serverless Devs 2.0 全新发布

Serverless Devs

开源 Serverless

【得物技术】浅谈重复http请求的取消

得物技术

方法 HTTP 场景 crud 请求

Chrome前端调试技巧分享

华为云数据库小助手

大前端 调试 GaussDB 华为云数据库

Elasticsearch 原理解析(介绍)

ZzC🍖

搜索引擎 elasticsearch

如何给技术部员工做考核?

石云升

团队管理 管理 引航计划 内容合集 9月日更

测试九剑之-破箭式

薛飞

自动化测试 测试管理

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