BT

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

面向资源的服务端框架的设计特征

| 作者 Dilip Krishnan 关注 0 他的粉丝 ,译者 马国耀 关注 1 他的粉丝 发布于 2009年6月15日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Dhananjay Nene,曾写过一篇记录REST的历史的好文章,在这里他探讨了设计一个面向资源的框架(ROF)应具备的几种特征,这篇文章的另一个探讨内容是尝试捕捉应用程序的细粒度对象模型与资源模型之间的关系。

对Dhananjay而言,由于一些流行的框架如Struts,Django和Ruby on Rails等,有几个特征是ROF理应具备的。然而,把它们明确地列举出来,并为其下个定义,可以促进ROF走向成功和流行。Dhananjay讨论了以下几个方面的特征。

ROF应有一个抽象层来将资源表示成端点

假设有一个Order资源,如果在OrderController上引入一个Approve方法,那么这种做法就和上述特征相违背。好的做法是建模一个OrderApproval资源,成功完成时,把Order资源的状态修改成“approved”

鉴于资源操作的一致性预期,这些动作将会魔术般地自动完成。

ROF应提供典型的生命周期管理的附加支持。(如,验证)

框架提供资源接口方法的默认实现[并且]框架也应允许开发者插入或覆盖自己的实现。[并支持生命周期管理的任务,如验证。]

ROF应可以让开发者覆盖和注册自己的方法以处理PUT,POST和DELETE操作带来的下游影响。

我曾把REST系统类比成一个DBMS系统,在这里客户端应用程序可以在数据库表(对应于REST的资源)上直接操作SQL语句,如 SELECT、INSERT、UPDATE、DELETE(对应于HTTP/REST中的GET、PUT、POST和DELETE),而业务逻辑可以被实现为触发器。因此,框架应该为开发者提供定义触发器的机制。

ROF应为开发者提供一种机制以让他们描述或映射资源抽象与实际程序结构之间的关系。

实现的方法很多,如XML, YAML, DSL和Annotation——任你选择。另外,还可以定义实际的对象(如POJO),它所映射的资源特征或这个类可以通过基于元数据的元数据编程让其在运行时暴露自己。框架应提供对(业务模型)关系的描述和内省(introspected)。

ROF应支持跨资源的外键,把资源表现成映射底层业务对象引用的URI。

资源通过URI引用其他资源,而底层业务对象通过对象引用指向其他业务对象。通过资源描述和URI映射,框架可提供URI和对象应用之间的透明的引用和/定位引用资源的机制。

以上列举出来的ROF特征看起来是RESTful服务理应具备的特征,而另外一些特征可能需要进一步的解释和讨论,或许只作为升华和完备。

ROF应提供用于定位资源的工厂方法,或者应允许其他资源或业务对象的注入。

开发者可能从两个层面使用框架,粗粒度(资源)或细粒度(业务对象)。框架应该提供对这类活动的支持。

ROF应允许资源或媒体类型描述与资源表示一起发送:因为REST支持媒体类型的自动发现和自动描述,框架也应该允许这类媒体类型的元数据信息对客户端可见。实际的元数据可以使用任何合适的典型标准描述,如RDFa,XML模式片段等。

尽管Dhananjay指出的这些特征已相当全面,但文章并没有强调非功能性方面的需求,如监视、审计和日志、事务管理、对象池等。欲了解详细内容一定要读原文
查看英文原文:Design Characteristics Of Resource Oriented Server Frameworks

评价本文

专业度
风格

您好,朋友!

您需要 注册一个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