w1100n
This site is best viewed in Google Chrome
11/8/2012 15:07

代表性状态传输(Representational State Transfer,REST)在Web领域已经得到了广泛的接受,是基于SOAP和Web服务描述语言(Web Services Description Language,WSDL)的Web服务的更为简单的替代方法。接口设计方面这一转变的关键证据是主流Web 2.0服务提供者(包括Yahoo、Google和Facebook)对REST的采用,这些提供者弃用或放弃了基于SOAP和WSDL的接口,而采用了更易于使用、面向资源的模型来公开其服务。在本文中,Alex Rodriguez将向您介绍REST的基本原理。 基础 REST定义了一组体系架构原则,您可以根据这些原则设计以系统资源为中心的Web服务,包括使用不同语言编写的客户端如何通过HTTP处理和传输资源状态。如果考虑使用它的Web服务的数量,REST近年来已经成为最主要的Web服务设计模型。事实上,REST对Web的影响非常大,由于其使用相当方便,已经普遍地取代了基于SOAP和WSDL的接口设计。 REST这个概念于2000年由Roy Fielding在就读加州大学欧文分校期间在学术论文“Architectural Styles and the Design of Network-based Software Architectures”首次提出,他的论文中对使用Web服务作为分布式计算平台的一系列软件体系结构原则进行了分析,而其中提出的REST概念并没有获得现在这么多关注。多年以后的今天,REST的主要框架已经开始出现,但仍然在开发中,因为它已经被广泛接纳到各个平台中,例如通过JSR-311成为了Java? 6不可或缺的部分。 本文认为,对于今天正在吸引如此多注意力的最纯粹形式的REST Web服务,其具体实现应该遵循四个基本设计原则: ·显式地使用HTTP方法。 ·无状态。 ·公开目录结构式的URI。 ·传输XML、JavaScript Object Notation(JSON),或同时传输这两者。 下面几个部分将详述这四个原则,并提供技术原理解释,说明为什么这些原则对REST Web服务设计人员非常重要。 显式地使用HTTP方法 基于REST的Web服务的主要特征之一是以遵循RFC 2616定义的协议的方式显式使用HTTP方法。例如,HTTP GET被定义为数据产生方法,旨在由客户端应用程序用于检索资源以从Web服务器获取数据,或者执行某个查询并预期Web服务器将查找某一组匹配资源然后使用该资源进行响应。 REST要求开发人员显式地使用HTTP方法,并且使用方式与协议定义一致。这个基本REST设计原则建立了创建、读取、更新和删除(create, read, update, and delete,CRUD)操作与HTTP方法之间的一对一映射。根据此映射: … Continue reading

11/7/2012 14:11

REST 简介 在开始我们的正式讨论之前,让我们简单看一下 REST 的定义。 REST(Representational State Transfer)是 Roy Fielding 提出的一个描述互联系统架构风格的名词。为什么称为 REST?Web 本质上由各种各样的资源组成,资源由 URI 唯一标识。浏览器(或者任何其它类似于浏览器的应用程序)将展示出该资源的一种表现方式,或者一种表现状态。如果用户在该页面中定向到指向其它资源的链接,则将访问该资源,并表现出它的状态。这意味着客户端应用程序随着每个资源表现状态的不同而发生状态转移,也即所谓 REST。 关于 REST 本身,本文就不再这里过多地讨论,读者可以参考 developerWorks 上其它介绍 REST 的文章。本文的重点在于通过 REST 与 SOAP Web 服务的对比,帮助读者更深刻理解 REST 架构风格的特点,优势。 应用场景介绍(在线用户管理) 本文将借助于一个应用场景,通过基于 REST 和 SOAP Web 服务的不同实现,来对两者进行对比。该应用场景的业务逻辑会尽量保持简单且易于理解,以有助于把我们的重心放在 REST 和 SOAP … Continue reading

11/7/2012 14:08

概述 REST是英文Representational State Transfer的缩写,中文翻译:表述性状态转移。 他是由Roy Thomas Fielding博士在他的论文 《Architectural Styles and the Design of Network-based Software Architectures》中提出的一个术语。 REST本身只是为分布式超媒体系统设计的一种架构风格,而不是标准。 基于Web的架构,实际上就是各种规范的集合,这些规范共同组成了Web架构。比如Http协议,比如客户端服务器模式,这些都是规范。每当我们在原有规范的基础上增加新的规范,  就会形成新的架构。而REST正是这样一种架构,他结合了一系列的规范,而形成了一种新的基于Web的架构风格。 传统的Web应用大都是B/S架构,它包括了如下一些规范: 1. 客户-服务器 这种规范的提出,改善了用户接口跨多个平台的可移植性,并且通过简化服务器组件,改善了系统的可伸缩性。最为关键的是通过分离用户接口和数据存储这两个关注点,使得不同用户终端享受相同数据成为了可能。 2. 无状态性 无状态性是在客户-服务器约束的基础上添加的又一层规范。他要求通信必须在本质上是无状态的,即从客户到服务器的每个request都必须包含理解该 request所必须的所有信息。这个规范改善了系统的可见性(无状态性使得客户端和服务器端不必保存对方的详细信息,服务器只需要处理当前 request,而不必了解所有的request历史),可靠性(无状态性减少了服务器从局部错误中恢复的任务量),可伸缩性(无状态性使得服务器端可以很容易的释放资源,因为服务器端不必在多个request中保存状态)。同时,这种规范的缺点也是显而易见得,由于不能将状态数据保存在服务器上的共享上下文中,因此增加了在一系列request中发送重复数据的开销,严重的降低了效率。 3.缓存 为了改善无状态性带来的网络的低效性,我们填加了缓存约束。缓存约束允许隐式或显式地标记一个response中的数据,这样就赋予了客户端缓存 response数据的功能,这样就可以为以后的request共用缓存的数据,部分或全部的消除一部分交互,增加了网络的效率。但是用于客户端缓存了信息,也就同时增加了客户端与服务器数据不一致的可能,从而降低了可靠性。 B/S架构的优点是其部署非常方便,但在用户体验方面却不是很理想。为了改善这种情况, 我们引入了REST。 REST在原有的架构上增加了三个新规范:统一接口,分层系统和按需代码。 1.统一接口 REST 架构风格的核心特征就是强调组件之间有一个统一的接口,这表现在REST世界里,网络上所有的事物都被抽象为资源,而REST就是通过通用的链接器接口对资源进行操作。这样设计的好处是保证系统提供的服务都是解耦的,极大的简化了系统,从而改善了系统的交互性和可重用性。并且REST针对Web的常见情况做了优化,使得REST接口被设计为可以高效的转移大粒度的超媒体数据,这也就导致了REST接口对其它的架构并不是最优的。 2.分层系统 分层系统规则的加入提高了各种层次之间的独立性,为整个系统的复杂性设置了边界,通过封装遗留的服务,使新的服务器免受遗留客户端的影响,这也就提高了系统的可伸缩性。 3.按需代码 … Continue reading

11/7/2012 14:06

Web Service的协议最近几年一直在发生转变。Web Servcie的最大优势是能在一个操作系统不同的各个系统之间架起沟通的桥梁,早期的 Web Service一般都是以SOAP协议传输。仔细学习和研究过SOAP协议的同学知道,SOAP协议是一个很完备的自解释协议,对Service、Interface、Method和Parameter的描述都非常详细,甚至还制定了一个WSDL的XSD来,在VS中,只要导入Web Service的WSDL,VS就可以自动生成存根代理代码,你只需调用它便可以调用这些SOAP的Web Service了。 SOAP 的Web Service看起来是很完美的解决方案,但是往往看起来完美的东西,用起来并不完美。 SOAP就是如此,随着Web Service 应用在企业级软件的运用,SOAP的缺陷迅速开始暴露出来。 首先,SOAP协议是在是太复杂,很少有人能完全看懂根据SOAP协议生成的数据(其实这本来设计,就是给机器看的,哪能照顾你大爷,呵呵哦!)。我本人是很厌烦看SOAP的数据,一看头就大,特别是SOAP头和尾。 其次,太复杂还不是SOAP协议最大的缺陷。大不了我用下解释SOAP的工具,现在VS也提供此类工具用来查看SOAP类型的数据。但是恰恰是这个缺陷造就了SOAP另一个很致命的缺陷。由于SOAP为了是每个调用的参数和返回值都可以独立解释,为此,需要在每次调用中加入大量的XML复杂信息,来解释这些数据。例如为了解释一个XML的节点是STRING,于是<datatype=”string”>被按在了一个XML节点上,其实这是没有必要的。因为,往往程序员在消费这个service的时候,已经知道了返回的数据类型,比如你在调用GetAge的时候,返回的XML肯定是int型。所以,一般一个SOAP的调用,一个来回少则数K,多则数M的,甚至数G的数据,而在这些数据中,真正有效的数据很少,根据统计,有效数据仅占全部数据的5%,甚至更少。对于海量数据的企业应用来说,大量的用户对海量数据的存储,如果用SOAP来进行数据传输,那简直就是灾难!!! 另外,调式SOAP的WEB SERVICE也是很费时费力的,SOAP数据的难阅读性,直接增加了调式的难度。 所以,在REST之前,很多的企业应用还是用DCOM,甚至是自定义XML来进行数据传输。 那有没有很好协议的Web Service呢!?。。。现在。。。有了,REST的Web Service就是。 REST的Web Service彻底摒弃了SOAP协议。它的数据格式简单,一般都直接采用对象XML序列化的数据作为返回结果。这样就极大的降低了数据传输量,提高了效率。而且这种XML数据可以直接用IE打开,很容易阅读理解。 随着WCF和VS 2008的发布,MS首次加入了对架构REST Web Service的支持,虽然还很不完全,但是有总比没有好!现在,你只需: 1,添加Data Contract 2,添加Interface并附给URL 3,设置CLASS 4,附加到IIS或者CONSOLE程序 你就可以创建一个REST Web Service。然后通过IE,在地址栏输入Interface的URL,就想访问网页一样调用你的Web Service,返回的数据就通过IE直接显示,这够直观了吧!? 现在,很多大型公司的Public Web Service也都已经REST化,比如GOOGLE所有的Web Service都是REST的,MS也已经采用REST来优化他的public … Continue reading

11/7/2012 13:41

简介   Web Service Web service是一个平台独立的,松耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。[1] 历史 web广泛用到的技术: ◆TCP/IP:通用网络协议,被各种设备使用 ◆HTML:通用用户界面,可以使用HTML标签显示数据 ◆Java:写一次可以在任何地方运行的通用编程语言,因此java具有跨平台特性 ◆XML :通用数据表达语言,在web上传送结构化数据的容易方法 他们的特点是其开放性,跨平台性,开放性正是Web services的基础。 Web发展的趋势 内容更动态化 ◆带宽Bandwidth更便宜,易于获得 ◆存储器Storage更便宜,更易获得 ◆普遍式计算变得更加重要:大量的设备,例如移动电话,页面,电脑,pc,已经在Internet上变得普遍,平台变得更多元化,象XML这样的跨平台技术变得更重要 Web Services扮演什么角色?  趋势 上述的这些趋势意味着,更加智能的处理,操作和汇总内容变得十分重要。让我们看看按照Web services角度所预示的四个趋势: ◆内容更加动态:一个web service必须能合并从多个不同源来的内容,可以包括股票,天气,新闻等,在传统环境中的内容,如存货水平,购物订单或者目录信息等,都从后端系统而来 ◆带宽更加便宜:web services可以分发各种类型的内容(音频,视频流等) ◆存储更便宜: web services必须能聪明地处理大量数据,意味着要使用数据库,LDAP目录,缓冲,和负载平衡软件等技术保持可扩展能力 ◆普遍式计算更重要:web services不能要求客户使用某一版本的windows的传统浏览器,必须支持各种设备,平台,浏览器类型,各种内容类型。 两种重要技术 要达到这样的目标,Web services要使用两种技术: ◆XML XML是在web上传送结构化数据的伟大方式,Web services要以一种可靠的自动的方式操作数据,HTML不会满足要求,而XML可以使web services十分方便的处理数据,它的内容与表示的分离十分理想 … Continue reading

辽ICP备14012896