Boas Práticas de Programação com ADO.NET

Slides:



Advertisements
Apresentações semelhantes
Passo a passo: Configuração de Login no ASP.NET
Advertisements

Vitor Santos Microsoft Corporation
Segurança na .NET Framework
ASP.NET e ADO.NET.
O que é Web Part? Web Parts é um conjunto integrado de controlos que permitem aos utilizadores modificar o conteúdo, aparência e comportamento de páginas.
Criar uma Aplicação Web em ASP.NET v Tipos de Sites Web gerados pelo VS2005 File-system Web sites Ficheiros armazenados num directório local É utilizado.
Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita.
Camada de Acesso a Dados em ASP.NET
Tecnologia de Programação BD em.Net: Conexão com SQL Server 1º Semestre 2009 > PUCPR > BSI Bruno C. de Paula.
BD em.NET: Passo a passo conexão com SQL Server 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.
Prof. Alessandro J. de Souza
e-Learning Perspectivas e Tendências
Bases de Dados 2 José Júlio Alferes Departamento de Informática
Amaro de Sousa Instituto de Telecomunicações
Capacitação Profissional Woopi-FACENS Módulo Web
Área de Desenvolvimento de Sistemas
Edson Silva BD / ADO. NET Edson Silva
Módulo 4: Gerenciando o acesso aos recursos
Introdução a JDBC Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Curso de Educação e Formação Tipo 5
TSDD Teste de segurança durante o desenvolvimento.
Lan Manager Integrantes: Bruno Moleiro Regis Felipe Fujiy Pessoto
Transparência Total! O Software Secullum TI.Net foi desenvolvido para facilitar o gerenciamento das informações que circulam nos computadores conectados.
ETHERNET - Engenharia de Tráfego em Redes Ethernet baseadas na Norma IEEE 802.1s MSTP Amaro de Sousa Instituto de Telecomunicações DETI, Universidade de.
Utilizar o computador em segurança
Boas práticas no desenvolvimento de aplicações para Windows Mobile
DOCUMENTO CONFIDENCIAL DA MICROSOFT Set 2009 | Página 1 | Apresentação para BDMs.
PHP em Windows WUX202 Nuno Nóbrega Batista Adminsaude
Bancos de Dados SQL Server 2012.
Acesso a Base de Dados JDBC Trabalho Realizado por:
Rodrigo Cristiano Silva
Tecnologias Web ADO.NET
Rodrigo Cristiano Silva
ADO.NET Framework INE 5612 – DSOOII
XIV Jornada de Cursos .NET com C# Antônio Carlos Bruno Inojosa.
Tecnologias.NET Equipe: Ayrton Johab Rejane Roosevelt Wanessa.
Autenticação em Aplicações Web Notas para a disciplina de Segurança Informática Pedro Félix Instituto.
Linguagem Técnica de Programação VI Prof.: Luiz Gustavo Jordão Soares.
Higher Education Statistics in C# Language
P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº Marco AndradeNº
Curso EFA de técnico de Informática e Sistemas
Tecnologias de Informação e Comunicação
XIII Jornada de Cursos .NET com C# Lucas Mello Flávio Almeida.
Prof. Rodrigo de Matos Vargas
Linguagem Técnica de Programação VI
XIV Jornada de Cursos .NET com C# Antônio Júnior Bruno Inojosa.
Adriano Melo Introdução ao ASP.NET Adriano Melo
SSIS – O poder da configuração. Isaque d’Aires Skills: ASP.NET, VB.NET, C#:NET, Sql Server, SSIS... Consultor da Novabase na CGD
Excepções Conceito de Excepção A classe Exception
JSP e Servlets ISEP – LP2 Filipe Costa – /2004.
Programação Orientada à Objetos
Configuração do Ambiente de programação
ICORI Instalação e configuração de computadores em redes locais e Internet Pedro Amaro –
Curso de Educação e Formação Tipo 5
Bruno Inojosa MCP.NET Framework.NET com C#. Aula V  Tópicos abordados:  Desenvolvendo para internet (Parte III) Gerenciamento de Estados User Controls.
Quando usar autenticação? Usuário deve ser responsabilizado por seus atos As informações dos usuários são confidenciais Deseja-se mecanismo de controle.
Introdução Identificação x Autenticação; Identificação não requer autenticação; Autenticação requer identificação; Usar hash para senhas. Ex. SHA-2;
Prof.°: João Henrique Disciplina: SOR II
Introdução ao ASP.Net 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.
1 15/4/ :36 FMU – 1. Semestre – Tecnologia – Analise e Desenvolvimento de Sistemas Professor: Eduardo Silvestri Aluno:Clóvis de Oliveira- RA
Virtualização/Hipervisão/Servidores Microsoft
Professor: Carlos Lousada Silva Curso de Educação e Formação Tipo 5 Desenvolvimento de Aplicações Informáticas Disciplina: Instalação Microcomputadores,
Projeto de Banco de Dados Prof.Ms.Rodrigo Luiz Comitante Leão.
Bruno Inojosa MCP.NET Framework.NET com C#. SQL Básico.
ICORI Instalação e configuração de computadores em redes locais e Internet Pedro Amaro –
Acesso a Bases de Dados ADO.NET. Namespace System.Data Modos de aceder à informação OLE DB – namespace System.Data.OleDb SQL - namespace System.Data.SqlClient.
Prof. Sidney Galeote. 2 www. prasabermais. com  Visão Geral sobre a dimensão de qualidade “performance”  Custo da qualidade  Como a performance deve.
Servidores Formanda: Raquel Pimentel Formador: Nuno Veríssimo.
Persistência de dados e padrão DAO
Persistência de dados e padrão DAO Padrões de Projeto Orientado a Objetos Profa. Danielle Martin/Mauricio Universidade de Mogi das Cruzes.
Transcrição da apresentação:

Boas Práticas de Programação com ADO.NET Vasco Nunes Safira Consultadoria http://www.safira.pt

Tópicos Como aceder de forma segura a dados usando ADO.NET Como gerir excepções em ADO.NET Como implementar transacções Como desenvolver aplicações ADO.NET de alta performance Técnicas de gestão de dados em ADO.NET Orientações no uso de Databound Controls Novas funcionalidades do ADO.NET 1.1

Pré-requisitos Conhecimentos de Arquitectura do .NET Conhecimentos de VB.NET ou C# Conhecimentos de conceitos de SGBDR Conhecimentos de ADO e ADO.NET

Outra vez o ADO.NET? Já sabemos construir aplicações em ADO & ADO.NET e queremos construir aplicações de alta performance Queremos saber os principais benefícios das aplicações feitas com ADO.NET Queremos usar o ADO.NET de uma forma optimizada

Demonstrações Segurança em ADO.NET Tratamento de erros Tratamento de transacções Boas práticas de performance Paginação de dados Boas práticas de data-binding

Agenda Recomendações de Segurança na utilização de ADO.NET no acesso a dados Recomendações no Tratamento de Erros Semântica de Transacções em ADO.NET Boas práticas de Performance Paginação de dados em ADO.NET Boas práticas usando Databound Controls ADO.NET 1.1: Novas funcionalidades

ADO.NET: Recomendações de Segurança Modos de Autenticação Autenticação Windows® vs. Autenticação SQL Segurança é gerida mais facilmente Usernames e passwords não são necessários nas connection strings Maior segurança no login Gestão de Passwords: períodos de expiração, comprimentos mínimos, bloqueio de contas depois de múltiplos logins inválidos Passwords não são enviadas “em claro” pela rede

ADO.NET: Recomendações de Segurança Modos de Autenticação Evitar personificação na Camada de Negócio para tornar o pooling de ligações mais eficiente Criação de ligação pooled demora mais com autenticação Windows do que autenticação SQL; na execução de comandos, a diferença é insignificante

ADO.NET: Recomendações de Segurança Connection String: Opções Connection string pode ser guardada em: Ficheiros XML de configuração Ficheiros UDL para provider OLEDB COM+ Catalog (para serviced components) Windows Registry ... Usando autenticação Windows Autenticação Windows não necessita que a password seja guardada

ADO.NET: Recomendações de Segurança Connection String: Opções Cifrar connection string no ficheiro XML Restringir acesso a connection string guardada no Registry usando ACLs e/ou cifrando os dados Alterar Persist Security info para false na connection string Evita o retorno da password através da propriedade ConnectionString das classes SqlConnection ou OleDbConnection

Demonstração 1 Segurança em ADO Demonstração 1 Segurança em ADO.NET Protecção contra Ataques de injecção de código SQL Autenticação Windows e SQL

Agenda Recomendações de Segurança na utilização de ADO.NET no acesso a dados Recomendações no Tratamento de Erros Semântica de Transacções em ADO.NET Boas práticas de Performance Paginação de dados em ADO.NET Boas práticas usando Databound Controls ADO.NET 1.1: Novas funcionalidades

Tratamento de erros: Boas práticas Tratamento de Excepções No ADO.NET os erros são propagados através de Excepções disponibilizadas a partir das classes SqlException ou OleDbException Estender classes base para fazer o throw de erros com mais significado para código específico de acesso a dados Usar Excepções para verificar o estado de uma ligação é ineficiente Usar ConnectionState.Open ou ConnectionState.Close

Tratamento de erros: Boas práticas Erros em Stored Procedures Erros gerados em stored procedures usando o statement RAISEERROR São propagados para o ADO.NET como excepções Excepções geradas se severidade > 10 Ligação é fechada se severidade > 16

Tratamento de erros: Boas práticas Erros em Stored Procedures Para mensagens informativas (severidade <=10), não é gerada excepção Mensagens informativas podem ser capturadas no ADO.NET criando um handler para o evento infoMessage da connection AddHandler conn.infoMessage, New SqlClient.SqlinfoMessageEventHandler(Addressof MessageEventHandler) Sub MessageEventHandler(ByVal sender As Object, ByVal e As SqlClient.SqlinfoMessageEventArgs) ‘do whatever

Demonstração 2 Tratamento de erros em ADO Demonstração 2 Tratamento de erros em ADO.NET Tratamento de excepções e propagação de erros de Stored Procedures

Agenda Recomendações de Segurança na utilização de ADO.NET no acesso a dados Recomendações no Tratamento de Erros Semântica de Transacções em ADO.NET Boas práticas de Performance Paginação de dados em ADO.NET Boas práticas usando Databound Controls ADO.NET 1.1: Novas funcionalidades

Semântica de Transacções Transacções Manuais Permitem um controlo mais efectivo da semântica transaccional Aplicação é responsável pela transaction recovery, concorrência, segurança, ... Transacções manuais não são suportadas no Distributed Transaction Coordinator (DTC)

Semântica de Transacções Transacções Manuais SqlConnection.BeginTransaction inicia uma transacção e retorna o objecto SqlTransaction associado Associar ao objecto da transacção todos os comandos que queremos executar no contexto dessa transacção A classe SqlTransaction tem métodos para fazer commit e rollback de transacções

Semântica de Transacções Transacções Automáticas Usar serviços COM+ para transacções automáticas Criar uma classe que herde de ServicedComponent para obter um componente COM+ Acrescentar o atributo [Transaction] à classe para controlar o comportamento transaccional

Semântica de Transacções Transacções Automáticas O atributo [AutoComplete] determina “auto-magicamente” se uma transacção deve efectuar commit ou abort Se a execução do método termina sem erros, a transacção é committed. Caso contrário a transacção é abortada Registar o componente no COM+ para ter transacções automáticas Assinar o componente com “strong name”

Semântica de Transacções Níveis de isolamento Controla a visibilidade das alterações efectuadas numa transacção Componentes COM+ 1.0 têm, por defeito, o nível de isolamento Serializable Maior nível de isolamento, dados da transacção não são visíveis para outras transacções até ao commit da transacção COM+ 1.5 (Windows.NET Server) permite configurar o isolation level

Demonstração 3 Manipulação de Transacções Transacções Manuais

Agenda Recomendações de Segurança na utilização de ADO.NET no acesso a dados Recomendações no Tratamento de Erros Semântica de Transacções em ADO.NET Boas práticas de Performance Paginação de dados em ADO.NET Boas práticas usando Databound Controls ADO.NET 1.1: Novas funcionalidades

Boas práticas de Performance Configuração da Pool de Ligações O managed provider de SQL efectua automaticamente a pool de ligações baseado nas connection strings As connection strings têm de corresponder exactamente para estarem na mesma pool

Boas práticas de Performance Configuração da Pool de Ligações Pool de ligações para provider de SQL pode ser configurada na connection string Especificar os seguintes parâmetros & valores na connection string Max Pool Size Min Pool Size Não esquecer de fechar a ligação para a fazer retornar à pool

Boas práticas de Performance Técnicas de recolha de dados ADO.NET disponibiliza múltiplas técnicas de recolha de dados quando uma query é executada É importante ter noção dos resultados que a query devolve para se escolher a técnica de recolha de dados mais apropriada

Boas práticas de Performance Opções de execução de queries ExecuteScalar – retorna o valor da primeira linha e primeira coluna do result set. Útil para queries de contagens, somas, máximos, mínimos,... ExecuteNonQuery – retorna o número de linhas afectadas pela execução da query. Usado com queries de insert, update, delete ou queries DDL, que não retornam resultados ExecuteReader – retorna uma stream de resultados: “forward-only” e rápido DataAdapter.Fill – preenche o DataSet com os resultados da query

Boas práticas de Performance Manipulação de Blobs ADO.NET suporta recolha e armazenamento de binários de/para o Data Provider Dados binários podem ser guardados num byte array

Boas práticas de Performance Manipulação de DataSets DataSets podem armazenar uma cópia local de resultados de queries num formato hierárquico Aplicações clientes podem tratar um DataSet como um SGBDR local DataSets são especialmente úteis para aplicações client-side com frequentes lookups a dados

Boas práticas de Performance Dataset Vs. Datareader DataSets são mais pesados que DataReader para operações de leitura simples e “forward-only” DataSets são mais funcionais que DataReaders DataSets podem ser usados para armazenar resultados de uma query e funcionar como cache Rich clients podem usar DataSets para evitar round trips à base de dados e usar DataReaders para leituras “forward-only”

Demonstração 4 Boas práticas de Performance Pooling de Ligações Alternativas de recolha de dados Manipulação de Datasets Manipulação de BLOBs

Agenda Recomendações de Segurança na utilização de ADO.NET no acesso a dados Recomendações no Tratamento de Erros Semântica de Transacções em ADO.NET Boas práticas de Performance Paginação de dados em ADO.NET Boas práticas usando Databound Controls ADO.NET 1.1: Novas funcionalidades

Paginação de dados em ADO.NET Paginação de dados User Interface paginado é melhor para grande volume de dados Ganhos com o acesso paginado a dados: Menos largura de banda na rede Maior velocidade em cada execução Menor ocupação de memória na Base de Dados Menor ocupação de memória na camada de negócio Melhor performance para queries sobre tabelas ordenadas e indexadas em colunas unique

Paginação de dados em ADO.NET Paginação de dados Custos com o acesso paginado a dados: Necessita de uma query mais elaborada Mais esforço na Base de Dados Mais roundtrips entre cliente e a BD aumentando a carga em termos de queries Concatenação de colunas é necessária para tabelas sem uma coluna unique

Paginação de dados em ADO.NET Paginação de dados Stored procedure com coluna unique CREATE PROCEDURE GetProductsPaged @lastProductID int, @pageSize int AS SET ROWCOUNT @pageSize SELECT * FROM Products WHERE [standard search criteria] AND ProductID > @lastProductID ORDER BY [Criteria that leaves ProductID monotonically increasing]

Demonstração 5 Paginação de Dados Utilização de Paginação de Dados

Agenda Recomendações de Segurança na utilização de ADO.NET no acesso a dados Recomendações no Tratamento de Erros Semântica de Transacções em ADO.NET Boas práticas de Performance Paginação de dados em ADO.NET Boas práticas usando Databound Controls ADO.NET 1.1: Novas funcionalidades

Boas práticas usando Databound Controls Comparação entre Databound Controls Usar DataReaders para ASP.NET aceder a dados Usar DataSets quando queremos fazer cache de dados ou com web services DataGrid binding é mais lento do que usar o controlo DataRepeater (early-bound)

Boas práticas usando Databound Controls Optimização de Databinding Não esquecer que as ligações devem ser fechadas (mesmo no mundo do GC) Analisar e optimizar índices das tabelas da base de dados Reduzir os dados recolhidos da base de dados ao estritamente necessário Usar ExecuteScalar e queries com os parametros unicamente necessários para maximizar a performance e reduzir o tráfego da rede

Boas práticas usando Databound Controls Optimização de Databinding Usar o early bound DataRepeater para recolher dados de uma forma “forward-only” e rápida Armazenar dados de acesso frequente numa cache/DataSet para evitar round trips com a base de dados

Demonstração 6 Boas práticas de Data Binding Utilização do Controlo Datagrid Utilização do Controlo Datarepeater

Agenda Recomendações de Segurança na utilização de ADO.NET no acesso a dados Recomendações no Tratamento de Erros Semântica de Transacções em ADO.NET Boas práticas de Performance Paginação de dados em ADO.NET Boas práticas usando Databound Controls ADO.NET 1.1: Novas funcionalidades

ADO.NET 1.1: Novas funcionalidades Novos providers ADO.NET 1.1 inclui: SqlClient OleDb OracleClient novo Odbc novo Não é necessário instalá-los separadamente Framework .NET 1.1 inclui ADO.NET 1.1

ADO.NET 1.1: Novas funcionalidades SQLClient e Partial Trust Cenário Uma aplicação vai ser executada em sand-boxes partially-trusted Internet Explorer A partir de um share \\server\share\app.exe A partir de um URL http://server.com/app.exe … Solução SqlClient (ADO.NET 1.1) Conceder permissões explicitamente Microsoft .NET Framework 1.1 Configuration

ADO.NET 1.1: Novas funcionalidades HasRows Cenário Foi executado um SELECT Este pode ou não conter rows No ADO.NET 1.0, não é possível descobrir isso sem iniciar a leitura Result-sets vazios podem dar problemas com data-binding Solução Usar propriedade SqlDataReader.HasRows

Sumário da sessão Nesta sessão abordámos: Recomendações de Segurança na utilização de ADO.NET no acesso a dados Recomendações no Tratamento de Erros Semântica de Transacções em ADO.NET Boas práticas de Performance Paginação de dados em ADO.NET Boas práticas usando Databound Controls ADO.NET 1.1: Novas funcionalidades

A importância da Formação Especializada Safira lança curso em parceria com a DevelopMentor Guerrilla Web Services.NET Objectivo: dotar os participantes da capacidade de compreensão da tecnologia e da aplicação das melhores práticas, de forma eficaz e inovadora no seu ambiente de trabalho, no desenvolvimento de Web Services Formadores de elevado prestígio, exclusivos da DevelopMentor: Aaron Skonnard Scott Boom Simon Horrel

fim vasco.nunes@safira.pt www.safira.pt