`
sslaowan
  • 浏览: 380481 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

REST及工作流

阅读更多
  

      今天在Javaeye上看帖子,忽然又看到那个叫做REST的大词,于是上网搜了一下,忽然惊讶的发现,我们现在的架构方式ms就是REST!

    特别是看了Bill的那篇Ajax和REST,其中提到传统的Web方式其实就是REST风格的。其实不是很理解Javaeye上曾经关于这个主题的讨论http://www.iteye.com/topic/70113,觉得有点把简单问题复杂化了。有一个讨论很有意思,说复杂参数传递问题,我想用POST就很容易搞定的啦。这个帖子说,CRUD在这里被解释为GET,POST,PUT和DELETE这四种操作。不过我认为只有前两种。关于Session的问题,我觉得更好的说法来自于Bill的文章。

    我想我们现在就是通过一个URI来进行CRUD操作,而且我设想如果我们使用Delphi或者SWT做客户端,那么我也会选择HTTP Client或者URL Conntection的,我想这样的方式就是传说中的REST风格吧。

    我没看过RoR,但是据说那是一个REST架构的例子。

 

    晚上又看了些工作流方面的东西,jBMP这个开源的工作流也值得研究一下,比较轻量级,ms还有Designer的支援。另外BEA的AquaLogic BMP应该是真正的工作流平台,而WebLogic Integration主要的作用是EAI,而BPM是其自带的一个小功能,好比Word是一个文本编辑工具,但是也可以在里面嵌入VBA。

 

   校内添加日志好友ms采用了AJAX技术,不过很恶心,没有以前方便了,应该既能选择又能输入就对了。

分享到:
评论
2 楼 sslaowan 2007-10-19  
   今天又对REST有了新的理解,我觉得关键是对于下面这段的理解:[Fielding]把REST形式化地定义为一种架构风格(architecture style),它有架构元素(element)和架构约束(constraint)组成。这些概念比较晦涩难懂,而且我们做工程的往往并不需要形而上的理解。我们只知道,REST是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。REST提出了一些设计概念和准则:

1、网络上的所有事物都被抽象为资源(resource);
2、每个资源对应一个唯一的资源标识(resource identifier);
3、通过通用的连接器接口(generic connector interface)对资源进行操作;
4、对资源的各种操作不会改变资源标识;
5、所有的操作都是无状态的(stateless)。

    终于明白大家为什么花那么大力气去讲如何设计URL了,首先我们要搞定的是如何定义资源,也可以说是如何抽象资源(对于Web应用而言,就成了如何以URL的形式来表示资源了,但是我觉得实际并不限于次,或许还可以利用HTTP协议的其他部分,但这仅仅是在某一个抽象层次上,不应该和过去的OO有太大的抵触),简单而言,我觉得Client端需要的东西就是资源,然后我们要给每个资源一个标识,就像领域对象中的实体,数据库中的实体都有标识一样,这个标识肯定是不可变的(第4条),就像数据库操作一样,你修改查询都不能改变关键字,增加也不能增加同样ID的数据,删除也是一旦删掉了,那么这个ID的数据就再也没有了。而第3条的极致就是所有的操作都可以归结为CRUD,ms这个已经经过证明了,就像任何程序都可以用条件,循环和顺序三种关系来表示一样。然后就可以通过通用的控制器来进行访问了(极致应该是只有一个控制器接口,定义了CRUD,然后对于不同的资源,有不同的实现)。前四点比较难理解,我现在的理解程度就是这样的了。
    讨论这个事情一定要把它和Web分开,更不要混入什么RoR之类的东西。
    刚下了两篇论文,这个领域的探讨还是不多的,不过我更感兴趣的是如何在我们的项目中应用这一架构风格,而且我认为我们离它并不远,而且它会给我们带来足够的好处。

  
1 楼 sslaowan 2007-10-19  
今天看了那篇论文,得到的一些新的看法:
既然Roy Thomas Fielding说“现代Web是REST风格架构的一个实例。”那么是否就意味着我们按照纯Web的方式来架构系统,不要搞什么分布式对象,不要在Server端使用Session。
另外最论文的最后,Fielding说:REST既贡献了在现代Web软件架构背后的基本原理....
结论就是当今的Web就是按照或者说大部分按照REST的架构风格来设计的。而且文中也提到了“将URI[21]作为资源标识符来使用”,那么URI本身就具有标识能力。另外,“更精确地说,资源R是一个随时间变化的成员函数MR(t),该函数将时间t映射到等价的一个实体或值的集合,集合中的值可能是资源的表述和/或资源的标识符。”“对于一个资源来说,唯一必须是静态的是映射的语义,因为语义才是区别资源的关键。”我觉得对于url设计在于区分语义,而非book/restinaction之类的url,我认为可以是book?isdn=??,甚至是Struts Action一类的东西,因为我们可以把book.do理解为函数MR。

相关推荐

    Go-go-codon-从REST和工作流DSL组合生成Go服务器代码

    《Go-go-codon:利用REST和工作流DSL构建Go服务器代码的艺术》 在现代软件开发中,自动化代码生成工具已经成为提高效率、减少错误的关键技术。Go-go-codon 是一款专门针对Go语言的工具,它允许开发者通过REST API...

    springboot-flowable-cims基于工作流引擎flowable、spring boot开发的工作流服务平台

    springboot-flowable-cims基于工作流引擎flowable、spring boot开发的工作流服务平台,完美整合官方flowable modeler 进行流程设计、表单设计。提供flowable rest api 接口 供后台业务系统流程调用。提供前后端分离...

    用JAVA实现的工作流

    - 工作流中的任务可能涉及外部服务的调用,如发送邮件、调用REST API等。Java的HttpClient、Feign或Spring Cloud OpenFeign等工具可以用于服务间通信。 7. **监听器与事件处理**: - 开发者可以通过实现监听器...

    【完整版11章】Activiti7精讲&Java通用型工作流开发实战

    《Activiti7精讲&Java通用型工作流开发实战》是一个全面深入的视频教程,旨在帮助初学者和有经验的开发者掌握Activiti7框架,并利用Java技术构建高效、灵活的工作流系统。本教程覆盖了从基础到高级的全方位内容,...

    java开源工作流项目简介资料

    Java开源工作流项目是开发企业级应用的重要工具,它们提供了自动化业务流程的框架,使得复杂的业务逻辑得以有序、高效地执行。以下是对标题和描述中提及的7种开源工作流项目的详细解读,以及它们在分布式计算环境中...

    工作流源码适合初学者

    - **RESTful API**:设计和实现处理工作流操作的REST接口。 总的来说,"工作流源码适合初学者"是一个极好的学习资源,通过它,初学者不仅能掌握Activiti工作流引擎的使用,还能深化对Spring Boot的理解,同时提升...

    spring-cloud 集成 flowable 工作流

    在企业级应用开发中,工作流引擎扮演着重要的角色,它可以帮助我们自动化处理复杂的业务流程。本教程将深入探讨如何在基于Spring Cloud的微服务架构中集成Flowable工作流引擎,提升系统的流程管理能力。 首先,...

    java 工作流 activity6

    Java工作流是一个复杂而强大的概念,它在企业级应用中被广泛使用,用于管理业务流程。Activity6在这里可能指的是Activiti框架的一个特定版本或模块, Activiti是一个开源的工作流引擎,设计用来支持业务流程管理...

    Power BI Embedded 的工作流及相关REST API命令介绍1

    本文将详细介绍 Power BI Embedded 的工作流程和涉及的主要 REST API 命令。 首先,我们需要了解一些前提条件。在使用 Power BI Embedded 之前,你需要创建一个工作区集合(workspace collection),这是在 Azure ...

    flowable-boot-rest_rest_flowableapi_flowableswagger_flowable_flo

    总的来说,"flowable-boot-rest"项目为开发者提供了一个快速入门Flowable REST API的平台,结合Swagger工具,使得理解和使用Flowable的工作流服务变得直观和高效。无论你是希望集成Flowable到现有系统,还是想要学习...

    关于activiti rest服务

    Activiti 是一个开源的工作流和业务自动化引擎,它支持企业级流程管理,广泛应用于业务流程自动化、工作流系统以及IT服务管理等领域。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发...

    springboot-flowable-modeler快速开发工作流, 在线流程设计器

    SpringBoot集成Flowable Modeler是现代企业级应用中实现高效工作流管理的一种常见技术实践。Flowable是一款开源的工作流引擎,它提供了强大的流程定义、执行和监控能力,而SpringBoot则是一个轻量级的Java应用框架,...

    easyui实现的Activiti工作流引擎web版流程设计器

    标题中的“easyui实现的Activiti工作流引擎web版流程设计器”揭示了本文将要讨论的重点,即如何利用EasyUI框架来构建一个基于Web的流程设计工具,该工具是基于Activiti工作流引擎的。EasyUI是一个轻量级的JavaScript...

    Activiti工作流整合Web流程设计器整合

    Activiti工作流引擎是一款强大的开源工作流解决方案,它基于模型驱动的架构,旨在为企业提供灵活、可扩展的业务流程自动化能力。在这个“Activiti工作流整合Web流程设计器整合”主题中,我们将深入探讨如何将...

    flowable工作流官方汉化版

    Flowable工作流是一个轻量级Java框架,提供了业务流程引擎,允许开发者以BPMN 2.0标准来设计、管理和执行业务流程。它拥有Java社区的广泛支持,因为它是根据Apache许可证版本2进行分发的开源项目。Flowable工作流...

    activiti-rest.zip

    总结来说,"activiti-rest.zip" 提供了 Activiti 工作流引擎的 REST 接口实现,这对于希望以非侵入式方式集成 Activiti 到 Web 应用或微服务架构中的开发者来说是非常有价值的。通过理解和熟练使用这个 API,你可以...

    activiti rest upload picture

    在“activiti rest upload picture”这个场景中,我们将讨论如何利用Activiti的工作流引擎,通过REST API来上传图片。 首先,理解Activiti的工作流程: 1. **Activiti模型**:Activiti使用 BPMN 2.0(Business ...

    java_工作流_activity6.0.0 完整包

    Java工作流Activity 6.0.0是一款基于Java的企业级工作流引擎,它为企业应用程序提供了强大的业务流程自动化功能。此完整包包含了所有必要的组件,确保用户可以顺利地部署和运行Activiti系统。以下是对该软件包各个...

    JIRA REST Java Client

    总的来说,JIRA REST Java Client是Java开发者与JIRA系统集成的重要工具,通过其提供的API,可以轻松地构建与JIRA交互的应用程序,实现自动化的工作流、报告生成、通知发送等多种功能。而SOAP API虽然在某些方面提供...

    activiti工作流开发jar包43个

    在Activiti中,它可能用于提供REST API,使外部系统能与工作流引擎交互。 4. `spring-core-3.2.3.release.jar` 和 `spring-beans-3.2.0.release.jar`: Spring框架是Java企业级应用的基石,这两部分分别提供了Spring...

Global site tag (gtag.js) - Google Analytics