BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

剖析微软的REST框架:Astoria

| 作者 Dflying Chen 关注 0 他的粉丝 ,译者 陈黎夫 关注 0 他的粉丝 发布于 2007年10月2日. 估计阅读时间: 5 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。
在最新的第十三期微软Architecture Journal杂志中,微软公司SQL Server团队的技术主管Pablo Castro详细地介绍了微软公司REST框架——Astoria的几个重要的特性。

首先,Pablo介绍说:
我认为Astoria是一个非常不错的REST框架。Astoria将实体/记录的概念统一用资源来描述,且这些资源可以通过URI的结构来体现出层次。 所有的资源都可以通过统一的HTTP接口获取并进行维护,且框架也允许我们沿用传统的Web开发方法对程序进行分层或缓存。
随后,Pablo解释了微软公司发起Astoria项目的原因,以及Astoria在当下流行的Web 2.0概念中的重要地位。
从服务器的角度来看,提供用于界面相关的资源显得较为易于理解,例如HTML、CSS以及图像文件等。不过提供数据却是另外一回事。至今为止,一般来讲与 数据打交道的交互过程应该发生于Web服务器和数据库服务器之间——似乎没有什么必要将数据直接暴露给运行于浏览器中的Web页面或是其他什么客户端软 件。但这个需求也恰好是Astoria框架的切入点。
与其他REST框架类似的是,Astoria也允许开发者使用更加富有“语意”的URL来访问以及维护互联网上的资源。为了给出直观的案例,Astoria开发团队还特意建立了一个演示服务器,将大家熟知的Northwind数据库的访问点通过HTTP协议直接暴露了出来。例如:
http://astoria.sandbox.live.com/northwind/northwind.rse/Customers
http://astoria.sandbox.live.com/northwind/northwind.rse/Customers[ALFKI]/Orders
Astoria还与微软公司的.NET框架完美地结合了起来,能够充分利用框架现有的各种强大的基础设施,Pablo说到。
对于.NET应用程序来说,Astoria框架提供了一个运行于.NET环境下的客户端类库,该类库能够自动将从Astoria服务中取得的数据封装为.NET 中的对象。这不但大大地简化了客户端应用程序开发者的工作,也能够很方便地与现有的使用.NET对象的组件结合起来使用。

Astoria用来定义数据架构的语法为实体数据模型(Entity Data Model,EDM),而EDM则已经得到了ADO.NET实体框架的内建支持。ADO.NET实体框架还提供了一个强大的映射机制,让开发者能够很容易 地将EDM架构和实际的关系型数据库映射起来。
不但如此,Astoria还可以支持其他非数据库类型(例如由LINQ查询语句得到)的数据源,并将其通过HTTP接口暴露出来。

Astoria的设计架构非常灵活且易于扩展,允许开发者在其内建的资源层次上根据实际需要创建额外的自定义业务逻辑。例如/Customers或/Products等:
[WebGet]
public static IQueryable CustomersByCity(NorthwindEntities db, string city)
{
    if (city == null || city.Length < 3)
        throw new Exception(“bad city”);
    var q = db.Customers.Where(“it.City = @city”, new ObjectParameter(“city”, city));
    // add user-based filter condition to q
    return q;
}
随后即可使用如下的URL访问上述自定义的业务逻辑,并传递相应的参数。
/MyCustomersByCity?city=Seattle
在安全性方面,Pablo及其团队成员把Astoria与ASP.NET内建的认证模型集成了起来,这也让我们能够很容易地在现有项目中引入该框架。
Astoria将通过调用ASP.NET的相关API来获取用户的认证信息,因此对于那些使用ASP.NET认证机制的应用程序来说,无须任何修改即可直接应用Astoria框架。
若想了解更多有关Astoria框架的信息,请参考Astoria团队的Blog 以及Pablo的Blog

查看英文原文:Behind Microsoft's Astoria REST Framework

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT