recife - pe arquitetura em camadas pro.net. roteiro contextualização do problema descrição da...

35
Recife - PE Arquitetura em Camadas PRO.NET

Upload: benedito-monsanto-tuschinski

Post on 07-Apr-2016

224 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

Recife - PE

Arquitetura em Camadas PRO.NET

Page 2: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

Roteiro• Contextualização do problema

• Descrição da solução: arquitetura em camadas proposta

• Estudo de caso

• Conclusões e trabalhos futuros

Page 3: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

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

Page 4: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

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.

Page 5: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

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.

Page 6: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

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

Page 7: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

Negócio

Persistência e Serviços

Gerenciamento

Operacional

ApresentaçãoASP.NETWindows Forms

XMLHTML

Javascript

Distribuição

Web Services

Apresentação e Distribuição

Page 8: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

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/

Page 9: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

Distribuição

GUI Distribuição

Negócio

Persistência Serviços

Negócio

Persistência e Serviços

Apresentação

Page 10: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

Persistência e Serviços

Gerenciamento

Operacional

Apresentação

Camada de Negócio

Fachada

Controlador Cadastro Entidade

Apresentação

Page 11: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

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

Page 12: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

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>

Page 13: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

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

Page 14: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

Gerenciamento

Operacional

Apresentação

Negócio

RepositoriosDependente

IRepositorios ControladoresAdapter

Servicos

Persistência Serviços

Persistência e Serviços

Page 15: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

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

Page 16: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

Apresentação

Negócio

Persistência e Serviços

Gerenciamento Operacional

Gerenciamento de Transações

Persistência e Serviços

Page 17: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

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

Page 18: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

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

Page 19: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

Gerenciamento de transações• Modo Programático

GUI

Fachada

Cadastro 1

IRepositorio 1

GerenciadorTransacoes

Page 20: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

Gerenciamento de transações• Modo Declarativo

GUI

Fachada

Cadastro 1

IRepositorio 1

(Herda de objeto COM)Microsoft

Transaction Server

Page 21: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

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.

Page 22: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

Cenário Cadastro

GUI

Fachada

Cadastro 1

IRepositorio 1

Entidade<typed dataset>

Page 23: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

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

Page 24: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

Cenário RelatóriosGUI

Fachada

Relatorios

IRelatorios

DSRetornoRelatorio<typed dataset>

A consulta do relatório pode ser implementada como uma store

procedure

Page 25: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

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

Page 26: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

Recife - PE

Estudo de Caso

Page 27: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta 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

Page 28: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

Cenário 1: Cadastros

Page 29: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

Cenário 2: Transações de negócio

Page 30: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

Cenário 3: Relatório

Page 31: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

Recife - PE

Considerações finais

Page 32: 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• 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

Page 33: 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• 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

Page 34: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

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

Page 35: Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da solução: arquitetura em camadas proposta Estudo de caso

Recife - PE

Arquitetura em Camadas PRO.NET