| « | April 2026 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | |
| 公告 |
| 暂无公告... |
| Blog信息 |
|
blog名称: 日志总数:83 评论数量:123 留言数量:0 访问次数:269016 建立时间:2006年8月17日 |

| |
|
[软件设计]REST的故事  文章收藏, 软件技术
lylhelin 发表于 2008/3/5 18:08:05 |
|
Skip Sauls
是BEA Systems WebLogic
Portal产品线的一名高级产品经理。他主要负责该产品的工具、应用程序和框架特性,并且对皮肤更换技术有着特殊的兴趣。Skip在过去的六年中一直在
WLP产品管理小组工作。之前,Skip曾在美国和欧洲担任过BEA的架构师和系统工程师。他从很久以前便开始支持WebLogic技术。自从1998年
WebLogic公司被BEA收购之后,Skip便加入了BEA旗下。在此之前,Skip曾在Visix软件公司和SAIR公司担任过工程师、产品经理和
系统工程师等职位。
聚合——优点何在?
我对Web
2.0的很多事情都非常感兴趣。我相信,在一片议论消失之后,这些正在兴起的概念和技术将在如何构建应用程序这一方面起到重要作用。聚合和“情境应用
(situational
app)”都是很伟大的概念,但目前为止,关于这一方面的很多示例只是技术上的,并且缺乏物质支持。业务用户不喜欢别人询问他一个地图与地址组合的方式有
多少种,这与他们的工作无关。他们也不会去考虑使用最新的、人工智能辅助的、与上下文有关的鱼眼(fish-eye)列表(如果无法将它用于其公司数据的
话)。目前,许多聚合应用可能都会孤独而终,因为没有人会发现它的奇妙之处。
那么我们如何才能确保创建的应用程序真的有用呢?好了,如果您将使用WebLogic和AquaLogic产品来创建SOA、web应用程序和
企业计算,那么您已经解决了许多难题。有许多方法可用来获得企业用户完成其任务所需要的进程、数据、内容和服务,可能您已经将构建好了Web
1.0应用程序。但是Web
2.0又如何呢?您将如何完成上述那些实现呢?这有很多种可能,您也许多会感到迷惑。但是在尘埃落定之前,有一条建议您应该牢记于心:那就是REST。
表象状态传输(Representational State Transfer,REST)
有许多关于REST的文章、讨论和blog等,因此本文并不会过多地介绍其基本原理。如果您了解REST的基本原理,那么本文会更具意义,我建议您阅读以下参考资料:
Representational State Transfer - Wikipedia
RESTful Web Services by Leonard Richardson, Sam Ruby
Representational State Transfer (REST) - Chapter 5 of Roy T. Fielding's Dissertation
奇迹
我的一个同事对企业与Web 2.0之间的隔阂有一个很好的描述:“奇迹发生了。”如果已经构建了Web
1.0应用程序,那么您可能使用诸如JSP、JSF、Struts、Beehive之类的技术为企业应用程序提供用户界面。如果您了解J2EE,那么这些
就很好用,并且非常适合传统的请求-响应架构。随着对Web 2.0功能的需求的增加,您必须考虑添加这些功能,同时不必扔掉任何东西或从头开始。
尽管这一节使用“奇迹”作为标题,但我并没有暗示REST本身就是将Web
2.0带入企业的奇迹。我相信,在与诸如Ajax、Flex和Silverlight之类的RIA(Rich Internet
Application,富Internet应用程序)技术相结合时,REST将成为解决方案的一个重要组成部分。RIA工具包和产品有助于使应用程序更
加有用;而REST有助于确保应用程序真的有用。通过使用REST,您可以解锁企业数据,以便在Web
2.0应用程序中使用这些数据,同时不必放弃各种期望的工具。
快速演示
如果您已经研读过REST方面的资料,或者已经使用过它,那么您会知道它的一个基本特性是HTTP可访问性。已配置在wlp.bea.com之
上的原型REST服务有很多,在后续blog中,我将启发性地介绍其中的多数服务,并提供一些示例代码。现在,如果想实际查看REST,只需打开Web浏
览器并输入以下URL即可:
http://wlp.bea.com/rest-web-lib/api/content.nodelist?repositoryName=BEA%20Repository
这将返回一个看起来类似以下代码片段的XML文档:
<?xml version="1.0" encoding="utf-8" ?> <rsp stat="ok"> <name>null</name> <nodePath>null</nodePath> <id>null</id> <type>null</type> <nodes> <name>Demo</name> <path>/BEA Repository/Demo</path> <id>/BEA Repository/2001</id> <type>folder</type> <workflowStatus>published</workflowStatus> </nodes> ... <rsp>
这些节点表示指定存储库的最高层次,各种文件夹类型都可以通过将其路径追加到URL上的nodePath参数之后来进行浏览。例如,可以使用以下路径查看Demo文件夹下的内容:
http://wlp.bea.com/rest-web-lib/api/content.nodelist?repositoryName=BEA%20Repository&nodePath=Demo
如果将文件层次结构改为Demos/Images/Logos,那么您将看到如下所示图像列表:
<?xml version="1.0" encoding="utf-8" ?> <rsp stat="ok"> <name>Logos</name> <nodePath>/BEA Repository/Demo/Images/Logos</nodePath> <id>/BEA Repository/2009</id> <type>folder</type> <nodes> <name>BEA</name> <path>/BEA Repository/Demo/Images/Logos/BEA</path> <id>/BEA Repository/2010</id> <type>image</type> <workflowStatus>published</workflowStatus> </nodes> ... <rsp>
那么如何做才能获得图像的细节信息呢?请使用content.node命令和以下路径:
http://wlp.bea.com/rest-web-lib/api/content.node?nodePath=/BEA%20Repository/Demo/Images/Logos/BEA
这将返回描述此节点的XML,以及将这些与特定内容类型匹配的属性。此原型服务将图像作为一种特殊情况对待,返回显示该图像和ShowProperty servlet的URL,而不是返回显示二进制数据的URL。要显示图像,可使用下面的URL:
http://wlp.bea.com/rest-web-lib/ShowProperty?nodeId=/BEA%20Repository/2010
以下是该图像:
500)this.width=500'>
使用客户端应用程序中的数据——求助于JSON
XML是表示数据的一种好方法,但它并不总是能够很好地在客户端上使用,特别是以JavaScript为中心的客户端。好在我们拥有JSON
(JavaScript Object Notation)
,它是内在友好的JavaScript,经常与REST一起使用。通过使用format=json参数,我们可以获得JSON对任何REST请求的响应,
如下所示:
http://wlp.bea.com/rest-web-lib/api/content.node?nodePath=/BEA%20Repository/Demo/Images/Logos/BEA&format=json
有趣的一个地方是,虽然JSON更容易与JavaScript一起使用,但它的读取却比XML还要难。尝试读取上面的URL,并查看文本编辑器
中的响应。您会发现,Firefox在这方面比IE更好用。好在JSON的要点不是人类可读性,而在于它使用JavaScript中的数据是如此之容易。
JSON响应可以转换为JavaScript对象和如下所示代码,其中,来自XMLHttpRequest的responseText的求值计算如下:
var result = eval('(' + xhmlHttpReq.responseText + ')');
得到的对象可与标准点符号一起使用,例如,使用“result.content.name”可以获得节点名称,使用
“result.content.properties”可以获得属性数组,依此类推。这对许多JavaScript库和应用程序都很适用,我将在后续
blog中描述和演示这一点,并将提供JavaScript库的源代码(包括基于Dojo的一些代码)。我还将演示如何将这些REST命令与各种类型的聚
合工具和技术一起使用。
请保持关注!
原文出处:http://dev2dev.bea.com/blog/skip/archive/2007/07/the_rest_of_the.html
|
|
|
回复:REST的故事 文章收藏, 软件技术
njk(游客)发表评论于2009/5/13 19:54:57 |
| 寻SOA高级架构师岗位:SOA高级架构师, 工作地:上海 岗位职责: 1、负责构建面向服务(SOA)项目的技术咨询, 编写解决方案,帮助金融行业客户在SOA方面的落地. 2、负责面向服务(SOA)系统总体架构的设计,领导专业队伍开展SOA产品套件研发工作; 3、完成SOA相关项目的开发、验证及实施工作,完成与客户沟通交流、分析和梳理业务,完成系统服务建模、准确把握业务需求; 4、研究国内外SOA技术发展趋势,与同行业SOA领先企业广泛交流和开展合作. 岗位要求: 1、硕士学历 2、8年以上工作经验,至少一个SOA架构的实施经验 3、深刻掌握面向服务架构(SOA),熟悉工作流、BPM、Web Service、ESB中间件等技术,有IBM WebSphere/ /WebLogic等应用系统的方案设计、开发实施经验,熟悉SOAP/XML等协议和规范,擅长系统架构设计和系统整体方案设计; 薪资:面议 有兴趣或有资源的与我联系哈 penpal_world@yahoo.cn |
|
|
Addressing Doubts about REST 文章收藏, 软件技术
lylhelin发表评论于2008/3/21 9:49:56 |
| http://www.infoq.com/articles/tilkov-rest-doubts |
|
» 1 »
|