O documento discute padrões para criação de camadas de acesso a dados no Visual Studio Summit 2013. É apresentado o Data Access Object e o Repository Pattern, que encapsulam acesso a dados e fornecem recursos de inclusão, atualização e leitura de fontes de dados de forma independente. Também são discutidos os padrões Find or Create e Identity Field.
Visual Studio Summit 2013 - Patterns para criação de camadas de acesso a dados
1. 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.
2. 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.
3. 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.
4. 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…
5. 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
7. 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
8. 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!
10. 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!
11. Visual Studio Summit 2013
Repository Pattern
• Pantheon
• Repositório genérico
• Projeto open-source
• Disponível no GitHub
https://github.com/FerHenrique/PantheonRepository/
13. 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
15. 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
19. Visual Studio Summit 2013
Patterns de Acesso a Dados
[ CONTATO ]
Fernando Henrique I. B. Ferreira
@ferhenrique
http://ferhenriquef.com/
ferhenriquef@live.com
[ OBRIGADO! ]
20. 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 Practices
Data Access Architecture Guide – Microsoft Patterns and Practices
Professional ASP.Net Design Patterns – Scott Millett
http://msdn.microsoft.com/en-us/library/ff649690.aspx
http://martinfowler.com/eaaCatalog/dataMapper.html
http://msdn.microsoft.com/en-us/magazine/dd569757.aspx
http://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.html
http://en.wikipedia.org/wiki/Object_identifier
http://www.objectarchitects.de/ObjectArchitects/orpatterns/index.htm?ObjectLayer/object_layer.htm
http://www.objectarchitects.de/ObjectArchitects/orpatterns/index.htm?OID/index.htm
http://www.martinfowler.com/eaaCatalog/identityField.html
http://www.objectdb.com/object/db/database/features
Referências