Visual CSharp .NET - En sentido trasladar la información entre capas.

 
Vista:

En sentido trasladar la información entre capas.

Publicado por Jessica (8 intervenciones) el 05/03/2010 01:29:18
Ántes que nada, pido me disculpen a aquellos expertos en POO si lo que estoy preguntando es una barbaridad.

Ok, he visto que quienes utilizan la POO trabajan en capas, si hablan de 3 capas regularmente se refieren a la capa de presentación, a la capa de reglas de negocio y a la capa de acceso a datos.

Bien, resulta que cuando se realiza una consulta por ejemplo, en donde pueden extrarse varios registros de la DB, estos registros pueden ser agragados a un objeto tipo table por ejemplo, después de ahí son vertidos a un objeto list<T>, donde T es en este caso una entidad donde fué representada la tabla de la cuál se extrajo la información, esto es, ejecuto un consulta (SELECT * FROM tbArticulos)-"Capa de Datos", los resultados los vierto en un objeto table-"Capa de datos", la table la recorro y los vierto en un list<Articulos> -"Capa de reglas de negocio" y ya esta la vierto en un datagrid - "Capa de presentacion".

Por favor que algún experto me ilustre el verdadero sentido de realizar todo este manejo de la información, o cuando si y cuando no es necesario.

Espero haber sido clara.

Ok, disculpen mi falta de visión y deseo iluminen mi conocimiento.

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:En sentido trasladar la información entre capas

Publicado por m (66 intervenciones) el 06/03/2010 00:04:27
Que tal, me parece muy valida tu pregunta. Cuando es necesario separar por capas?
Supongamos:
comienzas una aplicacion, un sitio web, entonces en una pagina necesitas
conectarte y cargar algunos datos. En otra pagina necesitas mostrar
mas datos entonces lo mas "facil pareceria copiar, pegar y modificar la consulta", hasta aca todo bien, asi lo haces con otras paginas mas. Ahora que sucede cuando
cambian alguna tabla o si estabas cargando los datos de excel,y ahora necesitas cargarlos usando mysql, en este caso tendrias que modificar todas las paginas.

Ahora si separas por capas y cambia la base de datos, tu interfaz de usuario,
no cambiara, solo cambiarias la parte que se concecta a la base de datos y sabes
aveces terminas escribiendo menos codigo al separar por capas. Es mas facil de darle
mantenimiento cuando ocurre un error, se entiende mejor cuando lo muestras a los demas.

Entonces cuando es necesario separa por capas? Cuando tu aplicacion en un futuro
pueda cambiar, cuando no eres el unico programador. Y cuando quieres hacer las cosas
bien. Aveces en una aplicacion pequenia digamos una ventana en el mismo archivo
que lleva el codigo puedes implementar las tres capas, que al final solo son metodos,
clases,...etc.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:En sentido trasladar la información entre capas

Publicado por Jessica (8 intervenciones) el 07/03/2010 05:00:14
m, agradezco tu respuesta.

He visto que la mayoria y al igual que tu, el beneficio viene cuando por alguna razón se cambia la fuente de datos, bien, eso es correcto de alguna forma ya que sólo cambiaría escasos 2 parámetros y bueno, si tengo mi ensamblado para acceso a datos, sólo este será modificado, me parece, bien. Y si tengo que agregar un campo?, esto afectará a todas las capas, no?.

Ahora bien, mira m, si voy a consultar entiendo que está bien que en la DAL vierta los registros en una tabla o en un dataset, después pase por la capa de negocios, pero porqué razón aquí tengo que trasladarla a una entidad tipo lista genérica, en esta parte cuál es la razón?, me parece que la capa de presentación ya puede instanciar a la capa de negocios y traer el objeto tipo dataset y sin necesidad de esperar a una list<T>, bueno eso creo, si me equivoco decirme en qué.

Gracias nuevamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roger

RE:En sentido trasladar la información entre capas

Publicado por roger (77 intervenciones) el 07/03/2010 16:33:26
un dataset es un objeto generico que en si mismo no representa nada, nada te dice que es de clientes, que es de ventas, etc ( a no ser que sea un dataset tipado, pero no deja de ser un dataset). La idea de utilizar listas genericas es aprovechar y seguir la metodologia de la programacion orientada a objetos, donde representas el modelo de negocio en terminos de objetos. En ese sentido no es lo mismo un metodo que retorne un Dataset que tiene una tabla de clientes, que un Metodo que retorne una lista de clientes como tal, y si aparte de eso se pueden usar listas genericas para garantizar que la lista sea de ese tipo (porque la lista podria ser un array de clientes simplemente), pues mucho mejor. Ademas la manera de llenar una lista generica no es solo mediante un dataset, si se quiere mejor rendimiento se puede hacer uso de un datareader para llenar la lista generica y seguro que el rendimiento es mejor que el de un dataset o un datatable.

Te recomiendo mucho que leas este articulo http://msdn.microsoft.com/es-es/library/aa479317.aspx. Te despejará muchas dudas al respecto.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:En sentido trasladar la información entre capas

Publicado por Esteban (2 intervenciones) el 28/03/2010 21:49:10
Me sumo al tema.... yo utilizo muchisimo las listas genericas ya que soy partidario de la programación orientada a objetos... si haces un muy buen analisis y diseño orientado a objeto, facilitara muchisimo el labor.

Ahora, tengo una pregunta... yo vengo utilizando un esquema de 3 capas en el cual no utilizo DataSet, lleno todo por DataReader (logicamente... datareader en la DAL si o si...), siempre manejado todo absolutamente con clases, llemnno clases, agrego a listas, y asi......... El problema es q hasta el momento instalabamos todo en un servidor, y los clientes se encargaban de ir contra este....
Ahora mi pregunta es si quiero instalar todas las capas en servidores independientes:

¿Es posible ademas de las 3 capas clasicas agregar una capa mas en paralelo que se comunique con las 3 capas nombradas anteriormente que contenga las definiciones de las clases corresapondientes? No se si se entiende mi pregunta... que alla una capa aparte que contenga solo la definición de los Datos y los Get y Set correspondientes.... y que esto se comunique con las otras 3 capas.....
Porque esta pregunta... funcionar, funciona...... pero en cuantop a cuestiones de rendimiento me parto la cabeza pensando que deberia viajar el doble de veces entre servidores (por las redes) ya que por ejemplo, la interfaz deberia ir hasta otro server a buscar la logica de negocio sino que tambien deberia ir a buscar las clases correspondientes...

Espero que se entienda mi duda...

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar