`
leebai
  • 浏览: 64787 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

RESTful架构是否适合“需授权访问的数据库型企业应用”?

阅读更多

RESTful架构是否适合“需授权访问的数据库型企业应用”?

 

首先,定义一下“需授权访问的数据库型企业应用”:其实也就是大多数(绝大多数?)j2ee开发人员要面对的那种应用,数据存储是一堆业务表,表的域比较多,表之间有关系;业务逻辑比较多,一部分是简单的增删改查,一部分是由简单增删改查组合而成的复杂操作,进入系统之前必须登录,只有授权的用户才允许进行业务操作(包括查看)。

 

REST、RESTful的资料看了一些,总感觉RESTful并不适合这类应用,主要依据是:

 

1、这类应用session(及背后的cookies)是必须的,服务器端多少会有一些会话State(比如"用户名"),肯定要违背REST服务器Stateless 原则。

 

2、这类应用任何Proxy Cache(及其他服务器之外的Cache)都是不允许的,因为非授权用户不可访问任何信息,因此无法利用REST强调的Cacheable优势。

 

3、这类应用面对的“数据对象”和REST中的“Resource”应该是不同的,后者偏向于表达那种无结构的对象(比例文档,图片,音视频),对其进行的操作绝大多数时候针对对象整体(既操作本身不关系对象内部的数据构成),因此可以用POST/GET/PUT/DELETE(CURD)等四个基本动词来表达;而前者大多数情况下,是复杂的、结构化的对象,对他们的操作除了整体操作,还有很多针对其局部的操作(既操作涉及对象的内部结构),四个基本动词远不够用,在不扩充动词的情况下,只能让一个动词表达多个操作,这种设计并不符合REST简单优美的声誉。

 

4、这类应用的“数据对象”之间很多时候是相关的,对某个对象的CURD操作经常同时需要对其他对象的CURD操作,如果把这些相关操作(2个以上)放在一个HTTP请求中完成,则使用四个基本动词来表达是语义不确切的;如果把这些相关操作分成多个HTTP请求,则相关操作的Transaction是无法保证的。

 

上面四点中,1、2对REST的违背是很明显的,3、4也很容易看出来,我的问题是,难道RESTful架构并不适用主流的企业应用(非企业“级”应用:-)),而只适用于像Javaeye这样的向公众提供信息服务的“资源型”网站

 


另外还有几个主题之外的RESTful疑问,一并请教:
a、现在很多论坛有一个功能:必须回复才能看到主帖,但看到和看不到时的访问URI是相同的,这种设计是否违背REST?
b、基本上论坛帖子都有访问次数统计,其实就是GET操作的时候改变了服务器State,应该也是违背REST吧?
c、只使用POST/GET是否也能实现RESTful?我看Fielding的论文中并没有提到必须使用PUT/DELETE。
d、在《RESTful Web Services》的序言中,作者写道:

 

In that first version of HTTP, cleverly disguised as a lack of features, we can see addressability and statelessness: the two basic design decisions that made HTTP an improvement on its rivals, and that keep it scalable up to today’s mega-sites. Many of the features lacking in HTTP 0.9 have since turned out to be unnecessary or counterproductive.Adding them back actually cripples the Web. Most of the rest were implemented in the 1.0 and 1.1 revisions of the protocol.
 
HTTP的第一个版本(指0.9),被聪明地伪装成功能简陋,我们可以看到可寻址性和无状态性,这两个基本的设计策略使得HTTP优于它的竞争对手,并使它在可扩展性方面能够适应今天的百万级站点。HTTP0.9中缺少的很多功能,大多数都在1.0和1.1版本中被实现,后来反而成为不必要的或者反生产力的,加上它们实际削弱了Web。


 
作者的意思是不是:POST/PUT/DELETE等其实都不是RESTful的本质,只有 GET+URI 才是RESTful的核心战斗力

 


最近为了升级7wxAop框架(自用+开源)的后端基础结构,花了很多时间做技术准备,以上是调查REST时的疑问,请这方面有经验的同学参与讨论解惑。

REST话题没有专版,不知道该发何处,先放在人比较多的JAVA版:-)。

分享到:
评论
3 楼 rain2005 2008-05-06  
引用
但REST论文中的Resource确实是指页面、图片之类的HTML相关文档,我关心的是这个概念是什么时候、被什么人扩大为"各种东西"
,那篇论文看得有点晕,可以看看江南白衣的博客有篇REST的文章或者是AJAX模式与最佳实践比较好理解一点。


2 楼 leebai 2008-05-05  
<div class='quote_title'>rain2005 写道</div>
<div class='quote_div'>这其实是你对REST的误解,其实资源可以理解为任何东西,与有多少个数据对象没有任何关系,只要它可以展现成xml或者json等平台无关的数据就可以了。</div>
<p><br/><br/>老大,能不能一条一条讨论? <br/><br/>你已经看出来我理解能力差了<img src='../../../../../../images/smiles/icon_redface.gif' alt=''/>,这么回答我岂不是更晕<img src='../../../../../../images/smiles/icon_wink.gif' alt=''/>? <br/><br/>我知道“资源”是可以指各种东西,但REST论文中的Resource确实是指页面、图片之类的HTML相关文档,我关心的是这个概念是什么时候、被什么人扩大为"各种东西"?</p>
<p> </p>
1 楼 rain2005 2008-05-05  
这其实是你对REST的误解,其实资源可以理解为任何东西,与有多少个数据对象没有任何关系,只要它可以展现成xml或者json等平台无关的数据就可以了。

相关推荐

    RESTful架构风格概述

    在RESTful架构中,每个资源都有一个唯一的URI,通过这个URI可以直接访问到相应的资源。例如,对于一个博客文章来说,其URI可能类似于`http://example.com/articles/123`。URI作为资源的入口,使得客户端能够轻松地...

    Cache数据库创建Restful接口.pdf

    Cache数据库是一种高性能的NoSQL数据库,Restful接口是当前Web服务架构中最流行的一种交互方式。下面,我们将详细讲解Cache数据库创建Restful接口的过程和注意事项。 一、业务命名空间创建类 在Cache数据库中,...

    Go-从任何PostgreSQL数据库提供RESTfulAPI

    Go是一种高效、轻量级的开源语言,常用于构建网络服务和后端应用,而PostgreSQL是一种强大的开源关系型数据库系统,广泛应用于各种规模的应用场景。RESTful API是现代Web服务的标准设计模式,它以简洁、可预测的方式...

    Microsoft .NET企业级应用架构设计.pdf

    它不仅提供了理论知识,还包含了大量的实战案例和最佳实践,适合那些希望提升.NET开发技能、设计更高效、可扩展的企业级应用的开发者和架构师阅读。通过学习本书,你可以掌握.NET平台上的核心技术和架构策略,从而在...

    Jackblog API Server Express版, 个人博客系统, 基于RESTful架构

    RESTful架构是资源表示状态转移的缩写,是目前广泛采用的Web服务设计模式。在杰克博客API服务器中,这种架构体现在各个HTTP方法(GET、POST、PUT、DELETE等)对应不同的资源操作上,例如GET用于获取博客文章,POST...

    ASP.NET数据库应用程序开发教程

    本教程将深入探讨如何使用ASP.NET进行数据库应用程序的开发。 一、ASP.NET架构 ASP.NET基于.NET Framework,包括Web Forms、MVC(Model-View-Controller)、Web Pages和API等多种开发模式。其中,Web Forms提供事件...

    Web数据库原理与应用.rar

    理解如何创建表、插入、更新和删除数据,以及编写复杂的查询语句是Web数据库应用的基础。 4. **Web开发技术**:包括HTML、CSS和JavaScript,它们用于构建网页界面。JavaScript尤其重要,因为它可以通过AJAX(异步...

    Microsoft .NET企业级应用架构设计

    《Microsoft .NET企业级应用架构设计》是一本深入探讨如何利用.NET...通过这本书的学习,读者不仅可以深入理解.NET企业级应用的架构设计,还能掌握实践中所需的各种技能,从而能够构建出高效、可靠的企业级解决方案。

    servlet_restful风格所需jar包

    - `oauth-server-1.19.1.jar`、`oauth-client-1.19.1.jar` 和 `oauth-signature-1.19.1.jar`:这些是OAuth库,用于实现OAuth协议,这是一个授权框架,允许第三方应用安全地访问用户的数据,而无需知道用户的登录...

    java大型企业DRP系统源码带sql数据库

    3. **安全控制**:了解如何使用Spring Security或Apache Shiro实现用户认证和授权,防止未授权访问。 4. **数据库设计**:源码中包含了SQL数据库,这可以帮助学习者理解数据库表结构设计,以及如何通过ORM工具将...

    带数据库的+计算机信息企业管理系统Java源码

    【标题】"带数据库的计算机信息企业管理系统Java源码"是一个专为IT专业人士设计的项目,它涵盖了数据库管理和企业信息系统的开发技术。这个系统利用Java编程语言,为管理企业的各种信息提供了一个高效、可靠的解决...

    +restful学习教程

    - **认证与授权**:使用 JWT(JSON Web Token)等机制确保只有经过认证的用户才能访问敏感资源。 - **限流**:对 API 的请求频率进行限制,防止恶意攻击。 - **版本控制**:随着 API 的不断迭代,需要合理地管理不同...

    基于Spring Boot为主线的技术栈,采用RESTful风格架构的微信点餐系统.zip

    《Spring Boot主导的微信点餐系统:RESTful架构解析与实践》 在现代软件开发领域,Spring Boot以其简洁、高效和强大的特性,已经成为构建企业级应用的首选框架。结合RESTful风格的架构设计,可以构建出高效、灵活且...

    Web版的数据库管理工具

    此外,认证和授权机制,如OAuth或JWT(JSON Web Tokens),用于确保只有授权用户才能访问数据库。 7. **部署与扩展**:由于是Web应用,可以轻松部署到各种Web服务器,如Tomcat、Jetty等,甚至云平台如AWS或Google ...

    SpringBoot_Restful

    SpringBoot_Restful是利用Spring Boot框架构建的一个基于RESTful架构的应用示例。Spring Boot以其快速、简洁的特性,已经成为Java开发领域中的热门选择,尤其在微服务领域中广泛使用。RESTful架构是一种轻量级的Web...

    一个RESTful的文件下载方法

    - 对于敏感文件的下载,还需增加身份验证和授权机制,确保只有授权用户才能访问特定文件。 4. **性能优化**: - 在处理大量文件或高并发请求时,可以考虑使用异步处理技术来提高性能。 - 对于频繁访问的文件,...

    基于 Go 语言构建企业级的 RESTful API 服务.pdf

    ### 基于 Go 语言构建企业级的 RESTful API 服务 #### 一、概述 本文档旨在介绍如何利用 Go 语言构建一个稳定、高效的企业级 RESTful API 服务。Go 语言以其简洁的语法、强大的并发能力及内置的 HTTP 服务器库等...

    spring security+jwt 实现 restful api格式.

    Spring Security 是一个强大的安全框架,用于Java和Java EE应用程序的安全管理。...这种实现方式具有可扩展性,适用于各种规模的应用,并且由于JWT的轻量级特性,非常适合分布式系统和微服务架构。

    互联网应用架构模式

    3. **数据库技术**:包括关系型数据库(如MySQL、PostgreSQL)和非关系型数据库(如MongoDB、Cassandra),根据具体应用场景选择合适的数据库类型。 4. **安全性**:通过SSL/TLS加密、身份验证和授权机制确保数据的...

    企业应用系统架构与设计模式 共49页.pptx

    【企业应用系统架构与设计模式】是IT领域中至关重要的主题,主要涵盖了如何构建高效、可扩展和易于维护的企业级应用程序。在这个主题中,我们将会深入探讨Microsoft .NET技术在系统架构中的应用以及设计模式的基本...

Global site tag (gtag.js) - Google Analytics