`
javasogo
  • 浏览: 1817558 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多

关于WebWind这一REST风格的Java MVC框架,首先学习下什么是REST,表象化状态转变(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。目前在三种主流的Web服务实现方案中,因为REST模式的Web 服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。由此看见,REST是一种设计风格而不是一个标准。

  • REST有一些设计概念和准则:


    网络上的所有事物都被抽象为资源(resource);
    每个资源有一个唯一的资源标识(resource identifier);
    通过通用的连接器接口(generic connector interface)对资源进行操作;
  • 对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法;
    对资源的各种操作不会改变资源标识;
    所有的操作都是无状态的(stateless);
  • 能够利用Cache机制增进性能。

    由此可以看出,REST风格的系统尤其适合于广域网的应用,因为“将所有的事物看做资源”的准则对搜索引擎友好,可以方便地被搜索引擎retrieve到;加上缓存的使用,可以增加广域网应用的效率;另外,“所有的操作无状态”,更是对B/S这种生而无状态的应用的充分肯定。(一些类似于维基百科之类的互联网应用也许就是使用的REST风格的设计。)

在学习并简单使用(一个具有登陆功能的简单商品展示模块)WebWind之后,发现这个使用起来相对简单的REST风格的MVC框架仍然有其可以改进的地方。

优点:充分体现约定优于配置、配置简单、只要有Spring开发经验上手极快、易于扩展、灵活、统一的异常管理、内置的文件上传功能、方便与其他应用框架集成……

可以改进的地方:

不够灵活。首先从跳转上来说吧,也许直接在Bean中进行跳转对减少配置文件数量非常有用,也许是遵循“约定优于配置”的规则,但是我仍然认为在bean中直接跳转,可能会导致系统在变更(任何情况导致的变更)时的高成本。

@Mapping("/")对应的URI。目前貌似对应的URI只能使用表达式,不能使用通配符。对于某些情况(例如:URI中包含某个目录时都需要进行的操作),仍然无法使用。

目前,只有这么一点小小体验,也许是总做企业级应用系统,对REST风格的系统没有深入了解,难免会有偏颇,以后持续关注REST与WebWind。

分享到:
评论

相关推荐

    webwind 依赖包

    在Webwind中,这个库用于处理框架内部的调试、错误和信息记录,确保开发者能够获取到关于应用运行状况的关键信息。 其次,`guice-2.0.jar`是Google Guice的第二个主要版本,一个轻量级的依赖注入框架。Guice通过在...

    模拟MVC webwind

    有助于学校MVC,模拟mvc的的过程,文档表现,对了学校mvc有很大帮助

    webwind,超迷你的MVC框架

    WebWind是一个轻量级的MVC(模型-视图-控制器)框架,专注于提供高效、简洁的开发体验。在IT领域,MVC架构是一种广泛应用于Web应用开发的设计模式,它将业务逻辑、数据处理和用户界面分离开来,使得代码更易于维护和...

    c3p0连接池、jquery-easyui-1.2.6分页、 webwind框架

    在这个项目中,结合C3P0、jQuery EasyUI和WebWind,可以构建一个高效、易用且功能完善的Web应用,实现数据库连接管理、前端页面分页显示,以及后端的业务逻辑处理。通过对这些技术的深入理解和合理应用,可以提升...

    REST风格的架构

    2. **WebWind**:这个标签可能是指WebWind框架,但目前没有公开广泛使用的框架叫这个名字。可能是作者自定义或者一个相对小众的框架。如果WebWind是一个定制的或小众的Web框架,那么它可能是为了简化Web开发,提供...

    设计 REST 风格的 MVC 框架

    例如,在WebWind框架中,一个管理博客的Controller可能如下定义: ```java public class BlogController { @Mapping("/blog/{id}") public String getBlog(@PathVariable("id") int id) { // 业务逻辑 return ...

Global site tag (gtag.js) - Google Analytics