Quais os fatores que devem afetar o uso de Acesso a Dados Camada I em um novo projeto?

StackOverflow https://stackoverflow.com/questions/201132

  •  03-07-2019
  •  | 
  •  

Pergunta

I estará ensinando um Q classe, e eu preciso explicar o que fatores devem afetar sua decisão de tecnologia de acesso de dados. Eu estou familiarizado com muitos métodos de acesso a dados como conjuntos de dados digitados, LINQ to SQL, LINQ to Entities, .netTiers, LLBLGen e chamadas personalizados com objetos de conexão SQL e objetos de comando. Alguns dos meus clientes só irá permitir procedimentos a serem usados ??armazenados, e eles não vão discutir qualquer outra coisa. Alguns dos meus clientes não estão dispostos a instalar o .NET 3.5 ainda. Alguns clientes exigem uma camada de serviços web meio em qualquer aplicação web. Na maioria das vezes eu usar tipos de conjuntos de dados e serviços Web personalizados, ou eu uso .netTiers com CodeSmith. O que mais eu deveria estar pensando?

Foi útil?

Solução

Tal como com todos os de escolha em um projeto de software: Depende ... Mas na minha opinião o fator mais importante é o ambiente do projeto.

Este é constituído por (Não tenho a pretensão de que esta lista é completa em todo o caso):

  • capacidades internas equipe de desenvolvimento e equipe de manutenção (se diferente)
  • recursos necessários
  • As restrições definidas pelos clientes (nem todos os clientes suportam todas as tecnologias disponíveis. Isto certamente algo que você deve levar em conta ao substituir gradativamente um sistema legado ou a introdução de um novo sistema para um ambiente)
  • As restrições estabelecidas pela legislação

espero que isso ajude você.

Outras dicas

Uma coisa importante a lembrar é que um banco de dados não é necessariamente apenas um armazenamento de dados de backup para um aplicativo (isoladamente). Outras aplicações e processo poderia, eventualmente, exigir o acesso ao banco de dados, especialmente em tempo de grande ou bancos de dados “empresa” (ou aplicações) e especialmente dado o suficiente.

É importante considerar:

  • ETL / Cargas / Migration
  • Integração Externa / sincronização (BizTalk / SSIS)
  • A reutilização por outros aplicativos (principalmente web sites, aplicações móveis, etc)
  • Segurança / superfície de ataque (é uma abordagem menos seguro do que outro?)
  • As tarefas de manutenção
  • Disponibilidade - será o banco de dados estar em uso 24/7? É uma abordagem vai proporcionar uma melhor disponibilidade do que o outro, etc.
  • Além disso, algumas considerações de design está em ordem. É você ajuste para seleciona mais rápido, ou mais rápido escreve? design de acesso Uma dados pode executar melhor do que outro.

    Eu não estou dizendo que não há uma única bala de prata, mas o que eu faço cuidado é que qualquer padrão de design de acesso de dados requer “grande figura” pensou - que vai abordar as preocupações de hoje e que você pode razoavelmente prever poderiam ser as necessidades de amanhã ?

    Além disso, você será fornecer uma API externa ou alguma estrutura para acesso a dados consistentes? Será que vai ser exposto diretamente ou indiretamente?

    Há um lugar, eu acho que, tanto para o Entity Framework / LINQ to SQL, Stored Procedures tradicionais e outras ferramentas como NHibernate (etc), mas você deve justificar e racionalizar a escolha da tecnologia em primeiro lugar, e tentar garantir que ele é apropriado para o presente e futuro necessidades.

    EDIT: Desculpe, esqueci-me do grande: manutenção. Algumas das soluções orientadas modelo oferecer-lhe algumas vitórias decentes em ser capaz de regenerar uma DAL após as mudanças de esquema, em detrimento de outros (como a mão de procedimentos armazenados escritos). Vale a pena ponderar os ganhos de produtividade vs as desvantagens.

    Eu acho que entre o seu post original e adições de norbertB você cobriu quase tudo. Iniciar com as restrições absolutas (e lembre-se, que só porque um cliente não diz algo uma vez - mesmo se eles dizem que é absoluta - isso não significa que você não pode ajudar a mudar a sua mente ...). Uma vez que você estreitou para baixo do campo com as restrições absolutas olhar para as outras coisas.

    Uma coisa que parecia ser deixado de fora foi flexibilidade. Por exemplo, se eu estivesse tentando escolher entre duas tecnologias semelhantes e eu sabia que se podia apoiar visualizações atualizáveis ??e o outro não poderia, mesmo que eu não tinha absolutamente nenhuma necessidade de visualizações atualizáveis ??na época eu ainda inclinar-se para que um " just in case".

    Eu estou realmente só pensando em duas coisas. A primeira é se eu vou ter tantos dados que mais importa nada. Se você não está colocando milhões de linhas em tabelas, ele provavelmente não importa qual tecnologia você está indo para usar, porque eles vão todo o trabalho rápido o suficiente.

    A segunda coisa é se eu posso usar LINQ, porque acho que o uso de LINQ (para SQL, às Entidades, para LLBLGen, não importa) para consultar o banco de dados dá-lhe duas coisas importantes. A primeira é que é muito fácil de consultas de escrita e, segundo, que é moderadamente fácil de alternar entre dois quadros que precisam LINQ, em mudança requisitos de caso.

    Licenciado em: CC-BY-SA com atribuição
    Não afiliado a StackOverflow
    scroll top