`
bluky999
  • 浏览: 719810 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

从RESTlet开始学习构建REST式架构的Java应用

阅读更多

目录

 

1REST式架构

2Roy的博士论文提纲

3对REST的理解(转载)

4从RESTlet开始,使用Java构建REST式架构的应用

 

 

正文

 

 

 

1 REST式架构

 

 这个词汇目前已经流行到疯了。。。但凡商业项目都想跟REST粘点边吧! 首先了解一下那篇传说中的博士学位论文:

 

地址: http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm 您可以随时取拜读或者下载PDF!

 

UNIVERSITY OF CALIFORNIA, IRVINE

Architectural Styles and
the Design of Network-based Software Architectures

DISSERTATION

submitted in partial satisfaction of the requirements for the degree of

DOCTOR OF PHILOSOPHY

in Information and Computer Science

by

Roy Thomas Fielding

2000

 

Dissertation Committee:
Professor Richard N. Taylor, Chair
Professor Mark S. Ackerman
Professor David S. Rosenblum

 

 

2 基本章节:

CHAPTER 1: Software Architecture

        1.1 Run-time Abstraction
        1.2 Elements
        1.3 Configurations
        1.4 Properties
        1.5 Styles
        1.6 Patterns and Pattern Languages
        1.7 Views
        1.8 Related Work
        1.9 Summary

    CHAPTER 2: Network-based Application Architectures

        2.1 Scope
        2.2 Evaluating the Design of Application Architectures
        2.3 Architectural Properties of Key Interest
        2.4 Summary

    CHAPTER 3: Network-based Architectural Styles

        3.1 Classification Methodology
        3.2 Data-flow Styles
        3.3 Replication Styles
        3.4 Hierarchical Styles
        3.5 Mobile Code Styles
        3.6 Peer-to-Peer Styles
        3.7 Limitations
        3.8 Related Work
        3.9 Summary

    CHAPTER 4: Designing the Web Architecture: Problems and Insights

        4.1 WWW Application Domain Requirements
        4.2 Problem
        4.3 Approach
        4.4 Summary

    CHAPTER 5: Representational State Transfer (REST)

        5.1 Deriving REST
        5.2 REST Architectural Elements
        5.3 REST Architectural Views
        5.4 Related Work
        5.5 Summary

    CHAPTER 6: Experience and Evaluation

        6.1 Standardizing the Web
        6.2 REST Applied to URI
        6.3 REST Applied to HTTP
        6.4 Technology Transfer
        6.5 Architectural Lessons
        6.6 Summary

 


3 转载下文以帮助新手理解:

 

在RIA的曙光已经从地平线下面露出来的时候,Web的全面service化已经不是个遥不可及的事情。记得2000-2001年,以微软为首的一些大公 司鼓吹Web Services,当时有人认为2003年各大网站就会急急忙忙地向Web Services迁徙。但历史证明,公众互联网站根本不认同这个方向,预见中的Web Services大跃进没有出现。Web Services使得网站的服务既可以通过页面来发布,也可以通过可编程的Web Services API形式发布,这本身是很好的事情,为什么人们不接受呢?原因固然是多方面的,但是互联网社群不接受为企业应用量身定做的、笨重累赘的 SOAP/WSDL/UDDI,是不可忽略的因素。这个时候,一种新的Web Services模型就开始引起人们的注意。2000年,著名的Web技术专家、HTTP等诸多Web协议的主要起草人Roy Fielding从加州大学Irvine分校获得博士学位,其博士学位论文 中 描述了一种分布式软件的体系结构风格,被称为REST。这种风格完全符合已经建立起来的Web体系结构,并且具有天然的简单性、可延展性。自此之 后,REST成为SOAP之外另一种主流的Web Services实现模型。很快,人们发现,开发者更加偏爱REST模型.eBay、Amazon等巨型网站早在2004年就发现,大约有60%的Web Service客户通过REST来使用它们所提供的网络服务,此后这个比例一直在增加。那么,REST到底是什么东西呢?

    简而言之,REST代表“具备表像的状态迁移(REpresentational State Transfer)。注意,我把representation翻译为表像,是为了更好地表达其本意,如果按字面翻译,应为“表现”。REST这样理解 Web:Web是资源的集合,每一个资源都有一个或多个URI无疑义地引用。REST软件构件可以获得某项资源的一个“表像”,从这个表像中,REST构 件可以了解到该资源的当前状态,从而在该项资源上实施恰当的操作,并且可以把这个表像传递给其他的REST构件。当REST构件在该资源上实施了某些操作 之后,将导致该资源的状态发生迁移,从而获得新状态的表像。这种解释当然是比较晦涩的了。但换一种说法大家就会非常清楚。当我们在浏览Web页面的时候, 这个Web页面就是Web应用当前状态的表像,而我们和我们的浏览器一起构成了一个REST构件。当你在Web页面上执行某项操作(点击链接、提交表单, 等等),你就是“在某个资源上实施了一个操作”,就会导致系统的状态发生迁移,迁移到另一个状态中,而新的状态以新的表像(页面)展示给你。这不正是我们 每天都重复几百上千次的事情吗?所以我们用REST已经十多年了。只不过,Roy Fielding在其论文中表明,REST其实是一种分布式软件的通用风格,可以被用来构建相当广泛的互联网应用。

    Roy Fielding对REST的深刻理解直接影响到HTTP协议的制定。在1999年完成的HTTP 1.1(RFC2616)中,HTTP增加了PUT、DELETE两个命令,从而使HTTP的主要命令扩充为四个(GET、POST、PUT、 DELETE,未将次要命令如OPTION、HEAD等计入)。Roy Fielding认为,这四个命令不多不少恰恰能完成REST风格的应用。换言之,只要有这四个动词,就可以在REST范围内做出任何想要的分布式应用。 这是多么令人惊讶的结论!我们在平时的面向对象设计中,通常要给每一个对象定义的动作(方法)都不少于四个,而REST却断言,四个就够了,多一个浪费, 少一个不行。如果Fielding博士是对的,那么互联网上的编程工作就可以大大简化,HTTP体系下天生的轻便、灵活、简单、可扩展的特性都唾手可得。

    然而,遗憾的是,尽管HTTP很流行,四个动词的语义清清楚楚地写在RFC2616里面,但真正很好地理解了其中含义的人却非常少。世界上充满了不求甚解 就撸起袖子蛮干的聪明人,所以浏览器出现已经十多年了,却还是只支持GET和POST两个方法,这使得REST的推行不能一帆风顺。

    Ajax的出现标志着RIA时代逐渐走来,客户端将不再是清一色的HTML页面,也可以是一个Ajax的程序,通过XMLHttp向服务器发起PUT和 DELETE请求。这样,就要求服务器端在四动词的背景下重新思考应用的构造。传统上,服务器端应用只是通过REST风格将部分服务暴露出来。而 Rails 1.2则直接将REST直接作为构建整个Web应用的中心,这才是Rails 1.2的独特之处,也是张显Rails社群离经叛道和卓尔不群的地方。为了要采纳REST风格,Rails 1.2革新了Web应用的构造思想,整个领域建模的思想都有所变化。现在整个Rails社群都应当准备向REST时代迁移。

 

 

 

 

4 RESTlet :  Lightweight REST framework

 

地址: http://www.restlet.org/

 

Restlet is a lightweight REST framework for Java that lets you embrace the architecture of the Web and benefit from its simplicity and scalability. By leveraging our innovative REST engine, you can start blending your Web Sites and Web Services into uniform Web Applications!

 

  Restlet has a light core but thanks to its pluggable extension, it is also a comprehensive REST framework for Java. It supports all REST concepts (Resource, Representation, Connector, Component, etc.) and is suitable for both client and server Web applications.

 

  It supports major Web standards like HTTP, SMTP, XML, JSON, WADL, and Atom. Many extensions are also available to integrate with Servlet, Spring, Jetty, Grizzly, Simple, JAXB, JAX-RS, JiBX, Velocity, or FreeMarker.

 

A GWT version is also available and is a direct port of the main Java version.

 

 

PS:开始学习RESTlet的基本过程

1 下载RESTlet (比如restlet-1.1.4.exe) ;

2 安装:windows上封装为一个程序了,其实安装后主要适用其中的Lib文件夹下的jar包;

3 新建web项目,从RESTlet导入需要的jar包到新建项目的lib中;

4 编写helloworld程序,并运行测试!!!(可以在servlet容器中运行,也可以作为单独的java程序运行,其实是内建的小服务器)

 

代码可以参考RESTlet网站上的指南firstSteps:  http://www.restlet.org/documentation/1.1/firstSteps

 

 

 

 

 

这里有一些人的观点,仅供参考:


下面是一些牛人对Web Service的理解,个人觉得很准确:
1. WWW中的Web所承载的是人所理解的数据,Web Service中Web用来承载机器程序所理解的数据。
2. Web Service发展中最大的障碍不是协议(Protocol),WWW已经证明HTTP是非常成熟的应用层协议,定义庞杂的SOAP协议与相关WS-×规范,确实是浪费时间。最大的障碍是数据的Schema-每个应用领域的数据Schema。
3. 使用现有WWW的架构来构建Web Service,核心概念包括URI、Resource、Representation、State、HTTP。

 

分享到:
评论
2 楼 bluky999 2009-04-17  
JavaEye上也有不少的RESTlet资源,比如RESTlet网站上的 firstSteps被翻译成了中文:

RestLet-第一步(翻译) http://www.iteye.com/topic/182843
1 楼 bluky999 2009-04-17  


Cool URIs don't change

[url]
http://www.w3.org/Provider/Style/URI[/url]

相关推荐

    RESTLET框架学习书籍

    - **RESTLET框架简介**:RESTLET是一个面向对象的Java开源框架,用于构建RESTful应用和服务。它旨在简化Web应用开发,允许开发者充分利用REST架构的优势。RESTLET提供了一系列丰富的类库和支持,帮助开发者更容易地...

    Web Api调试工具 Chrome插件Restlet-Client-REST-API-Testing

    REST(Representational State Transfer)是一种广泛采用的Web服务架构风格,它强调资源的表述和状态转换,通常通过JSON或XML格式传递数据。 Chrome插件Restlet Client的主要特点包括: 1. **请求构建器**:用户...

    restlet restful

    Restlet是Java领域的一款开源框架,专门用于构建REST(Representational State Transfer)风格的Web服务。RESTful是一种软件架构风格,设计模式,是基于HTTP协议的Web服务设计原则,强调资源的概念,通过URI来定位...

    restlet-framework-java:领先的Java REST API框架

    得益于Restlet Framework强大的路由和过滤功能,统一的客户端和服务器Java API,开发人员可以构建安全且可扩展的RESTful Web API。 它适用于所有主要平台(Java SE / EE,Google App Engine,OSGi,GWT,Android)...

    restlet

    RESTlet是一款开源框架,专为构建基于REST(Representational ...通过学习这些资料,开发者可以深入理解RESTlet的工作原理,掌握如何使用RESTlet构建RESTful服务和客户端应用,从而提升其在Web服务开发领域的专业技能。

    RESTLET IN ACTION

    **RESTLET IN ACTION** 这本书是一部关于RESTlet框架的详细介绍,旨在帮助读者更好地理解和掌握REST架构,并使用RESTlet框架来构建高质量的Web应用程序和服务。本书分为三个部分,分别是:“开始启动(Getting ...

    org.restlet-2.3.0.jar 最新版本

    在Java开发领域,REST(Representational State Transfer)架构风格已经成为构建Web服务的主流选择,而org.restlet-2.3.0.jar则是实现RESTful API的重要库。此版本作为最新的迭代,具有卓越的兼容性和稳定性,旨在为...

    Restlet学习的三篇文章

    REST是一种轻量级的架构风格,常用于构建高效、可扩展的网络应用程序。它强调资源的概念,通过URI(统一资源标识符)来定位,并通过HTTP方法(如GET、POST、PUT、DELETE)进行操作。下面,我们将深入探讨基于JAX-RS...

    Restlet开发实例

    你将学习如何在Restlet应用中使用Spring的Bean,以及如何通过Spring MVC和Restlet的协同工作,实现更灵活和强大的REST服务。 总结以上内容,Restlet开发实例系列涵盖了以下几个关键知识点: 1. JAX-RS与Restlet的...

    基于Spring的Restlet实例

    而Restlet是一个专注于REST(Representational State Transfer)架构风格的Java库,它允许开发人员轻松地创建RESTful Web服务和客户端。将Spring与Restlet结合,可以利用Spring的强大功能来构建高效、可扩展的REST...

    Restlet所需要的所有jar包

    REST是一种轻量级的架构风格,常用于构建高效、可扩展的网络应用程序。本压缩包包含Restlet框架运行所需的全部jar文件,使得开发者可以便捷地在Java环境中开发、测试和部署RESTful服务。 Restlet框架的核心组件包括...

    restlet所需jar包一

    REST是一种轻量级的架构风格,常用于构建高效、可扩展的网络应用程序。它强调资源的表述,通过HTTP协议进行交互,支持多种数据格式,如JSON和XML。Restlet框架提供了一组组件和工具,使得开发者能够更容易地实现REST...

    restlet-jee-2.2.2

    这个版本的发布旨在为Java EE开发者提供一个高效且灵活的工具,用于构建符合REST原则的应用程序。以下是关于Restlet和其在Java EE中的应用的一些关键知识点: 1. **RESTful架构**:Restlet框架的核心理念是遵循REST...

    restlet1.1文档

    Restlet是一个用Java编写的轻量级框架,旨在支持REST(Representational State Transfer)架构风格的应用程序开发。它简单易学,适合那些希望利用REST原则构建应用程序和服务的开发者。Restlet的核心优势在于其灵活...

    Restlet in action 英文 完整版

    **Restlet** 是一个灵活且强大的Java框架,用于构建RESTful Web服务。它提供了一种简单的方法来处理HTTP请求和响应,并允许开发者创建符合REST架构原则的服务。该框架支持多种传输协议(如HTTP、HTTPS、FTP等),并...

    Restlet与Spring 集成

    Restlet是一个轻量级的Java框架,专门用于构建REST(Representational State Transfer)架构风格的应用程序。它遵循JAX-RS(Java API for RESTful Web Services)规范,提供了丰富的API来处理HTTP请求和响应,简化了...

    RESTlet-jee-2.0.9自用.rar

    总的来说,RESTlet-jee-2.0.9自用.rar这个压缩包是一个关于使用RESTlet框架在JEE环境中构建REST服务的学习资源包。它可能包括了教程、示例代码以及库文件,可以帮助开发者快速上手并理解如何利用RESTlet和JAX-RS实现...

    Restlet开发的Basic认证

    Restlet是一个轻量级的Java Web服务开发框架,它提供了构建RESTful(Representational State Transfer)应用程序的工具和API。REST是一种架构风格,强调简洁、无状态和可缓存的网络交互,常用于构建高性能、高可用性...

    RESTLET开发

    该框架支持广泛的REST式系统构建,不仅仅局限于RESTful Web服务。 RESTLET的设计受到了多种Web开发技术的影响,包括Servlet API、JSP(JavaServer Pages)、HttpURLConnection以及Struts等。RESTLET的核心目标之一...

    restlet处理各种请求方式参考示例

    Restlet是一款轻量级的Java库,专门用于构建RESTful Web服务。REST(Representational State Transfer)是一种架构风格,强调简洁、无状态和基于标准的Web服务设计。本示例将详细阐述如何使用Restlet框架处理HTTP...

Global site tag (gtag.js) - Google Analytics