Recife - PE Arquitetura em Camadas PRO.NET. Roteiro Contextualização do problema Descrição da...

Preview:

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

Recommended