Foros del Web » Programación para mayores de 30 ;) » Programación General »

Dudas sobre programación por capas

Estas en el tema de Dudas sobre programación por capas en el foro de Programación General en Foros del Web. Hola a todos! ¿DÓNDE VAN LAS SENTENCIAS SQL? En un modelo de programación de tres capa (presentación, lógica de negocio y datos) ¿en que capa ...
  #1 (permalink)  
Antiguo 25/11/2015, 08:20
 
Fecha de Ingreso: noviembre-2015
Mensajes: 4
Antigüedad: 9 años
Puntos: 0
Información Dudas sobre programación por capas

Hola a todos!

¿DÓNDE VAN LAS SENTENCIAS SQL?
En un modelo de programación de tres capa (presentación, lógica de negocio y datos) ¿en que capa deberían ir las sentencias SQL, LINQ, etc?

¿EXACTANENTE QUÉ HAY EN LA CAPA DE DATOS?
Cuando hablamos de la "capa de datos" ¿nos referimos al servidor físico de datos o al modelaje? Por ejemplo en el caso de EF6 un archivo .EDMX ¿sería la capa de datos?

Gracias a todos.
  #2 (permalink)  
Antiguo 25/11/2015, 08:24
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Dudas sobre programación por capas

Cita:
Iniciado por pregunton112 Ver Mensaje
Hola a todos!

¿DÓNDE VAN LAS SENTENCIAS SQL?
En un modelo de programación de tres capa (presentación, lógica de negocio y datos) ¿en que capa deberían ir las sentencias SQL, LINQ, etc?
En la capa de datos.
El SQL es el método de acceso a los datos, pero no es exactamente la capa DE DATOS. No es exactamente lo mismo.

Cita:
Iniciado por pregunton112 Ver Mensaje
¿EXACTANENTE QUÉ HAY EN LA CAPA DE DATOS?
Cuando hablamos de la "capa de datos" ¿nos referimos al servidor físico de datos o al modelaje? Por ejemplo en el caso de EF6 un archivo .EDMX ¿sería la capa de datos?


Datos, lo que hay son datos.
Todo lo que no sea almacenamiento o lectura, no es capa de datos.
Un reporte o generador de reportes no es capa de datos. Es logica de negocio.

El servidor físico no es capa de datos. Es arquitectura de hardware. En esa arquitectura corren los servicios de la capa de datos.

Cuando hablas de programacion en capas, estás hablando de software, NO HARDWARE.
El hardware es parte de los requerimientos de implementación, pero no de las capas...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/11/2015, 08:57
 
Fecha de Ingreso: noviembre-2015
Mensajes: 4
Antigüedad: 9 años
Puntos: 0
Respuesta: Dudas sobre programación por capas

Gracias por la respuesta.
Sigo teniendo una duda. Concreto la pregunta.

Una solución en .NET con tres proyectos.
En el proyecto que he denominado CapaDatos tengo un EDMX con el modelo de la BD.
En el proyecto CapaLogica tengo los métodos que atacan mediante LINQ a la capa de datos.
En el proyecto CapaPresentacion tengo los formularios, informes, etc.

Utilizo EntityFramework 6
¿Tengo un caos conceptual? , ahora bien, el código lo tengo controlado y cualquier actualización me resulta muy fácil implementarla

Gracias
  #4 (permalink)  
Antiguo 25/11/2015, 09:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Dudas sobre programación por capas

Un EDMX, desde el punto de vista estricto, no es capa de datos. Es un DAC (Data Access Controller), y pertenece a las interfaces de acceso a la capa de datos.
La capa de datos es autónoma, si existe acoplamiento con la IF, entonces hay un error conceptual y de diseño.

La idea central es que la capa de datos debe ser accesible aunque cambies el FWK, la aplicación e incluso el lenguaje usado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 25/11/2015, 09:52
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 10 meses
Puntos: 52
Respuesta: Dudas sobre programación por capas

En realidad el problema con el EDMX es que te mete el modelo y el DbContext (o sea el acceso a datos) en el mismo lugar.

Tenés 2 opciones:

1 - si te fijás, el EDMX va acompañado de 2 archivos con extension .tt que son Templates de T4, que se usan para generar el modelo y el DbContext respectivamente. Lo que podés hacer es pasar uno de los .tt (el del DbContext) a un proyecto aparte, y corregirle la ruta del archivo .edmx para que lo busque en la carpeta del otro proyecto. Así te quedaría el EDMX y el Model en un proyecto, y el DbContext en otro proyecto aparte.

2 - No usar EDMX y en lugar de eso usar Code First. Con Code First, vos declaras las entidades y el DbContext en código, y esto te permite poner las clases que quieras en los proyectos que quieras. Esto es preferible a la opción anterior, porque te da más flexibilidad, y además el formato EDMX está obsoleto y no es soportado en versiones nuevas de EF.
  #6 (permalink)  
Antiguo 26/11/2015, 02:13
 
Fecha de Ingreso: noviembre-2015
Mensajes: 4
Antigüedad: 9 años
Puntos: 0
Respuesta: Dudas sobre programación por capas

Gracias por las respuestas!

Cita:
formato EDMX está obsoleto y no es soportado en versiones nuevas de EF
No he leído nada al respecto. Si tienes alguna información agradecería la publicaras por aquí.
  #7 (permalink)  
Antiguo 26/11/2015, 03:39
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: Dudas sobre programación por capas

Cita:
Iniciado por pregunton112 Ver Mensaje
Gracias por las respuestas!



No he leído nada al respecto. Si tienes alguna información agradecería la publicaras por aquí.
Básicamente es que en EF 7 desaparece el DB Model First, con lo que trabaja con Code First.

Yo lo que suelo hacer es precisamente separar en proyectos diferentes el DbContext y las entidades.

Si quieres mirar libros sobre arquitecturas de capas, tienes uno bastante bueno y gratuito de Microsoft sobre DDD (Domain-Driven Design) llamado "Guía de Arquitectura N-Capas orientada al Dominio con .NET 4.0". En él te explican como separar las plantillas de EF, el uso de patrones como Repository o Unit Of Work, responsabilidades de las diferentes capas, etc. Yo creo que es un libro bastante bueno para comenzar a entrar en el tema.
__________________
Aviso: No se resuelven dudas por MP!

Última edición por Malenko; 26/11/2015 a las 09:04
  #8 (permalink)  
Antiguo 27/11/2015, 02:16
 
Fecha de Ingreso: noviembre-2015
Mensajes: 4
Antigüedad: 9 años
Puntos: 0
Respuesta: Dudas sobre programación por capas

Muchas gracias!.

La "Guía de Arquitectura N-Capas orientada al Dominio con .NET 4.0" estupenda.
La desconocía.

Veo que es de 2010 y es una primera edición. He googleado y no veo que haya versiones posteriores. Si alguien pudiera hacer un breve resumen de lo que ha cambiado evolucionado en estos cinco años sería fantástico.

Gracias nuevamente.

Etiquetas: capas, dudas, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:30.