Arquitetura em Camadas
PRO.NET
Recife - PE
Roteiro
•
Contextualização do problema
•
Descrição da solução: arquitetura em camadas proposta
•
Estudo de caso
•
Conclusões e trabalhos futuros
Contexto
Dicas de arquitetura em
camadas para .NET de
trabalhos antecedentes
Facilidades nativas
da plataforma .NET
Desenvolver aplicações
.NET com qualidade e
produtividade
Aproveitar código
gerado pelo Visual
Studio .NET
Experiência em
desenvolvimento de
aplicações 3
camadas
Requisitos
•
Modularidade
•
Facilidade de manutenção
•
Produtividade
–
–
–
–
Dividir para conquistar
Separação de conceitos
Reusabilidade
Extensibilidade
– Custos de manutenção representam de 50% a 80% do custo total1 do software
– Mudanças em uma camada não afetam as outras, desde que as interfaces sejam
preservadas
– Oportunidades de geração de código
– Aproveitar facilidades da plataforma .NET
– Em alguns casos, a produtividade foi mais importante que o purismo OO
1: J. S. Collofello and S. N. Woodfield. Evaluating the effectiveness of reliabilityassurance techniques. Journal of Systems and Software, 9(3):191-195, 1989.
Arquitetura em camadas
Essa camada
implementa a lógica
de negócio da
aplicação.
GUI
Distribuição
Fachada
Controladores
Cadastros
Persistência
Essa camada executa operações no
meio de armazenamento utilizado e
recupera dados utilizando serviços
externos.
Entidades
Serviços
Gerenciamento
Operacional
Essa camada valida
as informações
recebidas e utiliza a
Camada de Negócio
para fornecer as
respostas. Também
oferece serviços
distribuídos.
Essa camada contém
serviços utilizados por
outras camadas, como
gerenciamento de
transações.
Características das camadas
•
Propósito geral:
– Fornecer suporte para alguma camada superior
– Abstrair as camadas superiores de detalhes específicos
•
Propósito específico:
– Preocupar-se com os detalhes específicos que serão ‘escondidos’ das camadas
superiores
Apresentação e Distribuição
Distribuição
Apresentação
ASP.NET
XML
Windows Forms
HTML
Web Services
Javascript
Persistência e Serviços
Gerenciamento
Operacional
Negócio
Apresentação
•
Uso de CodeBehind permite separar codificação da apresentação
•
Possibilidade de associar entidades a campos da tela (Databind)
•
Uso de controles para validar os dados de entrada (Validators)
•
Possibilidade de criar componentes visuais e usar componentes de
terceiros
•
Referências:
– http://www.asp.net/
– http://www.windowsforms.net/
Distribuição
GUI
Distribuição
Negócio
Persistência e Serviços
Apresentação
Negócio
Persistência
Serviços
Apresentação
Apresentação
Camada de Negócio
Controlador
Cadastro
Persistência e Serviços
Entidade
Gerenciamento
Operacional
Fachada
Entidades - Opções
Opções de
implementação
Vantagens
Desvantagens
XML
Suporte a padrões, Uso de padrões de
domínios, Interoperabilidade,
Flexibilidade
Tipos de dados, Validação,
Exibição, Reconstrução,
Classificação, Ordenação,
Encapsulamento
DataSet
Flexibilidade, Serialização, Associação
de controles de interface, Classificação
e Filtro, Integração com XML,
Disponibilidade de meta-dados,
Extensibilidade
Cliente usar objetos DataSet
ao invés de objetos de negócio,
Alto custo para instanciar e
converter tipos,
Encapsulamento
Typed DataSet
Legibilidade, Interface para cliente,
Verificações em tempo de compilação
Instalação, Extensibilidade,
Herança, Alto custo para
instanciar
Classe
personalizada
Legibilidade, Encapsulamento, Utéis
para modelagem muito complexa,
Validação localizada
Representa sempre única
instancia, Alto custo de
implementação
(relacionamentos, buscas e
classificações), Serialização,
Extensibilidade, Instalação
Classe
personalizada com
operações CRUD
Encapsulamento, Interface para Cliente
Representa sempre única
instancia, Alto custo de
implementação, Outros
Entidades com Typed DataSet
•
•
•
•
A classe DSCliente é gerada automaticamente
A classe Cliente indica quais são as regras de negócios da classe
DSCliente
As demais classes da aplicação só referenciam a classe Cliente
Cada classe Typed DataSet pode encapsular uma ou mais tabelas de
um banco de dados relacional
Cliente
<typed dataset>
RegraNegociosDados
DSCliente
<typed dataset>
Fachada, controladores e cadastros
•
•
•
•
A fachada é o ponto único de acesso a aplicação
Cada cadastro contém as regras de negócios relacionadas a operações
em um conjunto de entidades do mesmo tipo
A fachada e os controladores agrupam regras de negócios de relação
de cadastros distintos
O controle de transação fica na fachada, caso exista. Se a fachada não
existir, fica nos controladores
Persistência e Serviços
Apresentação
Negócio
Persistência
RepositoriosDependente
ControladoresAdapter
Servicos
Gerenciamento
Operacional
IRepositorios
Serviços
Persistência
•
•
•
Isola o resto da aplicação do mecanismo de persistência utilizado (uso
de interface)
Responsável por persistir os Typed DataSets
No caso de bancos relacionais, não faz o mapeamento objeto-relacional
CadastroContas
Conta
RepositorioContasObjectStore
RepositorioContasAccess
RepositorioContasArquivos
Persistência e Serviços
Apresentação
Negócio
Persistência e Serviços
Gerenciamento
Operacional
Gerenciamento de
Transações
Gerenciamento de transações
•
Modo Programático: uso de comandos para iniciar, confirmar e
cancelar uma transação.
•
Modo Declarativo: uso de atributos de métodos para indicar que
determinados métodos estão dentro de um contexto transacional.
Uso do Microsoft Transaction Server (MTS).
Modo programático x Modo declarativo
Gerenciamento de transações
•
Modo Programático: possui custo maior de implementação e é
restrito apenas a gerenciamento de transações.
•
Modo Declarativo: é indicado para gerenciar processos que utilizam
fontes de dados que interagem com Microsoft Distributed Transaction
Coordinator (DTC). Ocasiona perda de performance. Ex.: Tirar dados de
uma fila MSMQ e inseri-los num banco de dados Sql Server.
Modo programático x Modo declarativo
Gerenciamento de transações
•
Modo Programático
GUI
Fachada
Cadastro 1
IRepositorio 1
GerenciadorTransacoes
Gerenciamento de transações
•
Modo Declarativo
GUI
Fachada
(Herda de objeto COM)
Cadastro 1
IRepositorio 1
Microsoft
Transaction
Server
Cenários
•
Cadastro: modela operações de inserção, atualização e remoção de
uma entidade
•
Transações de negócio: modela uma operação da aplicação, como
uma transferência bancária, envio de e-mail etc.
•
Relatório: modela uma consulta a um subconjunto do repositório de
dados.
Cenário Cadastro
GUI
Fachada
Entidade
<typed dataset>
Cadastro 1
IRepositorio 1
Cenário Transações de negócio
GUI
Entidade 1
<typed dataset>
Fachada
Entidade 2
<typed dataset>
Controlador 1
Cadastro 1
Cadastro 2
IRepositorio 1
IRepositorio 2
As classes da esquerda
dependem das entidades
Cenário Relatórios
GUI
Fachada
DSRetornoRelatorio
<typed dataset>
Relatorios
IRelatorios
A consulta do relatório pode
ser implementada como uma
store procedure
Padrões de Projeto
•
Abstract Factory – Para instanciação das classes de acesso ao
mecanismo de persistência
•
Singleton – Para criar única instância da fachada, fábrica de objetos,
XML de configuração
•
Observer – Para registrar novo evento que trata mudanças em um
Typed DataSets
•
Facade – Classe Fachada
Estudo de Caso
Recife - PE
IB
•
Subconjunto de módulo administrativo de aplicação bancária
•
Desenvolvido para ilustrar implementação da arquitetura em camadas
•
Não contempla gerenciamento de transações
Cenário 1:
Cadastros
Cenário 2:
Transações de
negócio
Cenário 3:
Relatório
Considerações finais
Recife - PE
Conclusões
•
A arquitetura em camadas sugerida traz diversos benefícios ao
desenvolvimento de aplicações .NET, como modularidade e
manutenabilidade
•
É possível aproveitar facilidades de desenvolvimento da plataforma .NET
e do Visual Studio .NET para tornar o desenvolvimento produtivo
•
A arquitetura em camadas deve ser sempre ajustada aos requisitos da
aplicação a ser construída
Conclusões
•
A arquitetura criada é baseada na criação de documentos e não
puramente na criação de objetos
•
A arquitetura em camadas pode sempre ser enriquecida com novas
experiências
Trabalhos futuros
•
Automatizar geração de partes da arquitetura usando Qualiti Coder
•
Padronizar tratamento de exceções
•
Tratar questões de segurança e concorrência
Arquitetura em Camadas
PRO.NET
Recife - PE
Download

Apresentação da Arquitetura em Camadas ()