InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

文章:用Restlet创建面向资源的服务

作者 徐涵 发布于 2008年5月30日

领域
架构 & 设计,
企业架构,
语言 & 开发
主题
Web框架 ,
REST ,
Java ,
Web服务
标签
Restlet

随着REST设计思想逐渐深入人心,许多有助于简化REST式服务编程的新框架正不断涌现出来,而已有框架也在学习REST的风格与特性,这进而促进了对REST的关注。

众所周知,REST并不是一种架构(architecture),而是一种评判架构的方式。面向资源的架构(Resource-Oriented Architechture)是一种架构:它对设计施加约束,使你能够容易地把问题划分为一个个REST式资源(RESTful resources)。不过这些资源(resources)仍然是在抽象层面上的。仅当你通过具体的Web服务将它们暴露出来时,它们才成为实实在在的资 源。

如果打算从零开始编写服务(比方说用CGI脚本),那么可以用你喜爱的任何方式把资源转换成代码。但大部分服务并不是从零开始,而是用Web框架编写的。懂得REST的Web框架会在编程时施加一些约束,从而使你能够容易地以特定编程语言实现REST式资源。

本文节选自博文视点出版公司即将推出的经典著作《RESTful Web Services中文版》中的第12章《REST式服务框架》,将向你讲述如何用Restlet(用于Java)来编写面向资源的服务。

《RESTful Web Services中文版》向读者介绍了什么是REST、什么是面向资源的架构(Resource-Oriented Architecture,ROA)、REST式设计的优点、REST式Web服务的真实案例分析、如何用各种流行的编程语言编写Web服务客户端、如何 用三种流行的框架(Ruby on Rails、Restlet和Django)实现REST式服务等。不仅讲解REST与面向资源的架构(ROA)的概念与原理,还向读者介绍如何编写符合 REST风格的Web 2.0应用。本书详实、易懂,实战性强,提供了大量RESTful Web服务开发的最佳实践和指导,适合广大的Web开发人员、Web架构师及对Web开发或Web架构感兴趣的广大技术人员与学生阅读。

与此同时,博文视点还授权InfoQ中文站独家为大家提供额外的样章进行试读:欢迎下载第3章《REST式服务有什么不同》

阅读全文:用Restlet创建面向资源的服务

REST 发表人 haoxiang zhang 发表于
Re: REST 发表人 Xu Han 发表于
TR 发表人 yu jiang 发表于
Re: TR 发表人 Xu Han 发表于
Re: TR 发表人 Wang David 发表于
question 发表人 fan fan 发表于
Re: question 发表人 Wang David 发表于
Re: question 发表人 here weare 发表于
推荐大家看一下 JRest4Guice 发表人 cnoss cheng 发表于
  1. 返回顶部

    REST

    发表人 haoxiang zhang

    不是架构方式 ???

  2. 返回顶部

    Re: REST

    发表人 Xu Han

    REST是一种架构风格(architectural style),它是一组原则,而不是一种具体的架构。
    ROA(面向资源的架构)是一种具体的、符合REST架构风格(即符合REST原则)的架构。

  3. 返回顶部

    TR

    发表人 yu jiang

    模板变量的值被存放在请求的属性地图(attributes map)里(跟Rails例子中的params地图类似),



    这个Map译成地图,读起来觉得挺别扭的.

  4. 返回顶部

    Re: TR

    发表人 Xu Han

    这里是参照“网站地图”翻译的。欢迎分享更好的译法 :-)

  5. 返回顶部

    Re: TR

    发表人 Wang David

    我想 map这里是对应、映射的含义。
    是不是可以这样:

    模板变量的值被存放在请求中与变量映射(相对应)的属性里

  6. 返回顶部

    question

    发表人 fan fan

    "Restlet的思想是:HTTP客户端与HTTP服务器之间的差别,对架构来说无所谓。一个软件应可以既充当Web客户端又充当Web服务器,而无须采用两套完全不同的APIs。"
    这句话怎么讲?这里举的例子中没有看到这样的场景

  7. 返回顶部

    推荐大家看一下 JRest4Guice

    发表人 cnoss cheng

    项目地址:code.google.com/p/jrest4guice/


    特点:


    • * 基于GUICE,内置带事务的JPA实现

    • * 零配置式服务声明

    • * 服务的自动扫描注册

    • * 非侵入式,用户不需要实现特定的接口来实现Restful服务

    • * 支持Post. Get. Put. Delete操作

    • * 灵活的注入(支持上下文环境request/response以及参数的自动注入)

    • * 与JAAS的无缝集成

    • * 支持分布式资源对象

  8. 返回顶部

    Re: question

    发表人 Wang David

    在restlet中,client和server都作为Connector的子类存在于Component类中。

    Connector是他们共同的父类。

    在Component中同时存在client和server。

    只要构造了restlet的Component,客户端和服务端就同时存在了。
    他们是基于相同的运行环境,使用相同的资源。除了对外提供的方法不同外,没有较大的差别。

  9. 返回顶部

    Re: question

    发表人 here weare

    示例12-3 我运行了下 怎么抛异常:
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpConnectionManager
    ????

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffery Richter:Windows 8是微软的重中之重

Jeffery Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffery Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。