Upload
benedito-monsanto-tuschinski
View
224
Download
4
Embed Size (px)
Citation preview
Recife - PE
Arquitetura em Camadas PRO.NET
Roteiro• Contextualização do problema
• Descrição da solução: arquitetura em camadas proposta
• Estudo de caso
• Conclusões e trabalhos futuros
Contexto
Experiência em desenvolvimento de
aplicações 3 camadas
Aproveitar código gerado pelo Visual
Studio .NET
Dicas de arquitetura em camadas para .NET de trabalhos antecedentes
Facilidades nativas da plataforma .NET
Desenvolver aplicações .NET com
qualidade e produtividade
Requisitos• Modularidade
– Dividir para conquistar– Separação de conceitos – Reusabilidade– Extensibilidade
• Facilidade de manutenção– 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
• Produtividade– 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 reliability-assurance techniques. Journal of Systems and Software, 9(3):191-195, 1989.
Arquitetura em camadas
GUI Distribuição
Fachada
Controladores Cadastros Entidades
Persistência 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
implementa a lógica de negócio da
aplicação.
Essa camada executa operações no meio de armazenamento utilizado e recupera dados utilizando serviços
externos.
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
Negócio
Persistência e Serviços
Gerenciamento
Operacional
ApresentaçãoASP.NETWindows Forms
XMLHTML
Javascript
Distribuição
Web Services
Apresentação e Distribuição
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 Serviços
Negócio
Persistência e Serviços
Apresentação
Persistência e Serviços
Gerenciamento
Operacional
Apresentação
Camada de Negócio
Fachada
Controlador Cadastro Entidade
Apresentação
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 - Opções
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 DSCliente<typed dataset>
RegraNegociosDados
<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
Gerenciamento
Operacional
Apresentação
Negócio
RepositoriosDependente
IRepositorios ControladoresAdapter
Servicos
Persistência Serviços
Persistência e 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
Conta
CadastroContas RepositorioContasObjectStore
RepositorioContasAccess
RepositorioContasArquivos
Apresentação
Negócio
Persistência e Serviços
Gerenciamento Operacional
Gerenciamento de Transações
Persistência e Serviços
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 Modo declarativox
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 Modo declarativox
Gerenciamento de transações• Modo Programático
GUI
Fachada
Cadastro 1
IRepositorio 1
GerenciadorTransacoes
Gerenciamento de transações• Modo Declarativo
GUI
Fachada
Cadastro 1
IRepositorio 1
(Herda de objeto COM)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
Cadastro 1
IRepositorio 1
Entidade<typed dataset>
Cenário Transações de negócioGUI
Fachada
Cadastro 1
IRepositorio 1
Entidade 1<typed dataset>
Cadastro 2
IRepositorio 2
Controlador 1
Entidade 2<typed dataset>
As classes da esquerda dependem das entidades
Cenário RelatóriosGUI
Fachada
Relatorios
IRelatorios
DSRetornoRelatorio<typed dataset>
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
Recife - PE
Estudo de Caso
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
Recife - PE
Considerações finais
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
Recife - PE
Arquitetura em Camadas PRO.NET