proposito modelo capas terminology data-access-layer

terminology - proposito - capas del modelo osi



¿Cuál es el propósito de una capa de acceso a datos? (9)

Comencé un proyecto hace mucho tiempo y creé un proyecto de Data Access Layer en mi solución, pero nunca he desarrollado nada en él. ¿Cuál es el propósito de una capa de acceso a datos? ¿Hay alguna buena fuente que pueda aprender más sobre la capa de acceso a datos?


El DAL debe abstraer su base de datos del resto de su proyecto; básicamente, no debe haber SQL en ningún código que no sea el DAL, y solo el DAL debe conocer la estructura de la base de datos.

El objetivo principal es aislar el resto de la aplicación de los cambios en la base de datos y facilitar la extensión y el soporte de su aplicación, ya que siempre sabrá a dónde ir para modificar el código de interacción de la base de datos.


El objetivo es abstraer el mecanismo de recuperación de almacenamiento de datos del uso y manipulación de datos.

Beneficios:

  • El almacenamiento subyacente puede cambiar (cambiar de Oracle a MSSQL, por ejemplo), y necesita una forma de localizar esos cambios
  • Cambios en el esquema - ver arriba
  • Desea una forma de ejecutar desconectado de su db (modo de demostración): agregue serialización / deserialización de archivos al DAL

El propósito es abstraer los detalles de acceso a la base de datos que otras partes de su aplicación no deben preocuparse.


En dos palabras: acoplamiento suelto

Para mantener el código que utiliza para extraer los datos de su almacén de datos (base de datos, archivos planos, servicios web, lo que sea) separados de la lógica comercial y el código de presentación. De esta forma, si tiene que cambiar los almacenes de datos, no termina reescribiendo todo.

En estos días, varios marcos ORM están mezclando el DAL con otras capas. Esto generalmente facilita el desarrollo, pero cambiar los almacenes de datos puede ser doloroso. Para ser justos, cambiar las tiendas de datos de esa manera es bastante raro.


Las capas de acceso a datos tienen mucho sentido cuando muchas partes diferentes de su aplicación necesitan acceder a los datos de la misma manera.

También tiene sentido cuando necesita acceder a los mismos datos de muchas maneras diferentes. Por ejemplo, cómo los procesadores de texto pueden leer muchos tipos de archivos diferentes y convertirlos silenciosamente en el formato interno de la aplicación.

Tenga en cuenta que un DAL también puede ser muy contraproducente. Si está construyendo un sistema donde el rendimiento del acceso a los datos es crítico, separarlo de la lógica comercial puede hacer que algunas optimizaciones vitales sean imposibles.


Te recomiendo que leas aquí: http://msdn.microsoft.com/en-us/practices/default.aspx El uso de un DAL te ayudará a aislar tu acceso a los datos de tu presentación y lógica de negocios. Lo uso mucho para poder intercambiar fácilmente (a través de la reflexión y la carga dinámica de ensamblajes) los proveedores de datos.

Lea, mucha buena información allí.

Además, busque en el bloque de acceso a datos si planea usar .NET. Puede ser una gran ayuda.


Una capa de acceso a datos se utiliza para abstraer el almacenamiento y la recuperación de datos de su representación. Puede leer más sobre este tipo de abstracción en los patrones de diseño de 1994


Una capa de acceso a datos sigue la idea de "separación de preocupaciones" por la cual toda la lógica requerida para que su lógica de negocios interactúe con su capa de datos (base de datos) está aislada de un único conjunto de clases (capa). Esto le permite cambiar más fácilmente la tecnología de almacenamiento de datos físicos de back-end (pasar de archivos XML a una base de datos, o de SQL Server a Oracle o MySQL, por ejemplo) sin tener un gran impacto (y si se hace bien teniendo cero impacto) en su lógica de negocios.

Hay muchas herramientas que lo ayudarán a construir su capa de datos. Si busca la frase "asignador relacional de objetos" o "ORM", debería encontrar información más detallada.


Hay dos propósitos principales de una capa de acceso a datos

  1. Resuma el motor de base de datos real u otro almacén de datos, de modo que sus aplicaciones puedan pasar de usar Oracle a usar el servidor MS SQL

  2. Resuma el modelo de datos lógicos de modo que su Business Layer esté desacoplada de este conocimiento y sea independiente de ello. Le brinda la posibilidad de modificar el modelo de datos lógicos sin afectar la capa de negocios

La mayoría de las respuestas aquí han proporcionado la primera razón. En mi opinión, es el segundo que es mucho más importante. Esencialmente, su capa empresarial no debe conocer el modelo de datos lógicos que está en uso. Hoy con ORMs y Linq # 2 parece salir por la ventana y las personas tienden a olvidar (o no son capaces de ver las líneas finas que hacen y deberían existir) sobre # 2.

Básicamente, para comprender bien el propósito y la función de una capa de datos, debe ver las cosas desde la perspectiva de la capa empresarial, teniendo en cuenta que la capa empresarial debe ser independiente del modelo de datos lógicos de su almacén de datos.

Entonces, cada vez que la capa de negocios necesita datos, por ejemplo, si debe solicitar los datos que necesita de una manera agnóstica de modelo de datos lógicos muy simple. Por lo tanto, haría una llamada a la capa de acceso a datos, como por ejemplo:

GetOrdersForCustomer(42)

Y recupera exactamente los datos que necesita sin tener en cuenta las tablas en las que se almacena esta información o relación, etc.

He escrito un artículo en mi blog que entra en más detalles.

El propósito y la función de una capa de acceso a datos