登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

杨柳千丝,绊惹春风

普通人日记

 
 
 

日志

 
 
关于我

性格还算开朗,为人还算不错。 长相一般,身高一般,能力一般,人是一般。 不会浪漫,不会情调,不会唱歌,不会跳舞,不会吸烟,不爱喝酒,不会开车,爱听老歌

Groovy 和Grails从入门到精通 第四章 grails 介绍(一)  

2010-06-03 19:19:40|  分类: 技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

第四章 grails 介绍(一)整体介绍

让我们面对现实:开发Web应用程序是困难的。随着web2.0技术的发展,如超文本标识语言 (HTML), 层叠样式表(CSS), 异步Java脚本和XML (Ajax), XML, web 服务, Java, 数据库,该问题日益突出。随着技术发展也出现了像“模型-视图-控制器”(MVC)和Ajax框架等很多开源框架。但是构建应用程序的复杂性不断增加,预算周期继续萎缩,使事情变得更糟。

      近几年,Java社区一直试图通过Java平台(企业版(Java EE)和它的前身,Java 2平台企业版(J2EE))建立相应方法解决这些问题。虽然这些平台已经被证明是可扩展性和强大,但他们不提供敏捷开发。Java EE被无数次证明不是为抽象的应用层而是为更底层技术编写的,这就是所有的像StrutsSpringHibernate等应用框架建立和流行的原因。此外,开发周期的编码,编译,打包,部署,测试和调试的效率太低,并且要求开发人员过于频繁更新知识。

      Grails是一个开放源码的Web开发框架,,它集成了当前最好的应用框架如Spring, HibernateSiteMesh的“规约优于配置”和单元测试优点,再加上Groovy脚本语言运行效率,所有的这些都运行在稳健的JavaJava EE平台上。

在这一章中,你将了解Grails的功能特性和开源框架。然后,你将学习如何利用Grails功能强大的脚手架特性(scaffolding feature)来构建你的第一个Grails应用程序。

什么是Grails

      Grails的不仅是一个开源Java平台的Web框架,而是一个完整的开发平台。像大多数的网络架构,GrailsMVC架构,但它与一般的Java MVC架构不同。与其他JavaMVC框架类似,Grails中也有域类(domain classes)模块用来(控制)view中显示应用程序数据。然而与其他的MVC模式不同的是,Grails域类是持久化的,甚至可以自动生成底层数据库模式(database schema)。像其他MVC框架,Grails的控制器用来处理请求、编排服务或其他行为。不同于大多数MVC框架,服务及其他类可以使用注入的命名约定进行自动注入。此外,Grails的控制器是有请求范围(request-scoped),这意味着为每个请求创建一个新的实例。最后一点,Grails的默认视图是Groovy服务器页面Groovy Server Pages (GSP)),是典型的递送式HTMLrenders HTML),视图层还包括一个灵活的布局、具有模板功能,并且简单的标记库。

其他Grails的优点包括最低配置要求和阿莫尔敏捷开发周期(amore agile development cycle)。Grails的使用主动公约(initiative conventions)最大程度上取消了标准MVC配置和部署描述符。

 此外,由于Grails采用了Groovy的动态语言特性,它通常能够在编码,重建(refreshing),测试和调试上缩短开发周期。这样可以节省宝贵的开发时间,与其他Java MVC框架或Java EE开发相比更加敏捷。

Grails是一个完整的开发平台,包括一个Web容器,数据库,编译系统和好的测试工具test harness out of the box)。这种组合可以减少启动时间和开发项目设置时间为几分钟而不是几小时或几天。使用Grails,您通常不必去寻找和下载一大堆服务器软件或框架作为开始。您也不必花时间创造或维持复杂的构建脚本。 你开始所需要的一切都捆绑在一个简单的安装程序包中。Grails中有一系列令人印象深刻的功能,并都能够集成在成熟的开源项目中。

Grails特点:

      Grails有很多特点可以述说,在这进而,我们只强调几个重要的特点。

规约重于配置

      Grails依赖规约来使应用开发更容易和更高效而不是使用很多的XML配置文件。这也有助于实行不做重复工作(Don’t Repeat Yourself)的原则。很多规约涉及到目录结构,我们将在本章后面“创建应用程序”一节讨论。

单元测试

      单元测试是目前公认的最佳做法,以改善关键的软件交付质量,增加应用程序的可长期维护性。单元测试对于动态类型语言(如Groovy)编写的应用程序来说更重要,因为动态语言没有编译器和单元测试的帮助要确定的改变产生的影响很困难。这就是单元测试成为Grails最重要的规约的原因。正如你将在本章的学习后,在“实施整合测试”一节中创建一个单元测试时, Grails会自动生成域或控制器类。

      Grails的单元测试分成两类:单元和集成。相对其他模拟对象的单元测试来说,Grails的单元测试是独立的,没有依赖关系的。集成测试表现在另一方面,已经进入整个Grails的环境,包括数据库。

      Grails中还包括用于自动化网络接口功能测试。在第五章中,您将学习如何编写功能测试。

脚手架(Scaffolding

      正如您将在本章下半部分体验到, Grails有一个脚手架框架在应用程序中用非常少的代码实现创建,读取,更新和删除(CRUD)功能,使您能够专注于定义Groovy域(通过类的属性、行为和约束的定义)。无论在运行时或开发时间,Grails能够生成控制器行为和Groovy服务器页面(GSP)和域类相关联的CRUD功能。同时,它甚至可以每个域类生成一个包括数据库模式和数据表。

对象关系映射

      Grails中包含一个强大的对象关系映射框架叫做Grails对象关系映射(GORM),像大多数对象关系映射(ORM)框架,GORM可以映射对象到关系数据库和反映它们之间的关系,例如,一对一个或一对多关系。GORMORM的区别在于其构建于动态语言基础上(groovy)。它在类中增加CRUD方法,不需要通过实现这些方法或从一个持久超类中继承。再次,它能够提供一个动态的查找方法和标准搜索的ORM DSL服务。在第6章您将了解更多关于GORM

插件

      Grails并不打算解决所有的WEB开发问题,因而它提供了插件体系和一个社区,在这里你可以找到像安全、测试、搜索、报表、web服务和Ajax之类的插件。插件体系让你的应用程序更容易添加复杂功能。在第7章将展示如何使用CAPTCHA插件来确定注册你的应用软件的实际人数。

整合开源

      Grails不会受到非创造Not Invented Here (NIH))综合证的困扰。不是重新发明轮子,它集成了最佳的工业标准和被证明最好的开源框架,你会在“Grails的架构”一节中看到。

Groovy

      GroovyGrails的支柱之一。正如你在第1-3章的看到,Groovy是一个强大而灵活的开源语言,有其自己的方向。然而,与Java的整合,动态脚本功能和简单的语法使Groovy成为Grails完美的补充,并提供灵活的完整解决方案。

Spring框架

      Spring框架最好的描述是由它的创始人Rod Johnson把它当做Java EE API层之上的抽象应用层。例如,Spring不是从细节处理事务,而是提供了一种传统Java对象(Plain Old Java Objects (POJOs))来定期声明事务Spring provides a means for declaring transactions around regular Plain Old Java Objects (POJOs)),因此你可以专注于业务逻辑。另外,由于SpringJava EE特性带引入POJO,你可以在JavaEE容器外开发和测试你的程序代码,这将提高工作效率。SpringHibernate是最有影响力的Enterprise JavaBeans (EJB) 3.0 规格,将简化Java EE开发。

      Grails隐式的处理的大多数的Spring集成,然而,如果您觉得有必要,在第六章的“注入服务”部分,您将学习如何显式的配置和整合Spring

Hibernate

      暂缺

SiteMesh

暂缺

Ajax Frameworks

      暂缺

Jetty

      暂缺

HSQLDB

      暂缺

JUnit

      暂缺
  评论这张
 
阅读(1263)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018