Upload
fernando-henrique
View
1.254
Download
1
Embed Size (px)
DESCRIPTION
Citation preview
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/[email protected]
[ 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