Visual Studio Summit 2013 - Patterns para criação de camadas de acesso a dados

Post on 05-Dec-2014

1.254 views 1 download

description

 

Transcript of Visual Studio Summit 2013 - Patterns para criação de camadas de acesso a dados

Visual Studio Summit 2013

Fernando Henrique Ferreira, desenvolvedor de software.

Patterns para criação de camadas de acesso a dados

ITGROUP

MVP, MCPD, MCTS, MCC e Mestre em Sistemas de Informação.

Visual Studio Summit 2013

Discutiremos sobre o emprego de padrões de projetos para resolução de problemas recorrentes da modelagem de camadas de acesso a dados.

Adoção de padrões para composição de camadas de acesso a dados.

Visual Studio Summit 2013

Camadas de Acesso a Dados

• Encapsular tecnologias de acesso a dados.• Fornecer recursos para inclusão, atualização, exclusão e

leitura de fontes de dados.• “Fontes de dados”, não “bancos de dados”.

Por que criar camadas de acesso a dados?

A aplicação independe da fonte de dados.

Visual Studio Summit 2013

Camadas de Acesso a Dados

• Reaproveitamento de código.• Centralização de políticas de acesso a dados.• Habilidade de testar a camada de negócios de forma

desconectada da fonte de dados.

Outras vantagens…

Visual Studio Summit 2013

Camadas de Acesso a Dados

• Sem regras de negócio.• Comunicação.• Conexões.• Mapeamento.• Ser eficiente, segura e de fácil

manutenção.

Regras da camada de acesso a dados

Visual Studio Summit 2013

Patterns de Acesso a Dados

[ PATTERNS ]

Visual Studio Summit 2013

Patterns de Acesso a Dados

• Soluções reutilizáveis já testadas.• Associados a resolução de um problema.• Patterns abordados:

– Estruturais• Data Access Object• Repository Pattern

– Lógicos• Find or Create• Identity Field

Patterns para criação de camadas de acesso a dados

Visual Studio Summit 2013

Data Access Object

• Pattern mais utilizado.• Pattern mais simples de ser implementado.• Separa o código de acesso a dados das demais camadas da

aplicação.• Cada DAO contém seus próprios métodos, não existe um

padrão de comandos entre as classes de acesso a dados.

Preciso encapsular meu acesso a dados!

Visual Studio Summit 2013

Data Access Object

Visual Studio Summit 2013

Repository Pattern

• Provê recursos para recuperação de dados por meio de uma solução genérica.

• Padroniza o formato como as requisições para a fonte de dados são feitas.

• Muito utilizado com ferramentas de mapeamento objeto-relacional.

Preciso de um repositório genérico!

Visual Studio Summit 2013

Repository Pattern

• Pantheon• Repositório genérico• Projeto open-source• Disponível no GitHub

https://github.com/FerHenrique/PantheonRepository/

Visual Studio Summit 2013

Repository Pattern

[ Show me the code]

Visual Studio Summit 2013

Find or Create

• Busca um dado na fonte de dados e o cria caso não exista.• Muito utilizado em importações de dados.• Tags de blogs fazem uso deste pattern.

Preciso ter certeza que meus dados estão disponíveis

Visual Studio Summit 2013

Find or Create

Visual Studio Summit 2013

Identity Field

• Adoção de uma chave identificadora que distingue um registro de todos os demais dentro do sistema.

• Identificador global.• Relacionado ao conceitos de OIDs (Bancos de dados O.O.)• Utilizado em: migração de sistemas, unificação de fontes de

dados, passagem de parâmetro entre sistemas, controle de concorrência, etc.

Preciso rastrear os meus dados entre diferentes fontes de dados

Visual Studio Summit 2013

Identity Field

Visual Studio Summit 2013

Identity Field

Visual Studio Summit 2013

Patterns de Acesso a Dados

[ PERGUNTAS? ]

Visual Studio Summit 2013

Patterns de Acesso a Dados

[ CONTATO ]

Fernando Henrique I. B. Ferreira@ferhenriquehttp://ferhenriquef.com/ferhenriquef@live.com

[ OBRIGADO! ]

Visual Studio Summit 2013

Patterns de Acesso a Dados

DbContext – Programming Entity Framework – J. Lerman & R. Miller.Microsoft Application Architecture Guide – 2nd Edition – Microsoft Patterns and PracticesData Access Architecture Guide – Microsoft Patterns and Practices Professional ASP.Net Design Patterns – Scott Milletthttp://msdn.microsoft.com/en-us/library/ff649690.aspxhttp://martinfowler.com/eaaCatalog/dataMapper.htmlhttp://msdn.microsoft.com/en-us/magazine/dd569757.aspxhttp://www.codefutures.com/data-access-object/http://thepugautomatic.com/2007/01/importing-legacy-data-into-core-data-with-the-find-or-create-or-delete-pattern/https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdImporting.htmlhttp://en.wikipedia.org/wiki/Object_identifierhttp://www.objectarchitects.de/ObjectArchitects/orpatterns/index.htm?ObjectLayer/object_layer.htmhttp://www.objectarchitects.de/ObjectArchitects/orpatterns/index.htm?OID/index.htmhttp://www.martinfowler.com/eaaCatalog/identityField.htmlhttp://www.objectdb.com/object/db/database/features

Referências