- 浏览: 1587028 次
- 性别:
- 来自: 吉林
文章分类
- 全部博客 (624)
- C/C++ (33)
- Java (181)
- 网络相关 (7)
- 我爱篮球 (3)
- 也爱足球 (4)
- 杂谈 (1)
- 系统架构 (3)
- Web Service (14)
- Framework (3)
- 系统命令 (8)
- 管理平台相关 (8)
- 其它 (35)
- Websphere (1)
- Struts2 (24)
- Hibernate (16)
- Spring (23)
- javascript (20)
- jquery (23)
- html/css/div (28)
- 数据库 (40)
- JavaWeb (27)
- 设计模式 (2)
- 文档编写 (3)
- SVN (5)
- Ant (1)
- Maven (13)
- 软件项目管理 (8)
- AOP (1)
- kindeditor (1)
- JSON (2)
- Servlt/JSP (4)
- WordXML (2)
- XML (12)
- 面试相关 (7)
- Tomcat (11)
- 性能与调优 (29)
- 职业发展 (2)
- 操作系统 (7)
- AJAX (2)
- DWR (1)
- Eclipse (12)
- 持续集成 (3)
- 批处理命令 (1)
- Mozilla Rhino (2)
- 新鲜技术 (18)
- Apache mina (2)
- 底层技术 (18)
- Linux (22)
- 新鲜技术,IT历史 (1)
- 敏捷开发 (1)
- 版本控制 (5)
- 较火技术 (7)
- 集群 (2)
- Web前端 (13)
- 报表工具 (3)
- 网站架构 (5)
- 大数据 (8)
- 分布式存储 (5)
- 云计算 (8)
- TCP/IP协议 (1)
- 负载均衡 (3)
- 硬件 (1)
- 表现层技术 (3)
- Velocity (3)
- jvm (6)
- 并发编程 (10)
- hadoop (8)
- 数据结构和算法 (12)
- 计算机原理 (1)
- 测试驱动开发-TDD (3)
- 开发技巧 (1)
- 分词器 (1)
- 项目构建工具 (2)
- JMX (4)
- RMI (1)
- 测试技术 (22)
- 网络完全 (1)
- Git (4)
- apache开源包 (4)
- Java常用 (1)
- mock (2)
- OSGi (2)
- MongoDB (1)
- JBPM (1)
- Storm (3)
- mysql (2)
- telnet (1)
- 正则表达式 (1)
- bootstrap (4)
- Apache ActiveMQ (1)
- redis (9)
- Nginx (2)
- rsync+inotify文件同步 (2)
- testng (1)
- 原型设计工具 (1)
- 工程能力 (1)
- 风险控制 (3)
- ibatis (1)
- 分布式 (4)
- 安全技术 (1)
- 计算机基础 (4)
- 消息中间件 (1)
- UML (2)
最新评论
-
u012236967:
java命令执行jar包(里面的main函数)的方式(包括依赖其它的jar包问题) -
世界尽头没有你:
Selenium自动化测试从入门到精通(Java版)百度网盘地 ...
自动化测试工具 Selenium WebDriver 入门教程(针对主流浏览器) -
小小西芹菜:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
dwr实现Reverse Ajax推送技术的三种方式 -
hellozhouqiao:
楼主,请教一点问题.现在我们需要在excel 的页脚里面加上图 ...
FreeMaker + xml 导出word(处理目录,图片和页眉页脚问题) -
乱在长安:
使用Timer会有各种各样的问题好嘛?!书上推荐使用Sched ...
DelayQueue (ScheduledThreadPoolExecutor调度的实现)
对于restful web service,刚开始确实是个不太好理解的概念。
看了些文章,总是在描述和解释restful的原则:
1)显式地使用HTTP方法。
2)无状态。
3)公开目录结构式的 URI。
4)传输 XML、JavaScript Object Notation (JSON),或同时传输这两者。
可是为什么要这样, 除了这种web service还有没有其他类型的web service?等问题仍难比较糊涂。
直到看了这篇文章:http://www.ibm.com/developerworks/cn/webservices/0907_rest_soap/
感觉有点明白了,又去看了一下Restful Web Service这本书,才恍然大悟,原来如此。
1. 什么是Restful
其实早在web service概念产生前就有了restful的概念,或者说restful是和Http一起诞生的。
可以参阅 Roy Fielding 的论文“Architectural Styles and the Design of Network-based Software Architectures”, 我本身并没有读过。
Restful的意思是‘宁静的’,你可以理解为‘简约而不简单’,或者‘和谐的’。一个协议只有足够的简约才有扩展性和生命力,复杂的东西往往伴随的是大量bug和规模膨胀后的不可控。
Restful就是Http的本质,仅仅是一个资源URI,和Get,Post,Put,Delete四种操作。一切Web的行为皆源于此。
所以早期的网站,或者说是静态的网站的都是Restful的,如果广义的把浏览器获取web page当做一种web service的话,那么他们都提供了Restful Web Service。
所以Restful并不是个陌生的概念,更不是个新的概念,只不过是一直被忽略了。
一样东西之所以被忽略,因为没有对立面, 或者说没有可比较的东西。世界上的概念都是相对的,有了丑才有美,有了胖才有瘦。
同样当仅仅只有restful的时候,便很少有人真正了解restful的意思。
直到有一天,restful的原则被打破,世界上出现了非restful的web行为,我们可以把它称做‘RPC-style’的web service。
2. RPC-style
RPC是个大家都很熟悉的东西,remote procedure call,就是说我要调用其他机器上的程序就象调用我本机的函数一样。
早期的做法开个socket端口,把参数传过去,然后执行完再通过socket把结果传回来。
这样的缺点是就是不同的解决方案的传参数和结果的协议不同,大家之间没发通用,还有就是可能无法穿越防火墙。
直到XML技术诞生,用XML来规范接口,并且XML文档本身就是纯文本可以方便的通过Http端口传输,这样就大大的方便了在web互相之间的调用。
于是Web Service的概念诞生了,而这种Web Service是‘RPC-style’的。
3. Http
顺便聊一下Http协议,Http诞生就是为了进行Web访问,用来传输Html文档的。不过他的能力远远大于此。
Http本身就是个envelope协议,他并不管envelop里面装的是什么,所以其实你可以通过http传输任意数据(图片,音乐),只要可以将它编码成文本(如用base64)。
Http本身规定了4种操作,可是他并没有强制服务器真正的行为。比如你通过Http发出的Get指令,服务器在收到这个指令后可以做些完全和Get不相关的事情。
Http的灵活性带来了很多好处,但同时也带来了副作用,Web不再restful,变的有点小乱。
4. ROA
其实RPC-style和Restful看待事物的角度是不同的,大家都说Restful是一种RO,即面向资源的,那么RPC-style应该仍难是传统的OO,即面向对象的。
对于RPC-style而言,Server就是一个对象,这个对象有许多的属性和方法,我们通过http传递参数来调用这些方法,这里http仅仅被用来做为一个传递者,request的真正含义皆在soap envelop中。
对于Restful而言,Server就是个资源的集合,里面有web pages,web services,或其他资源,对于资源的操作是固定的。我们可以用http象访问网页一样访问web service。
对于Web而言,似乎ROA这种架构更能保持web访问的一致性,也更简单。
5. Ajax
Ajax出现的初始动机就是我们可以仅仅刷新部分网页,这样更快,也更合理,不然每次都要刷新整个网页。
同时,Ajax的出现也为遵守Restful原则提供了一种很好的solution。
Restful很重要的原则是无状态性,即服务器不会保存http request的上下文。这是很必要的,否则当用户很多时,服务器的负荷会爆掉的。
我们应该在客户端记录request上下文,然后每次发给服务器。
Ajax出现前,每次request都会刷新这个页面,所以很难记录之前request的上下文,现在有了Ajax, 用户不用每次刷新整个页面,所以可以有效的记录上下文。
所以可以比较简单的完成胖客户端-瘦服务器的架构。
详细可参见http://www.ibm.com/developerworks/cn/web/wa-ajaxarch/
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fxjtoday/archive/2009/10/11/4650738.aspx
发表评论
-
WebService与RMI的区别及协作
2014-05-19 10:18 1616区别: RMI的客户端 ... -
session和cookie的区别,如何用session和cookie访问共享用户信息
2013-09-13 18:38 1856Cookie的机制 Cookie是浏览器(Use ... -
CXF+Spring+WSDL的Webservice实现(转)
2013-01-16 10:57 1940转自:http://www.blogjava.net/sxy ... -
CXF+Spring实现Webservice(简单例子-转)
2013-01-16 10:51 1289Apache CXF 是一个开放源代码框架,提供了用于方便地 ... -
XML的基本数据类型
2011-08-09 09:36 1645String、decimal、boolean、float、do ... -
理解类8583报文协议(转)
2011-07-18 17:52 3572我刚进入金融行业时, ... -
MQ使用指南(转载的)
2011-03-08 17:03 2764一.MQ基本操作 MQ中有几个很重要的组件:队列管 ... -
Rest与RPC比较
2010-11-10 09:15 8595基本概念 1. rest和rpc架 ... -
深入浅出REST
2010-11-09 14:33 1434【原文地址】:http://www ... -
理解Restful Web Service(一)
2010-11-09 12:56 2423摘 要:本文展示了Http ... -
Schema中的命名空间
2010-09-02 17:16 2248基本的XML Schema的使用就 ... -
Schema中elementFormDefault="qualified"所起的作用
2010-09-02 17:13 6107有的xsd文件的开头是这 ... -
Schema中import和include的区别
2010-09-02 16:42 2018http://davidwang.iteye.com/blog ...
相关推荐
在现代的Web应用程序开发中,RESTful Web Service已经成为构建分布式系统和服务之间通信的重要方式。本文将深入探讨如何利用RESTful架构来实现转账业务,同时关注事务处理和并发控制这两个关键领域。 首先,让我们...
首先,理解RESTful架构的关键概念: 1. 资源(Resource):在REST中,一切皆资源,通常由URI(Uniform Resource Identifier)唯一标识。在这个实例中,可能有一个名为"customer"的资源。 2. 统一接口:REST服务...
首先,理解RESTful架构风格的核心概念至关重要。REST强调资源的概念,通过URI(统一资源标识符)来唯一标识每个资源。HTTP方法则对应于对资源的操作,比如GET用于获取资源,POST用于创建新资源,PUT用于更新已有资源...
Java RESTful Web Service是现代Web应用开发中的一个重要概念,它基于Representational State Transfer(表述性状态转移)架构原则,提供了一种轻量级、高效且易于理解和实现的接口设计方式。在本PDF教程《Java ...
Java RESTful Web Service实战是Java开发领域中一个重要的实践教程,它主要涵盖了使用Java技术和RESTful架构风格来创建高效、可扩展的网络服务。REST(Representational State Transfer)是一种网络应用程序的设计...
### 解析Restful Web Service架构 #### 一、HTTP协议基础 HTTP(HyperText Transfer Protocol)是一种基于文档的协议,用于客户端与服务器之间的通信。它规定了一套标准的请求和响应格式,使得不同系统间的交互...
在本文中,我们将深入探讨Java Restful Web Service的关键概念、技术栈以及如何通过实际示例来理解和应用它们。 Restful Web Service是一种基于HTTP协议构建的Web服务,它遵循REST(Representational State ...
在IT行业中,RESTful Web Service是一种广泛采用的网络应用程序接口(API)设计风格,它基于Representational State Transfer(表述性状态转移)原则。本教程将深入讲解如何使用Java语言来创建RESTful Web Service。...
【标题】"MyEclipse下的Restful Web Service的Demo"是一个示例项目,展示了如何在MyEclipse集成开发环境中创建和使用RESTful Web服务。REST(Representational State Transfer)是一种软件架构风格,常用于构建Web...
Restful Web Service架构以其简洁的设计理念、易于理解的接口和良好的扩展性,在现代Web开发中占据了重要的地位。通过对HTTP协议的有效利用,RESTful服务不仅提供了高效的数据交换机制,还为构建灵活、可扩展的...
首先,让我们深入理解Restful服务的核心概念。REST(Representational State Transfer,表述性状态转移)强调的是客户端和服务器之间的松耦合。在ATM系统中,每个资源(如用户账户、交易记录)都有一个唯一的URI...
#### 二、使用Maven和Gradle构建RESTful Web服务 在构建RESTful Web服务时,选择合适的构建工具非常重要。常见的构建工具有Apache Maven和Gradle,它们都能有效地管理项目的依赖关系。 - **Apache Maven**:Maven...
【RESTful Web Service】RESTful Web Service是一种轻量级的Web服务设计风格,它基于Representational State Transfer(表述性状态转移)原则,强调简洁、直接的交互方式。RESTful服务通常使用HTTP协议中的GET、POST...
# RESTful Web Service Primer ## 什么是REST? REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于客户端与服务器之间的交互模式。REST架构风格最初由Roy Fielding在其博士...
### RESTful Web Service 课程知识点概述 #### 一、REST简介 REST(Representational State Transfer)是一种用于构建软件应用程序的设计风格或架构模式,它利用现有的网络标准和技术来创建灵活、可扩展的服务。...
【Java Restful Web Service,edition2.代码】这个压缩包文件是关于使用Java开发RESTful Web服务的第二版源码,主要聚焦于JAX-RS 2.0规范的应用。RESTful Web服务是一种广泛用于构建分布式系统的服务架构风格,它...
### RESTful Web Service Primer #### 一、REST简介 REST(Representational State Transfer)是一种用于设计网络应用程序的架构风格,最初由Roy Fielding在他的博士论文中提出。REST架构风格的核心理念是将网络上...
总的来说,理解RESTful Java Web Services不仅有助于提高Web服务的开发效率,还能提升服务的可维护性和易用性。结合Struts2框架,我们可以利用其强大的功能来构建更复杂的REST应用。通过阅读提供的"RESTful Java Web...