RESTful Web应用程序是什么意思?

时间:2012-06-20 09:36:52

标签: java php web-services rest

Web服务是一种可以通过Web(Http)由其他程序访问的功能。为了澄清一点,当您在PHP中创建一个输出HTML的网站时,其目标是浏览器,并且通过扩展,人们在浏览器中阅读该页面。 Web服务不是针对人类,而是针对其他程序。

  1. SOAP和REST是创建WebServices的两种方式。如果我,纠正我 我错了吗?
  2. 我可以通过其他方式创建WebService吗?
  3. 完全RESTful Web应用程序是什么意思?

2 个答案:

答案 0 :(得分:4)

  1. 正确
  2. W3C将“Web service”定义为“旨在支持网络上可互操作的机器对机器交互的软件系统”。
  3. 完全RESTful服务是遵循所有的服务或者Roy Fielding的论文Architectural Styles and the Design of Network-based Software Architectures中所述的架构约束。这是一个很长的阅读,有很多解释。一个好的开始是熟悉Richardson Maturity Model注意:声称为RESTful的大多数Web服务仅在该模型中为level 2

答案 1 :(得分:0)

我认为要了解什么是完全RESTful服务,您必须了解RESTful服务和标准Web服务之间的区别。它在甲骨文的JEE6教程中表现得非常好:

  

NonRESTful WebServices(在Java中称为JAX-WS):大型Web服务使用XML消息   遵循简单对象访问协议(SOAP)标准,这是一种定义的XML语言   消息体系结构和消息格式。这种系统通常包含机器可读的   服务提供的操作的描述,写在Web服务描述中   语言(WSDL),一种用于语法定义接口的XML语言。   SOAP消息格式和WSDL接口定义语言已经获得   广泛采用。许多开发工具(如NetBeans IDE)都可以减少   开发Web服务应用程序的复杂性。   基于SOAP的设计必须包含以下元素。

     

■必须建立正式合同来描述Web服务提供的接口。      WSDL可用于描述合同的细节,其中可能包括消息,     操作,绑定和Web服务的位置。您也可以处理SOAP    JAX-WS服务中的消息,而不发布WSDL。

     

■体系结构必须满足复杂的非功能需求。很多网络服务      规范解决了这些要求并为它们建立了一个共同的词汇表。     示例包括交易,安全性,寻址,信任,协调等。

     

■体系结构需要处理异步处理和调用。在这种情况下,      标准提供的基础架构,例如Web Services Reliable Messaging     (WSRM)和API,例如JAX-WS,以及它们的客户端异步调用    支持,可以开箱即用。

     

RESTful Web服务(在Java中作为JAX-RS)   在Java EE 6中,JAX-RS提供了Representational State Transfer(RESTful)的功能   网页服务。 REST非常适合基本的即席集成方案。 RESTful Web服务,   通常比基于SOAP的服务更好地与HTTP集成,不需要XML消息   或WSDL服务-API定义。   Project Jersey是JAX-RS规范的生产就绪参考实现。   Jersey实现了对JAX-RS规范中定义的注释的支持   开发人员可以轻松地使用Java和Java虚拟机构建RESTful Web服务   (JVM)。

     

Web服务的类型   因为RESTful Web服务使用现有的着名W3C和Internet工程任务   Force(IETF)标准(HTTP,XML,URI,MIME)并具有轻量级基础架构   允许使用最少的工具构建服务,开发RESTful Web服务是便宜的   因此采用的障碍非常低。您可以使用NetBeans等开发工具   IDE进一步降低了开发RESTful Web服务的复杂性。   当满足以下条件时,RESTful设计可能是合适的。

     

■Web服务完全是无状态的。一个好的测试是考虑是否互动      可以在重启服务器后继续存在。

     

■可以利用缓存基础架构来提高性能。如果是web服务的数据      返回不是动态生成的,可以缓存,即Web的缓存基础结构     可以利用服务器和其他中介本身提供的改进    性能。但是,开发人员必须小心,因为这样的缓存仅限于   大多数服务器的HTTP GET方法。

     

■服务生产者和服务使用者对上下文有相互理解      内容被传递。因为没有正式的方式来描述Web服务     接口,双方必须在描述数据的模式上进行带外协议    交换和有意义地处理它的方法。在现实世界中,大多数商业广告   将服务公开为RESTful实现的应用程序也会分发所谓的   增值工具包,描述流行编程中开发人员的接口   语言。

     

■带宽特别重要,需要加以限制。 REST特别有用      有限配置文件的设备,如PDA和移动电话,其头部开销     并且必须限制XML有效负载上的其他SOAP元素层。

     

■可以使用a轻松启用Web服务交付或现有网站的聚合      RESTful风格。开发人员可以使用JAX-RS和Asynchronous等技术     带XML的JavaScript(AJAX)和Direct Web Remoting(DWR)等工具包    他们的Web应用程序中的服务。服务可以是,而不是从头开始   使用XML公开并被HTML页面使用而不会显着重构   现有的网站架构。现有的开发人员会因此而更有效率   添加他们已经熟悉的东西,而不是从头开始   用新技术。

     

决定使用哪种类型的Web服务

     

基本上,您可能希望使用RESTful Web服务在Web上进行集成并使用big   具有高级质量的企业应用程序集成方案中的Web服务   服务(QoS)要求。

     

■WebServices:满足企业中常见的高级QoS要求      计算。 [..]

     

■RESTfull:可以更轻松地编写应用REST样式的部分或全部约束的Web应用程序,以在应用程序中引入所需的属性,例如松散耦合     (在不破坏现有客户端的情况下,发展服务器更容易),可扩展性(从小而小    增长)和架构简单性(使用现成的组件,如代理或HTTP   路由器)。您可以选择将JAX-RS用于Web应用程序,因为它更容易使用   许多类型的客户端在启用服务器端的同时使用RESTful Web服务   进化和扩展。客户可以选择使用服务的某些或所有方面并进行混搭   与其他基于网络的服务一起使用。

相关问题