Aplicacoes Multicamadas

Preview:

DESCRIPTION

Material didatico da disciplina Aplicações Multicamadas do curso de especialização 'Desenvolvimento de Aplicações utilizando Software Livre' - UNAMA 2008

Citation preview

Aplicações Multicamadas

Oscar A.K. Sampaio

Aplicações MulticamdasAplicações CorporativasArquitetura MulticamadasDivisão de Camadas

Alta demanda Alto desempenho Distribuídas Complexas

Escalabilidade Extensibilidade

Aplicações Empresariais

arquitetura de software o aplicativo é dividido em várias camadas,

onde cada camada é responsável por um determinado aspecto ou funcionalidade◦ apresentação, ◦ lógica de negócio, ◦ persistência, etc

Multicamadas

Desacoplamento

Processamento Distribuido

Componentização

Escalabilidade

Extensibilidade

Aplicações Multicamadas

Apresentação – Cliente Apresentação – Servidor Lógica de Negócios Modelo Persistência Integração

Camadas

Camadas

Plataforma JEEPlataforma Java para aplicações CorporativasServidor de AplicativosCamadas na Plataforma JEEEnterprise Java BeansJava Persistence API

Plataforma Java para aplicações corporativas

Arquitetura Multicamadas

Baseada em componentes

Servidor de Aplicativos / Containers

Plataforma JEE

Núcleo da plataforma JEE

Hospeda o aplicativo corporativo – componentes

Fornece infra-estrutura (serviços)

Ex.: Jboss, GlassFish, Open

Servidor de Aplicativos

Servidor de Aplicativos

Clientes Web◦ Páginas HTML/XML◦ Browser

Applets

Aplicativo cliente

Camada de Apresentação - Cliente

Hospedado no servidor Páginas JSP e Servlets MVC Interagem com outras camadas do

aplicativo Geram páginas HTML/XML enviadas ao

cliente

Camada de Apresentação - Servidor

Camada de Apresentação - Servidor

Implementados por Enterprise Java Beans

Hospedados no Servidor

Componentes/Distribuídos

Camada de Lógica de Negócios

Servidor de Aplicativo Abstrai a complexidade de implementação

de aplicações multicamadas◦ Concorrência◦ Comunicação◦ Gerenciamento de recursos◦ Etc.

Hospedam os componentes JEE Fornece Serviços

Containers JEE

Container WEB◦ JSP◦ Servlets

Container EJB◦ EJBs

Tipos de Containers

Containers JEE

Os componentes utilizam os serviços do container para executar as tarefas

Servicos JEE

JNDI – serviço de diretórios JTA – controle transacional JAAS – segurança JPA – persistência Java Mail – serviço de e-mail Web Services JMS – serviço de Mensagens ...

Serviços JEE

Processo de montar e instalar um aplicativo no servidor

Deploy

Componentes Distribuidos

Gerenciados pelo Container

Transacional

Segurança

Enterprise Java Beans

Para o desenvolvedor são classes Java anotadas

Para o container ◦ São objetos gerenciados◦ Acesso Remoto◦ Atendem a várias requisições de múltiplos

clientes

Enterprise Java Beans

Enterprise Java Beans

Implementa lógica de negócios

Existe durante uma sessão de Interação

Tipos:◦ Stateless◦ Statefull

EJB – Session Beans

Implementação◦ @Stateless◦ @Statefull

Interfaces◦ @Local◦ @Remote◦ @WebService

EJB – Session Beans

Assincrono – orientado a Mensagens Servidor de Mensagens Anotação: @MessageDriven

EJB - Message Driven Beans

Enterprise Java Beans

JPA – Java Persistence API Responsável por persistir os objetos java

em banco de dados. Padronização Especificação Implementações: Hibernate, TopLink,

OpenJPA, etc.

Camada de Persistência

JPA – Java Persistence API

As entidades do modelo são POJOs Mapeamento objeto-relacional padronizado

◦ Configuração – XML◦ Anotações

Regras de empacotamento simples Pode eliminar a necessidade de DTOs EntityManager – centraliza a interação com o

JPA Persistence Unit – define uma unidade de

persistencia acesso a um banco de dados – persistence.xml

JPA - Java Persistence API

@Entity – informa ao JPA que a classe é uma entidade e deve ser persistida

@Table(name=“...”) – informa o nome da tabela que irá persistir a entidade

@Id – marca uma propriedade da classe como chave primária – identificador

@GeneratedValue – como gerar o id (chave primária) @Column (name=“...”) – informa o nome da coluna que irá

persistir o campo @Lob – BLOBs @Enumerated – tipos enumerados @Temporal (tipo) – Data, Hora e Data+Hora @Transient – não persiste a coluna

JPA – Anotações