Restlet框架解读-2

1)代码结构
Restlet目前有三个分子版本,1.1.X,2.0.X,2.1.X,2.1.X是开发主干,有很多新的特性在添加和修改,本文主要解读2.0.X这个版本,同时会涉及到1.1.X的部分内容。
下载完restlet代码后,可以看到如下的目录结构

/+ org.restlet.* (restlet API)
+ org.restlet.engine.* (restlet的一个默认实现)
+ org.restlet.example.*
+ org.restlet.ext.*
+ org.restlet.test.*

restlet源码中主要包括三个部分,核心API,引擎,和扩展。
2)核心API
restlet是构建http协议之上的,按照http://roy.gbiv.com/pubs/dissertation/rest_arch_style.htm实现,所以在restlet的API中很多类名都是完全按照论文所提到的概念来设计。
核心API主要分为以下一个包:

  • Base package
  • Data package(针对数据的抽象)
  • Representation package(表示层的抽象)
  • Resource package(资源的抽象)
  • Routing package(请求路由)
  • Security package(安全)
  • Service package(服务)
  • Util package

详细的API说明可以查看http://wiki.restlet.org/docs_2.0/13-restlet/27-restlet.html
目前对restlet框架的代码结构有了一个简单的认识后,我们来看看restlet到底做了哪些工作。
restlet就是实现了HTTP协议下对一个URL资源的访问,所以restlet必然要实现HTTP协议,然后将请求路由到指定的处理类上,过程就这么简单,现在我们就来看看核心API,这里需要引入大师的文字:

Uniform REST interface. “The central feature that distinguishes the REST
* architectural style from other network-based styles is its emphasis on a
* uniform interface between components. By applying the software engineering
* principle of generality to the component interface, the overall system
* architecture is simplified and the visibility of interactions is improved.
* Implementations are decoupled from the services they provide, which
* encourages independent evolvability.” Roy T. Fielding

大概意思就是说明:REST架构区别与其他基于网络的软件架构最重要的特点就是REST强调组件之间接口统一。
所以在restlet核心API中所有的类都继承org.restlet.Uniform这个接口。

Uniform接口中只有一个handle方法,注意到Restlet这个类是一个抽象类,在restlet的wiki中说到,Restlet设计成抽象类完全是为了API设计,因为大家都知道,如果想更改一个接口,那么对他的实现影响会很大,如果有什么新特性需要添加,可以在这个抽象类中进行,这样不会直接影响到实现类,所以Restlet仅仅是一个抽象类,而没有提供抽象方法,这也是设计中的一个很好实践。

This entry was posted in Program and tagged , . Bookmark the permalink.