Muy bueno Ángel, Creo que usar capas es como usar herencia en las tareas de la aplicación, y son esenciales a la hora de aplicar un DRY (Dont repeat yourself) pero como mi aplicación es Windows y estoy apurado, de momento el exe es lo que hace todo (si, ya se que el assembly no es una capa) y surgirá algo mas separado si es necesario.
Yo en realidad quería preguntar algo mas simple que un paradigma de esos, mi pregunta mejor formulada seria: Si estas editando una lista de Personas y le dejas al usuario hacer Add / Remove / Delete, como le haces el seguimiento a los objetos después para llamar al Save, Update o Delete a cada Entidad? Yo de momento lo estoy solucionando con una lista: personasAAgregar, personasAEliminar, personasAActualizar, como es la primera vez que tuve que hacer algo asi y nunca vi como lo soluciona otra persona (es lo ke se me ocurrió que iba a funcionar con nhib y por eso lo use) quería saber si alguien tenía otra alternativa a este problema. PD: Persona p = new Persona() p.Nombre = "..." session.Save(p) se puede plantear algo como Persona p = new Persona() p.Nombre = "..." ServicioPersona.Save(p) Eso esta bueno, me hace pensar que interponer una capa entre la UI (win o asp o xml) y Nhib (o datos) va a ser no-ops. Gracias!!! From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Angel "Java" Lopez Sent: Friday, February 02, 2007 10:45 To: [email protected] Subject: [NHibernate-Hispano] Re: Estilos de programacion y preguntas Hola gente! Interesante tu pregunta, Guillermo. Algunos comentarios sobre como en general trabajo... Yo prefiero tener una capa de servicio, una simple fachada, que me brinde toda la funcionalidad que necesita mi presentacion (o las posibles presentaciones que luego aparezca). Asi, en vez de Persona p = new Persona() p.Nombre = "..." session.Save(p) se puede plantear algo como Persona p = new Persona() p.Nombre = "..." ServicioPersona.Save(p) Ahora, igual aca se puede plantear otro tema: esto es un simple CRUD de personas. Llegara el momento, o la aplicacion, donde la logica del dominio, del problema a resolver, no sea tan simple. Apareceran actividades a implementar, mas grandes que simplemente insertar una persona en la base. Me imagino: Empleado e = new Empleado(....datos del nuevo empleado....) ServicioRecursosHumanos.NuevoEmpleadoContratado(e) En ambos casos, recurro a Servicio, una capa de servicio. Si de ahi para abajo, hay NHibernate, o lo que sea, no me interesa en general. Despues, podemos discutir la linea Empleado e = new Empleado(....datos del nuevo empleado....) Porque tener empleado ahi? Y si ponemos en vez del new una factoria? Bueno, a veces, solo a veces, necesitaremos algo mas, para un proceso de negocio mas dificil, no enviamos solo entidades. Enviamos mensajes, que llegan a la capa de servicio, y hacen actuar a nuestro modelo del negocio. Me imagino un proceso que necesite hacer una transferencia entre dos cuentas, pueden tener ServicioTransferencia.Transferir(idctaorigen,idctadestino,importe) Abajo de eso, levantaremos las entidades cuentas, lo que sea, o llamaremos a un procedimiento almacenado, o lo que hayamos decidido hacer. Luego, en algun momento habra que investigar las ideas de Domain Driven Design, donde entonces el NHibernate empieza a brillar, al posibilitar implementar DAOs, invocados desde repositorios, sin "molestar" mucho en nuestro modelo de domino. Veria el libro y los enlaces de: http://ajlopez.wordpress.com/tag/domain-driven-design/ Jeje... y como siempre, servicio, entidades, mapeo NHibernate, base de datos, lo genero con AjGenesis, ver el ejemplo http://msmvps.com/blogs/lopez/archive/2006/03/07/85650.aspx (hay en la pagina del proyecto, templates para Domain-Driven Design, que estoy mejorando). DataSets los uso para enviar desde servicio, datos a la presentacion, en general para ligar a grillas. Sino, en general, envio lo que en java serian beans, simples objetos con datos adentro, que se ligaran a la presentacion, y luego volveran de alguna forma al servicio. Nos leemos! Angel "Java" Lopez http://www.ajlopez.com/ (yes!! it's my sabbatical week!!!.... http://ajlopez.wordpress.com/2007/01/27/sabbatical-week/ ) ----- Original Message ----- From: Guillermo Ruffino <mailto:[EMAIL PROTECTED]> To: [email protected] Sent: Thursday, February 01, 2007 11:43 PM Subject: [NHibernate-Hispano] Estilos de programacion y preguntas Hola, les cuento que estoy haciendo con un companiero una aplicación TIPICA de ventas. En fin, es muy nuevita y la estamos encarando con .net 2 y generics. Tenemos partes con DataSets y otras partes con NHibernate. Mi trayectoria es el siguiente, cuando naci existía GWBasic, y aprendi base de datos relacionales después de aprender orientación a objetos, (un poco al revés) Mi primer trabajo serio (en cuanto a calidad de la aplicación) fue un orientado a objetos con serializacion binaria. Despues de eso tuve ke caer en la realidad y termine con typed DataSet en .net 1.1 Ahora trabajo mucho con ASP.NET y mucho con reporting, y reporting no es un escenario ideal para nhib, asi ke no lo uso en ASP.NET. Estoy dando mis primeros pasos con NH en una aplicación Windows, y me gusta la programación de capas aplastadas (sin capas casi) entonces en el botón aceptar tengo un Session.Save(); Lo que me gusta de DataSets es que se trabaja en memoria y luego el usuario decide si le da a Aceptar() o a Cancelar(). En NH sin embargo, lo único que estoy viendo de momento es almacenar listas de objetos que necesiten Save, Delete y Updates! Me parece un poquito incomodo y saber si alguien tiene alguna experiencia en compartir Saludos --~--~---------~--~----~------------~-------~--~----~ Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups-beta.google.com/group/NHibernate-Hispano -~----------~----~----~----~------~----~------~--~---
