introdução a grails: um framework veloz e poderoso

Post on 30-Jun-2015

268 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Nesta apresentação são abordados os principais aspectos e vantagens da utilização do framework Grails no desenvolvimento de sistemas web. Um pequeno exemplo de sistema é mostrado, permitindo que o público tenha ideia de como é programar em Grails, e são ressaltadas suas diferenças em relação ao JSF.

TRANSCRIPT

Introdução a Grails:Um framework veloz

e poderosoBruno Lorenço Lopes

Analista de Tecnologia da Informação (SIn – UFSCar)

14 de outubro de 2014

2

Apresentação Pessoal

Nome: Bruno Lorenço Lopes Formação

Graduação em Engenharia de Computação na USP São Carlos (2005 - 2009)

Especialização em Desenvolvimento de Software para a Web na UFSCar (2010 - 2011)

Mestrado em Ciências da Computação e Matemática Computacional na USP São Carlos (2011 - 2014)

Experiência Profissional Estágio em desenvolvimento de software no CPqD (2009) Analista de Sistemas na Enalta (2010 - 2011) Analista de Tecnologia na UFSCar (2013 - ?) Co-fundador do site www.acerteocarro.com

3

Recordar é viver...

Desenvolvimento do sistema Open BR Track Sistema para monitoramento e gerenciamento de

entregas de produtos JSF + EJB + JPA Organização muito dependente do

desenvolvedor, pode variar de projeto para projeto

Muitos arquivos XML (configurações)

4

Recordar é viver...

Desenvolvimento do sistema Open BR Track Muito código repetido e desnecessário Muito burocrático Código confuso Dificuldade de mudanças Baixa produtividade

5

Arquivos XML...

6

Código desnecessário e repetitivo...

7

Burocracia...

8

Dificuldade de mudanças...

Alterações nas entidades geravam:

Mudanças no banco de dados

Mudança nos DAOs (Data Access Object)

Mudanças nos serviços (fachadas)

Mudanças nos Managed Beans

Mudanças nos XHTML

9

Código confuso...

10

Um Pouco de História

O desenvolvimento do Grails começou em julho de 2005, inspirado no Ruby on Rails

Originalmente o nome era Groovy on Rails

Versão 0.1 saiu em 29 de março de 2006

Versão 1.0 saiu em 04 de fevereiro de 2008

Atualmente a versão mais recente é a 2.4.3

A versão 3.0 se encontra em desenvolvimento e é prevista para 2015

Projeto é patrocinado e liderado pela Pivotal Sofware

11

Groovy e Grails

Linguagem de programação dinâmica que roda na JVM

Framework fullstack (pilha completa) para desenvolvimento de aplicações web

12

Arquitetura

13

O que você ganha com Grails?

14

Princípios do Grails

Convenção em vez de Configuração – Ao invés de fazer toda a configuração explicitamente em arquivos XML, o nome e a localização dos arquivos indicam sua função. Sempre que possível siga as convenções.

DRY (Don’t Repeat Yourself) – No Grails existe um conjunto organizado de artefatos disponíveis para os desenvolvedores, além de geradores de código fonte. Além disso, o Grails favorece a adoção do DRY nos projetos.

MVC (Model-View-Controller) – Padrão arquitetural de software que se baseia na divisão do software em camadas com funções bem definidas.

15

Model-View-Controller

Modelo

Visão

Controlador

Responsável pela organização dos dados e pelas regras do negócio

Responsável apresentação e visualização dos dados

Responsável pela integração entre as camadas de Visão e Modelo

16

Model-View-Controller na Web

Modelo Visão

Controlador

Browser

1. O usuário envia um pedido de url

2. O controlador pede dados ao Modelo

3. O modelo devolve os dados pedidos

4. O controlador seleciona a visão e fornece os dados

5. A visão selecionada é devolvida ao controlador

6. O controlador devolve a visão como resposta para o browser

17

Criando uma App Grails

Comando create-app: Cria uma nova aplicação Grails

18

Scripts Grails, por exemplo

para configuração

Estrutura de um projeto GrailsClasses de domínio e

Serviços fazem parte do Modelo

Controllers fazem parte do

ControladorViews e Taglibs fazem parte do

ControladorCodecs e classes específicas do

Grails“Dicionários”

para internacionalizaç

ãoArquivos de

ConfiguraçãoCódigo Java!Código Groovy

“genérico”Testes unitáriosTestes de integração

19

Estrutura de um projeto Grails

Lista de Plugins utilizados

Tudo que está no classpath,

como bibliotecasNome e versão da aplicação,

versão do GrailsRecursos como CSV, javascripts

e imagensWEB-INF, META-

INFGrails Wrapper

20

Permite construir a aplicação sem ter que configurar o Grails

Grails Wrapper

21

Rodando a aplicação

Comando run-app: Roda a aplicação em modo de desenvolvimento

22

A aplicação inicial padrão

23

Classes de Domínio

Representam as entidades de negócio Tem atributos próprios que são mapeados e

armazenados em um banco de dados, normalmente relacional

Podem apresentar alguns tipos de relacionamento: Herança Dependência 1 para muitos 1 para 1

24

Classe de Domínio - Criação

Vamos criar uma classe de domínio Campeonato

25

Classe de Domínio - Criação

Restrições para os campos da classe

26

Vamos adicionar um campo nome, e duas restrições sobre o tamanho do nome. A primeira que ele deve ter no mínimo 5 caracteres, a segunda que ele deve ter no máximo 20 caracteres

Classe de Domínio – Adicionando Restrições

27

Status da Aplicação

É possível verificar como anda a aplicação

28

Controllers (Controladores)

Responsáveis por tratar as requisições do usuário (browser) com as actions

Realizam algum trabalho sobre a requisição (por exemplo chamar uma classe de domínio ou serviço)

Escolher o tipo de resposta: Executar outra ação de controller (própria ou não)

Renderizar uma visão (GSP)

Renderizar informação diretamente

29

Controllers (Controladores)

Seguem algumas convenções: O nome das classes deve terminar com a palavra Controller

Ficam dentro do diretório controllers

Tipo padrão é prototype, ou seja, uma instância para cada requisição. É possível mudar o tipo.

Métodos públicos são utilizados para tratar os eventos

Ação padrão é a index

30

Controller - Scaffold

Vamos criar um controller Scaffold para a classe Campeonato

31

Controller - Scaffold

1 linha só? O que ela significa?

32

Controller - Scaffold

O controlador está disponível...

33

Controller - Scaffold

Listagem

34

Controller - Scaffold

Página para cadastro de novo

campeonato

35

Controller - Scaffold

O Grails valida se a informação digitada está

de acordo com as restrições

36

Controller - Scaffold

E comunica o sucesso da operação

37

Controller - Scaffold

38

Acrescentando mais campos na classe de domínio

39

Criação de classe de domínio com dependência

Define que se o campeonato for

excluído, a edição também deve ser

excluída

40

Criação de classe de domínio com dependência

Um campeonato pode ter várias edições

41

Criação de classe de domínio com dependência

Cria um link para a adição de novas

edições

42

Criação de classe de domínio com dependência

Deu fã...Por quê???

Aplicação ControllerAction Parâmetros

43

Gerando Controller e Views

Controller

Views

Comando generate-all: Gera o controller com os métodos e as views

44

Gerando Controller e Views

Métodos HTML permitidos para

cada action

Tipo de transição padrão: Somente

leitura

45

Gerando Controller e Views

Agora a view funciona!

46

Entendendo o Controller

47

Entendendo o Controllerlocalhost:8080/CampeonatoBrasileiro/edicao/show/1.xmllocalhost:8080/CampeonatoBrasileiro/edicao/show/1.json

48

Entendendo o Controller

localhost:8080/CampeonatoBrasileiro/edicaolocalhost:8080/CampeonatoBrasileiro/edicao.xml

49

Métodos do GORM (Grails' object relational mapping) Substitui o DAO (Data Access Object)

Vários métodos para busca, atualização, remoção e persistência dos dados

Entendendo o Controller

50

Views (Visões)

São arquivos GSP – Aceitam linguagem HTML e taglibs do Grails

Ficam dentro do diretório do respectivo controller

51

Views (Visões)

Importa a classe EdiçãoDefine uma

variável com nome entityName

Dois modos de chamar uma tag

Grails

message.properties

52

Views (Visões)

53

Views (Visões) Acessos as variáveis vindas do

controller

54

Views (Visões)

Uso de Templates

55

Views (Visões)

Nome dos atributos

56

Views (Visões) O Grails já faz o bind dos atributos

no objeto

57

Services (Serviços)

Camada adicional na parte do model para facilitar o desacoplamento

Convenções: Os nomes das classes terminam com a palavra Service (ex:

EdicaoService)

São transacionais (é possível configurar)

Tipicamente: Acessam as classes de domínio

Acessam outros services

58

Services (Serviços)

Quando usar: Você precisa centralizar a lógica do negócio em uma API de

serviços

Os casos de uso da aplicação operam em múltiplos objetos de domínio, e operações complexas de negócio no modelo não devem ser misturadas com a lógica do controlador

Alguns casos de uso, e processos de negócio são melhor encapsulados fora de um objeto de domínio. Nesse caso, podem ser encapsulados em uma API.

The Definitive Guide to Grails 2 - Jeff Scott Brown, Graeme Rocher

59

Services

Comando create-service: Cria um serviço a partir de uma classe de domínio

60

Services

61

Services

62

Services – Usando no Controller

Injeção de dependência

Chamada do método

63

Testes

Utiliza o Spock, que tem como base o JUnit Compatível com diversas IDEs Linguagem bem semântica

64

Testes

65

Testes

66

Testes

Comando test-app: Realiza testes na aplicação É possível testar uma única classe

É possível determinar o tipo de teste (:unit, :integration)

67

Testes

68

Banco de Dados

Já temos duas classes, controllers, view, servisse, testes....

Mas não falamos ainda de banco

Onde estão os dados???

As respostas estão no arquivo Datasource.groovy, no diretório conf

69

Banco de Dados

Configurações da Base de Dados (H2)

Configurações o Hibernate

70

Banco de Dados

Ambientes específicos para

desenvolvimento, testes, e produção

71

Banco de Dados

E eu posso trocar? PODE!!! Para isso, você deve:

Informar o driver do banco

Configurar a URL

Configurar nome de usuário e senha

72

Configuração do Build

Arquivo BuildConfig.groovy no diretório conf

Permite utilizar repositórios Maven

73

Configuração do Build

Permite utilização de bibliotecas Java, como drivers de bancos de dados

74

Configuração do Build

Permite utilização de plugins

75

Plugins

1162 plug-ins (13 de outubro de 2014) Todo tipo de plugin:

Segurança (Spring Security Core, Apache Shiro Integration for Grails)

Interface (Kickstart with Bootstrap, Grails Admin Interface, Plugin Platform UI)

Persistência de dados (MongoDB GORM, Redis Plugin)

Geração de relatórios (Jasper Plugin, Excel Export Plugin)

Gerenciamento de processos (Grails Activiti Plugin, camunda Grails Plugin)

76

Plugins

Envio de e-mail (Asynchronous Mail Plugin, Provides Mail support to a running Grails application)

Cache (Cache Plugin, Ehcache Cache Plugin)

Agendamento de Jobs (Quartz, Grails Spring Batch Plugin)

Testes (Spock Plugin, Spock Functional Plugin, Geb integration for Grails)

Buscas (Searchable, ElasticSearch Grails Plugin)

Integração com redes sociais (Facebook SDK Plugin, Twitter for Spring Security OAuth plugin)

77

Tecnologias e Bibliotecas

78

Grails: Vantagens

Curva de aprendizado facilitada para programadores Java

Poder das linguagens dinâmicas Padrão MVC Tecnologias consolidadas Suporte de IDEs Muitos plugins

79

Grails: Vantagens

Templates Taglibs Facilidade na hora de testar Alta produtividade

80

Grails: Panorama

Versão 3.0 - Objetivos: Gradle

Spring Boot

Redução de Dependências

Entre outros

81

Grails: Panorama

Fonte: http://zeroturnaround.com/

82

Grails: Panorama

Fonte: http://zeroturnaround.com/

Critérios como:- Facilidade de Uso- Documentação

- Ecossistema- Escalabilidade- Velocidade de

Desenvolvimento

83

Grails: Panorama

Fonte: http://zeroturnaround.com/

85

Conselho

Sempre que possível siga as convenções...

Caso contrário, é possível fazer algumas configurações e utilizar do jeito que você quiser (assim como os outros frameworks)

86

Código

Github https://github.com/portalbll/CampeonatoBrasileiro

87

Perguntas?

top related