none
Programacion en tres capas

    Pregunta

  •  

    hola, q tal

    bueno aqui mi problema es el siguiente:

    no tengo muy claro que procedimientos o metodos se deben realizar en las 3 capas, por ejemplo q metodos debo tener en mi capa de datos, en la capa de negocios y en la capa de presentacion, please podrian ayudarme??

    lunes, 24 de septiembre de 2007 16:10

Respuestas

  • buenas que tal???

    perdona si no se entendio del todo el asunto...pero bueh en realidad todo depende de como diseñes tu aplicacion...

    tiene que ver mucho con los patrones de diseño y con la forma en que armes las clases...

    te dejo un par de links donde podes ver mas informacion:

    http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/MTJ_2828/default.aspx

    http://www.helpdna.net/pr_windows_dna_articulos.htm

    http://www.docirs.cl/arquitectura_tres_capas.htm

    pero ya te digo...la cuestion es saber aplicar algunos patrones de diseño nomas...y otra cosa a tener en cuenta es que separacion en capas no significa separacion fisica en archivos diferentes...simplemente es una forma de organizar el codigo...

    un ejemplo...yo hasta hace poco estaba acostumbrado a hacer todo el codigo dentro de los eventos de los botones...el problema es que si necesitas hacer de nuevo esa accion pero desde otro control entonces te conviene hacerlo en un metodo aparte...bueh ahi sin que te des cuenta estas separando en capas...en este caso seria Presentacion y Logica...

    entonces la idea del diseño en 3 capas es que vos por ejemplo desde el boton simplemente llamas a una funcion Agregar que esta en la capa de negocios...en la capa de negocios haces las validaciones pertinentes y llamas a otra funcion Agregar que esta en la capa de datos...y es en la capa de datos donde transformas esos objetos que se pasan entre capas en una fila o conjunto de filas de un dataSet o lo que sea para volcarlo a la base de datos...

    lo que logras con esto es que si el dia de mañana cambian las reglas de validacion o cambias el motor de la base de datos eso no te afecta al resto de la aplicacion...ademas supongamos que tenes una aplicacion winforms y una aplicacion web...podes utilizar la misma capa de negocios y la misma capa de datos y lo unico que haces es armar 2 capas de presentacion distintas...meter un ejemplo con codigo aca seria un plomaso pero si tenes ganas de seguir investigando sobre el tema yo te recomiento el libro de Visual Basic 200 de Users .code que integra en un capitulo las 3 capas y da un ejemplo de una agenda electronica programada en 3 capas...espero que te sean utiles los links! suerte y no dudes en volver a preguntar!

    Agregado: estuve viendo los links y algunos no funcionan...te dejo un ejemplo de MSDN que esta desarrollado en 3 capas y cuenta mas o menos como se fue organizando...fijate q hay una serie de podcasts donde explican paso a paso como construir la aplicacion...

    http://www.desarrollaconmsdn.com/msdn/MSDNVideo.aspx


    miércoles, 26 de septiembre de 2007 17:37
  • yo te recomiendo el libro Visual Basic 2005 de Users te dejo el link

    http://usershop.redusers.com/ficha.asp?marca=libros&numero=lpcu113&codigo=2117

    creo que para iniciarse es muy bueno abarca distintas areas y despues hace un ejemplo fusionando todos los conceptos en una sola aplicacion utilizando el desarrollo en 3 capas...esta bastante piola...

    saludos
    jueves, 27 de septiembre de 2007 21:55
  • buenas...la idea es justamente respetar el modelo de 3 capas por mas que tengas en la capa de negocios una sola llamada a la capa de datos...

    aca encontre un articulo de microsoft que explica mejor que yo los detalles...

    http://www.microsoft.com/spanish/msdn/arquitectura/das/distapp.mspx

    espero que les sirva!!!

    saludos
    miércoles, 03 de octubre de 2007 3:17
  • Piensa que en lo que hoy te puede parecer una capa inútil, que no hace más que de "pasarela" redundante, mañana se puede convertir en algo más, escribiendo logs, interceptando consultas demasiado generalistas que nos devolverían excesivos registros, etc. La idea es montarlo bien. Es como montar una casa unifamiliar de una sola planta. Siempre que sea posible pon cimientos para más de una planta, nunca se sabe...

     

     

    Salud y suerte!

    miércoles, 03 de octubre de 2007 6:39
  • Amigo, el día 17 de octubre damos en Microsoft Argentina una charla acerca de este tema puntualmente.

    La charla es brindada por el grupo de usuarios Desarrollador@s.

     

    Puedes inscribirte en www.microsoft.com.ar --> eventos

     

    Claro esta, quizas no seas de Argentina.

     

    De todos modos, una vez terminada la charla pienso subir los links para accedan al contenido de la misma.

     

    Espero te sirva... y aguardo que marques la respuesta como correcta si así lo fuera, esto ayuda al foro!

     

    Saludos!   

     

    Daniel M. Salazar

    MCT - MCTS - MCT

    New Technologies Evangelist

     

     

     

    jueves, 04 de octubre de 2007 12:28

Todas las respuestas

  • Buenas que tal? yo hasta hace poquito tenia la misma duda...ahora me queda un poco mas claro...

    por lo que lei conviene siempre empezar desde la capa de datos, luego por la de negocio y por ultimo la de presentacion

    en la capa de datos iran todos los metodos que tengan que ver con el manejo de la base de datos...asi por ejemplo tendras un metodo GetClientePorID(int i) que se fijara en la base de datos mediante un SELECT * FROM CLIENTES WHERE ClienteID = i o algo asi...

    despues en la capa de negocio iran todas las validaciones segun tus reglas de negocio...el tema de fechas, valores y demas debera ser analizado aca...obviamente va a depender que te tipo de controles utilices para ingresar la informacion pero una validacion que se me ocurre en este momento es verificar que el cliente no existe para poder agregarlo...entonces tendras un metodo llamado AgregarCliente(objCliente cliente) que hara las verificaciones necesarias y llamara a la capa de datos para que lo agregue...

    y en la capa de presentacion haces las verificaciones mas primitivas como ver que se haya ingresado bien una fecha o que un campo numerico no contenga caracteres alfanumericos etc. entonces en el boton agregar armas el objeto que le vas a pasar a la capa de negocios algo como objCliente cliente = new objCliente() y luego asignas los valores como cliente.Nombre = txtNombre.Text se entiende un poco???

    es todo cuestion de que nivel de complejidad necesitas...si no tenes muchas reglas de negocio entonces la capa de negocio va a ser muy fina y vas a tener practicamente lo mismo que en la capa de datos...

    espero haber respondido tu pregunta
    lunes, 24 de septiembre de 2007 21:14
  • pues queda un poquti mas claro, pero no se si pueda haber alguna otra respuesta un poco mas especifica, si no fuera mucha molestia, t lo agradezco de verdad

    miércoles, 26 de septiembre de 2007 15:47
  • buenas que tal???

    perdona si no se entendio del todo el asunto...pero bueh en realidad todo depende de como diseñes tu aplicacion...

    tiene que ver mucho con los patrones de diseño y con la forma en que armes las clases...

    te dejo un par de links donde podes ver mas informacion:

    http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/MTJ_2828/default.aspx

    http://www.helpdna.net/pr_windows_dna_articulos.htm

    http://www.docirs.cl/arquitectura_tres_capas.htm

    pero ya te digo...la cuestion es saber aplicar algunos patrones de diseño nomas...y otra cosa a tener en cuenta es que separacion en capas no significa separacion fisica en archivos diferentes...simplemente es una forma de organizar el codigo...

    un ejemplo...yo hasta hace poco estaba acostumbrado a hacer todo el codigo dentro de los eventos de los botones...el problema es que si necesitas hacer de nuevo esa accion pero desde otro control entonces te conviene hacerlo en un metodo aparte...bueh ahi sin que te des cuenta estas separando en capas...en este caso seria Presentacion y Logica...

    entonces la idea del diseño en 3 capas es que vos por ejemplo desde el boton simplemente llamas a una funcion Agregar que esta en la capa de negocios...en la capa de negocios haces las validaciones pertinentes y llamas a otra funcion Agregar que esta en la capa de datos...y es en la capa de datos donde transformas esos objetos que se pasan entre capas en una fila o conjunto de filas de un dataSet o lo que sea para volcarlo a la base de datos...

    lo que logras con esto es que si el dia de mañana cambian las reglas de validacion o cambias el motor de la base de datos eso no te afecta al resto de la aplicacion...ademas supongamos que tenes una aplicacion winforms y una aplicacion web...podes utilizar la misma capa de negocios y la misma capa de datos y lo unico que haces es armar 2 capas de presentacion distintas...meter un ejemplo con codigo aca seria un plomaso pero si tenes ganas de seguir investigando sobre el tema yo te recomiento el libro de Visual Basic 200 de Users .code que integra en un capitulo las 3 capas y da un ejemplo de una agenda electronica programada en 3 capas...espero que te sean utiles los links! suerte y no dudes en volver a preguntar!

    Agregado: estuve viendo los links y algunos no funcionan...te dejo un ejemplo de MSDN que esta desarrollado en 3 capas y cuenta mas o menos como se fue organizando...fijate q hay una serie de podcasts donde explican paso a paso como construir la aplicacion...

    http://www.desarrollaconmsdn.com/msdn/MSDNVideo.aspx


    miércoles, 26 de septiembre de 2007 17:37
  • Bueno quisiera agregar mi granito de arena. Que conviene empezar por la capa de datos.. bueno depende. Si lo que quieres hacer es una capa de datos y de negocio genericas esta bien, pero si se quiere centrar en la funcionalidad que va hacer falta para la capa de presentacion, lo mejor es centrarse primero en la presentacion y su funcionalidad. Aunquen se programe despues, pero cuando se este programando datos y negocio, se ha de tener muy claro que habrá en la de presentación.

    Un saludo,
    jueves, 27 de septiembre de 2007 16:41
  • sisisi perdon...ayer releyendo un poco un libro de visual basic 2005 que me prestaron entontre que recomiendan primero crear todas las entidades con sus propiedades...luego en base a esto crear la capa de acceso a datos(generica y luego se van agregando funciones a medida que se necesitan) y luego seguir por las capas de presentacion y de interfaz...estas dos van practicamente de la mano porque todo lo que este en la capa de negocios de una manera u otra debe utilizarse a partir de algun comando que este en la capa de presentacion...

    pero en mi opinion yendo de abajo hacia arriba (datos, negocio, presentacion) es mucho mas facil testear cada capa porque al terminar cada capa se pueden realizar pruebas reales de funcionamiento y no cargando datos "a mano"...

    yo me guio por el Proceso Unificado y supuestamente al momento de empezar a programar ya tendrias que tener bien claro el tema de las pantallas y de las funcionalidades aunque sea solo diagramado en papel o en visio...pero si todavia no llegaste ahi y tenes las entidades definidas ya podes comenzar por las partes triviales...eso te ayuda a adelantar mucho laburo...
    jueves, 27 de septiembre de 2007 17:39
  • muchas gracias por la ayuda podrian ayudarme a recomendandome un libro en el q pudiera consultar algunas otras dudas mas¿?

    jueves, 27 de septiembre de 2007 21:22
  • yo te recomiendo el libro Visual Basic 2005 de Users te dejo el link

    http://usershop.redusers.com/ficha.asp?marca=libros&numero=lpcu113&codigo=2117

    creo que para iniciarse es muy bueno abarca distintas areas y despues hace un ejemplo fusionando todos los conceptos en una sola aplicacion utilizando el desarrollo en 3 capas...esta bastante piola...

    saludos
    jueves, 27 de septiembre de 2007 21:55
  • Dejarme ser un poco extremista...

     

    .NET Framework + 3 capas + libro = http://www.lhotka.net/cslanet/default.aspx

    jueves, 27 de septiembre de 2007 22:35
  •  

    siguiendo con mi duda de las 3 capas sgun lo escrito aqui dice

     

    entonces la idea del diseño en 3 capas es que vos por ejemplo desde el boton simplemente llamas a una funcion Agregar que esta en la capa de negocios...en la capa de negocios haces las validaciones pertinentes y llamas a otra funcion Agregar que esta en la capa de datos...y es en la capa de datos donde transformas esos objetos que se pasan entre capas en una fila o conjunto de filas de un dataSet o lo que sea para volcarlo a la base de datos...

     

    en este caso la capa de presentacion lo q hace es mandar todo lo obtenido en ella a las propiedades correspondientes en la capa de negocios, ahora mi capa de negocios los almacena en un dataset (bueno x dar un ejemplo de algun objeto en memoria), y todo esto se envia a la funcion agregar de la capa de datos donde se hace la funcion insert

     

    bueno esto es lo q entedi

     

    ahora mi pregunta esto es por cada uno de mis objetos? por ejemplo todo esto para mi objeto cliente y otro para mi objeto producto

     

    ahora en el caso de obtener datos dice el texto q esto es directo en la capa de datos (la instruccion select), entonces en mi capa de negocios q es lo q deberia ir?, porque segun enitendo no puedo brincarme de la presentacion a la capa de datos, tengo q llegar a la d negocios primero y despues a la de datos, estoy en lo correcto?

     

    bueno creo q esas por ahora son mis dudas espero me las puedan resolver gracias

    lunes, 01 de octubre de 2007 16:58
  • buenas...la idea es justamente respetar el modelo de 3 capas por mas que tengas en la capa de negocios una sola llamada a la capa de datos...

    aca encontre un articulo de microsoft que explica mejor que yo los detalles...

    http://www.microsoft.com/spanish/msdn/arquitectura/das/distapp.mspx

    espero que les sirva!!!

    saludos
    miércoles, 03 de octubre de 2007 3:17
  • Piensa que en lo que hoy te puede parecer una capa inútil, que no hace más que de "pasarela" redundante, mañana se puede convertir en algo más, escribiendo logs, interceptando consultas demasiado generalistas que nos devolverían excesivos registros, etc. La idea es montarlo bien. Es como montar una casa unifamiliar de una sola planta. Siempre que sea posible pon cimientos para más de una planta, nunca se sabe...

     

     

    Salud y suerte!

    miércoles, 03 de octubre de 2007 6:39
  • Amigo, el día 17 de octubre damos en Microsoft Argentina una charla acerca de este tema puntualmente.

    La charla es brindada por el grupo de usuarios Desarrollador@s.

     

    Puedes inscribirte en www.microsoft.com.ar --> eventos

     

    Claro esta, quizas no seas de Argentina.

     

    De todos modos, una vez terminada la charla pienso subir los links para accedan al contenido de la misma.

     

    Espero te sirva... y aguardo que marques la respuesta como correcta si así lo fuera, esto ayuda al foro!

     

    Saludos!   

     

    Daniel M. Salazar

    MCT - MCTS - MCT

    New Technologies Evangelist

     

     

     

    jueves, 04 de octubre de 2007 12:28
  • pues muchas gracias a todos ustedes la vdd y q me ha quedado mucho mas claro este asunto, y a Daniel M. si le agradeceria que suba estos links gracias

     

    jueves, 04 de octubre de 2007 16:31
  • Daniel:
              Estoy interesadisimo en ese evento presencial del que hablas, pero al dirigirme a la pagina de registro me encuentro con que no se aceptan mas registros (todavia 2 semanas antes). Tenes conocimiento de algun otro tipo de inscripcion que me permita asistir a la charla?? Desde ya gracias mil...
    viernes, 05 de octubre de 2007 1:03
  • Daniel:
              Te comento que ingrese en la pagina del evento pero dice que ya no aceptan mas inscripciones por ese medio. Existe alguna manera de acudir al evento acreditandose de otra manera? Espero que puedas ssalvar mi duda ya que me interesaria  mucho asistir a esa charla. Suerte

    Leonardo Smirnoff
    martes, 09 de octubre de 2007 15:15
  • Estimados,

     

    No desespereis!

     

    Hemos estado charlando con Gabriela, y llegamos a la conclusión de que haremos de nuevo el evento con los mismos temas debido a la gran cantidad de personas que quedaron fuera del mismo.

     

    Así que, a suscribirse al newletter de eventos Microsoft y a visitar seguido el site de eventos.

     

    Un abrazo

     

    Daniel M. Salazar

    MCP - MCTS - MCT

    New Technologies Evangelist

    martes, 09 de octubre de 2007 21:14
  • Pabloide

     

    Llevo algo de tiempo leyendo sobre .NET e intentando hacer un aplicativo como debe ser, es decir con este cuento de las capas.  Creeme que de todo lo que he leido,  tu respuesta es lo unico concreto, que he encontrado al respecto.  No se si sera mucha molestia pedirte algo de orientacion.  He creado 4 proyectos (Entidades, Negocio, Datos y Presentacion) y los he agrupado en una solucion, pero tengo algunas dudas, por ej. la conexion debo agregarla en un modulo en la capa de datos??  Si utilizo Ms Data Application Block, debe hacer el imports correspondiente en cada clase, segun la necesite??

    Muchas Gracias.

     

    viernes, 09 de noviembre de 2007 13:11
  • buenas...escribime a pabloide86@hotmail.com que tengo un material que escanie de un libro donde hay un ejemplo completo de una agenda de tareas hecha en visual basic y esta hecha con esta filosofia de 3 capas...

    es un pdf de 38mb si tenes paciencia te la envio y charlamos otras dudas...

    saludos
    domingo, 11 de noviembre de 2007 20:34
  • Bueno Amigos,

     

    Hemos efectuado el evento en Microsoft junto a Gabriela Giles, presidente del grupo desarrollador@s, oradora regional para Latinoamérica de Ineta.

     

    Adjunto los links para las diapositivas y estaremos subiendo las fotos del evento en breve.

     

    http://www.desarrolladoras.org.ar/eventosrealizados.htm

     

    Saludos, y como dice un amigo chileno Happy Programation!!!

     

    Daniel M. Salazar

    MCP - MCTS - MCT...

    New Technologies Evangelist

     

     

     

     

    domingo, 11 de noviembre de 2007 20:44
  • Holas gentes...les comento que con un amigo armamos un pequeñito blog y acabo de escribir un post sobre el desarrollo en capas...

    quizas lo mas interesante es que armé un ejemplo en C# usando solo una clase bien sencilla y colgué el proyecto completo para que lo ejecuten y sigan el paso a paso de como lo hice...

    hay varias formas de realizar las capas...lo mas importante creo que es el concepto de como utilizarlas...el resto va a depender de cuan compleja sea la solucion que tengamos que hacer...

    http://datapayasadas.wordpress.com/2008/07/17/aplicaciones-en-3-capas/


    jueves, 17 de julio de 2008 23:43
  • Holas gentes...les comento que con un amigo armamos un pequeñito blog y acabo de escribir un post sobre el desarrollo en capas...

    quizas lo mas interesante es que armé un ejemplo en C# usando solo una clase bien sencilla y colgué el proyecto completo para que lo ejecuten y sigan el paso a paso de como lo hice...

    hay varias formas de realizar las capas...lo mas importante creo que es el concepto de como utilizarlas...el resto va a depender de cuan compleja sea la solucion que tengamos que hacer...

    http://datapayasadas.wordpress.com/2008/07/17/aplicaciones-en-3-capas/

    espero que les resulte util!

    saludos

    PD: revisen cada tanto que vamos a ir largando pequeños articulos sobre cosas concretas...
    jueves, 17 de julio de 2008 23:44