Flex e Java Trocando Experiências

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

Desenvolvimento de Sistemas Distribuídos Web Services
JBanana.
Framework para desenvolvimento web
Aluno: José Silas Barros Brandão Júnior
Sistema Gerenciador de Ocorrências
Estágio Supervisionado II Estágio Supervisionado II Logo e Nomes Equipe.
Projeto 1.
Engenharia de Software
Rational Unified Process(RUP)
Sistema Web para Departamentos
DAS Sistemas Distribuídos para Automação Industrial
Fundação Aplicações de Tecnologias Críticas - Atech
Ferramenta para teste de software
Introdução a JDBC Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Java Persistence API (JPA) Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Arquitetura Usual Definição: Arquitetura que faz uso de apenas duas camadas que, formalizadas, podem ser citadas: View (Visualização): camada que contém.
Model-View-Controller (MVC) em Aplicações Web Eduardo Martins Guerra Desenvolvimento de Soluções WEB.
Visão Geral do Desenvolvimento de Sistemas e Papéis no Desenvolvimento de Software Marcely Dias
Seminários Avançados 3 Conceitos Java EE Servidor de aplicação Tomcat
Segurança Aplicações Java EE Utilizando JAAS
Fundamentos da Engenharia de Software
Universidade Federal de Lavras - UFLA
Gerenciamento de Configuração
DESENVOLVENDO APLICAÇÕES JAVA PARA WEB UTILIZANDO OS FRAMEWORKS STRUTS 2 E HIBERNATE Alexandre Oliveira.
Web Services Uninorte Semana de Tecnologia da Informação
Integração com Banco de Dados
Design Patterns / Acesso ao banco de dados (java.sql)
JSP / Servlets Avançado
Coluna Oracle iMasters nº 11 Instalação Oracle EE 8i Por Ricardo Batalhone Filho Consultor da Silicon Networks Colunista Oracle.
Ferramentas para Automatização de testes
Concorrência e Java RMI
PESQUISADOR: CASSIANO DALCIN / 2010 Trabalho de Conclusão de Curso MINISTÉRIO DA EDUCAÇÃO Universidade Tecnológica Federal do Paraná Campus Medianeira.
The art of Unit Testing. Unit testing O Um teste unitário é uma parte de código (geralmente um método/função), que invoca outra parte de codigo e verifica.
Prof. Alexandre Monteiro Recife
Professor: Márcio Amador
Luiz Antonio Torres, Maio/2014
Rodrigo Cândido da Silva Instrutor VOffice / Globalcode
Arquitetura de Desenvolvimento Web MVC vs. Three Tiers
Implementação MVC Pedro Antonino.
Processos.
Padrão- MVC Model, View, Controller
Introdução Padrões de Projeto
Padrões de Interação com o Usuário
Decisão #1 Decisão-chaveUtilização de C para desenvolvimento do MCTCore. DriversRNF: O código deve ser escrito na linguagem C. Descrição O sistema legado.
Um alternativa para o armazenamento
Padrões de Interação com o Usuário
SISTEMA PROCESSUAL DIGITAL
Tarciane Andrade Análise de Casos de Uso Tarciane Andrade
ZK RIA com ZK Framework.
Arquitetura de Sistemas Envolve os seguintes aspectos
WebPTM Web Project and Time Manager Autor: Daniel Nicoletti Orientador: Prof. Dr. Carlos Miguel Tobar Toledo Co-Orientador: Murilo Woigt Miranda PONTIFÍCIA.
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Servidores.
Globalcode – Open4Education 1 EJB3 Interceptors Ricardo Limonta.
Aula 1 - Fundamentos Web Servidor Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Gilmar Medeiros.
Padrões de Projetos Orientados a Objetos I Wolley W. Silva.
Processo de Desenvolvimento de Software Dirigida a Modelos e Orientada a Serviços (SOA/MDE) Vítor Braga –
Universidade Federal de Sergipe Departamento de Sistemas de Informação Bruno Cruz Jessica Rodrigo Aragão – ASP.NET MVC 3.
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas Programação para Aplicações WEB Profa. Semíramis Assis
1PSL – UFLA - EspecializaçãoJunier Amorim – Eng. Computação Sistema Gerenciador de Componentes para Reuso - SGCR -
Desenvolvimento WEB II Ajax – Utilização de Frameworks Javascript Professora: Kelly de Paula Cunha.
Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.
Desenvolvimento WEB II Professora: Kelly de Paula Cunha.
Projeto de Arquitetura de Software
Aplicativos para Web MVC Prof. Odair Indena Jr.
ALUNO: RONI FABIO BANASZEWSKI Model-View-Controller.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Web Services / SOA. O cenário de TI nas corporações Novas tendências batiam à porta das corporações Migraram o foco do “gerenciamento de dados” para o.
Persistência de dados e padrão DAO Padrões de Projeto Orientado a Objetos Profa. Danielle Martin/Mauricio Universidade de Mogi das Cruzes.
Transcrição da apresentação:

Flex e Java Trocando Experiências Floripa Flex Adobe User Group Rafael Mauricio Nami

Motivação Trocar experiências nas possíveis integrações entre Java e Flex Discutir possíveis soluções para problemas recorrentes em RIA em geral com Java Discutir próximos temas de encontros do AUG e iniciativas do grupo

Bio Rafael Nami trabalha em desenvolvimento de sistemas a mais de 6 anos Foco em Metodologias Ágeis, RIA, Java Consultor, Líder técnico e sócio da Extersoft Tecnologia

Integrações Colocar os jars do blazeDS no classpath da aplicação web Configurar o FlexFactory (opcional) Configurar o remoting-config.xml para expor os serviços Configurar os RemoteObjects na view Flex

Problemas de integração – Parte Java ORMs – LazyInitializationException Segurança – Session? JAAS? Spring Security? Como tratar? Expor Domains ou não? Xml, SOAP, JSON ou AMF?

Vamos por partes...

ORM e o Lazy... Este é um problema que não ocorre só no Flex ORMs implementam o padrão Unit of Work ORMs trabalham com manipuladores de bytecode e proxies dinâmicos para melhorarem a performance das operações internas

ORM e o Lazy – Possíveis soluções Configurar todas as associações como eager Inicializar os dados na unit of work apropriada, fazendo um design apropriado da arquitetura da aplicação “Taking drugs” – utilizar frameworks que remediam este problema, como o dpHibernate (Flex Only) e o Gilead (Nasceu para o GWT, mas já é utilizado para Flex também)

ORM e o Lazy – Possíveis soluções Na falta de paciência sempre tem o bom e velho JDBC... try { ... }catch(SQLException e) { ... transaction.rollback(); }finally{ ... }

Segurança Que recursos proteger? Como manter a sessão no flex? Como restringir a criação de componentes/telas? Restrição de URLs

Segurança Flex não é um recurso JavaEE Aplicações RIA são o mais próximo possível do que se pode haver de uma aplicação desktop – como é a segurança de aplicações desktop mesmo??? Alguns conceitos de JavaEE não se aplicam a RIA (Flex é RIA, Data-Aware)

Segurança – Possíveis Soluções “Thread” no flex configurando remoteObjects/httpServices com o token recebido no login SecureComponentFactory – criar os componentes de tela verificando se o token possui permissão para acesso/manipulação do componente Criar o menu dinamicamente pelos perfis do token logado logo no início do startup do sistema SharedObjects para manter um armazenamento no cliente da sessão e/ou preferências Abordagem SOA – Manter uma flag “logado” no banco (feio, porém é muito mais comum do que a gente pensa – e realmente funciona...)

Ainda não existe a Bala de Prata na Segurança de RIA...

Expor Domains ou não? Domain Design é uma técnica onde a modelagem de negócio é toda feita em função de responsabilidade de objetos A modelagem de cada domain deve ser proporcional e dirigida para cada responsabilidade Expor domains fora do contexto de negócio é um problema de segurança

Mas... O que é Domain? NÃO são as entities ORM Arquiteturas CRUD genéricas são transaction scripts, não domain Utiliza Interfaces em profusão Possui estado interno (Não é um javabean) Comunica-se com outros domains por meio de mensagens trocadas

Expor Domains ou não? Solução – Aplicar o pattern VO (Value Object) No caso de utilização de AMF, o VO pode ser “Assemblado” na própria camada de façade da aplicação (que é exposta ao flex) Já utilizando Xml, SOAP ou JSON, o assembly pode ser feito na camada controller (antes do marshalling)

XML, SOAP, JSON ou AMF? Tudo depende de onde você quer mais facilidade Ponto forte – Ferramental excelente para exposição de serviços, padrão de arquitetura SOA, arquitetura flex é mais simples Ponto fraco – Tamanho do Pacote é o maior, performance e latência de rede são as piores*; Arquitetura servidor pode ficar mais complexa

XML, SOAP, JSON ou AMF? XML Ponto forte – Padrão de arquitetura SOA, arquitetura flex é mais simples (E4X) Ponto fraco – Caso utilize atributos, a performance e latência de rede são médias; Arquitetura servidor pode ficar mais complexa (necessita de marshalling/unmarshalling de VOs)

XML, SOAP, JSON ou AMF? JSON Ponto forte – Padrão de arquitetura WOA, arquitetura flex é mais simples (E4X), performance e latência de rede são muito boas. Ponto fraco – Arquitetura servidor pode ficar mais complexa (necessita de marshalling/unmarshalling de VOs)

XML, SOAP, JSON ou AMF? AMF Ponto forte – Arquitetura servidor é bem mais simples, performance, tamanho do pacote e latência de rede são os melhores, arquitetura flex fica OO. Ponto fraco – Arquitetura flex fica um pouco mais complexa.

Mas cadê o Flex desta reunião? Demorou, mas agora sim, vamos falar de Flex...

MVCs Cairngorm Flex itself Swiz

Cairngorm Feito pela Adobe Moldes J2EE “Provê” desacoplamento entre componentes e a microarquitetura Abstrai a complexidade de tratar RemoteObjects, HttpServices

Cairngorm – Fluxo Básico O componente dispara um evento (CairngormEvent) Controller recupera o evento, disparando-o para o Command mapeado O command executa o delegate Após o retorno da execução RPC (remoteObject, HttpService, etc...) modifica o modelLocator, que por utilizar Bind irá modificar o componente visual

Cairngorm – Problemas Cópia do evento (resolvido com o Cairngorm Extensions) Proliferação de Commands, Events e Delegates (resolvido com o Cairngorm Extensions) ModelLocator é um repositório de variáveis (questão de uso consciente) Única situação em flex que o próprio evento de dispacha (para não haver dependência do cairngorm em cada componente visual) Difícil de aplicar testes unitários, por ser um framework intrusivo.

Cairngorm – Pontos Positivos A padronização do código traz muita produtividade É relativamente estável Não possui problemas muito graves quando utilizado racionalmente

Flex itself Pode se escolher utilizar o próprio flex para ser o MVC Necessitaria de algumas classes Interceptador de eventos borbulhados Controller Delegate Model Apenas uma organização de código e a correta utilização de eventos e listeners já basta

Swiz Container IOC para AS3, feito por Chris Scott NÃO É UM MVC Mas provê muita coisa que facilita E MUITO o desenvolvimento Dentre os comentados, demonstra a programação mais limpa e simples

Swiz – Fluxo Básico O componente dispara um evento (Pode ser de qualquer tipo herdado de Event primitivo do Flex) pelo singleton Swiz Este evento é verificado entre as annotations Mediate, e se alguma está configurada para o evento, executa o método configurado O Controller executa o delegate apropriado Após o retorno da execução RPC (remoteObject, HttpService, etc...) modifica o Model injetado, que por utilizar Bind irá modificar o componente visual por estar também injetado no componente

Swiz – Problemas Ainda está na versão 0.5 (mas já é totalmente funcional) Comunidade ainda pequena Ainda polui o componente que dispara o evento com o Swiz.dispatchEvent (há como contornar, colocando um listener no stage para os tipos de eventos que chamam mediate)

Swiz – Pontos Positivos Brutalmente simples Estável A programação fica extremamente mais limpa, e com pouquíssimos artefatos por caso de uso Configurações muito simples de fazer Muito simples de testar unitariamente com um Fluint ou um FlexUnit

Outros... Mate Penne PureMVC Anvil Parsley Prana <mx:FloripaFlexFmk????>

Sugestões pra próximos encontros Vamos discutir!

Iniciativas Colocar no site do AUG links para projetos no googleCode para facilitar o estudo em flex com Java. As pequenas aplicações serão focadas em regras de segurança (módulo de segurança), com casos de uso para manter usuário e perfis de usuário. A aplicação será em 2 versões diferentes - Na parte server, pode ser em jdbc com spring ou JPA/Hibernate Annotations com spring, e na view, Cairngorm ou Swiz Haverá integração com JAAS, JSecurity e Spring Security

Demorou mais acabou... Muito Obrigado a todos!