El objetivo de este articulo es demostrar como una aplicación web puede trabajar en capas, mejorando así la mantención del código, y mejorando el desarrollo.
Muy bueno el post, Leandro muy interesnte como siempre, seria bueno si te das un tiempo, y publicas algo de un ejemplo de facturacion, tengo una duda en la entidad factura como deberia estar formada, ya que la factura tiene cabecera y detalle, dentro de la cabecera esta el codigo del cliente y asi , como deberia ser la entidad factura???, Son dudas que me quedan y a lo mejor con un ejempo tuyo como el de estos post nos ayudas a aclarar a muchos la forma correcta de usarlos.. Saludos y felicitaciones
Fernando, gracias por el comentario. Como habras visto este artículo esta a medio terminar, aun falta para concluirlo y la idea es amplicarlo. Ademas esta es solo la parte 1, como dice el titulo, el objetivo final es amplirlo hasta llegar a desarrollar con capas remotas, y con distintos repositorios de base de datos, y si se puede hasta con NHibernate o Entity Framework, pero bueno eso lo haremos de a poco al hacer crecer el ejemplo. Lo que se complica un poco es plantear el dominio en el cual desarrollarlo, en tu caso planeas el de una factura, pero este modelo esta algo desgastado, estaba pensado mas bien a una orden de compra, en donde por ahi al final si termine en facturacion. Pero bueno de a poco ira creciendo el articulo.
Estimado Leandro tiene un muy buen blog, ayuda mucho a los que estamos iniciando en el mundo del desarrollo, seria bueno ver si continua con las otras partes de este post, que pinta buenisimo, todo lo que intenta mostrar.
bueno que sea de utilidad los articulos, tengo tanto en mente y tan poco tiempo, pero bueno de a poco ire completando.
Como habia comentado anteriormente la idea es seguir con este hilo de desarrollo en capas que se que es un temas que tae miles de preguntas, este fue un post algo apresurado justamente para contestar una consulta en un foro por eso veras que tuvo tan poco explicacion, y solo apunto a un ejemplo en codigo.
Lo que ocurre es que al ser un tema algo grande, armar un ejemplo completo lleva su tiempo, la idea que tenia es ir mostrando la arquitectura cuando va evolucionando desde capas separadas simples a capas remotas completamente desconectadas, pudiendo cambiar de interfaces web a winform y de base de datos.
Pero bueno en breve tendre actualizaciones sobre este.
Muchas Gracias Leandro por este ejemplo, me quedo esperando la continuación de este post que pinta buenínisimo y por supuesto las explicaciones a medida que aumente la complejidad; estoy muy interseado en saber como es el asunto de la interacción web con winform, espero que pueda verlo pronto, saludos
Tuttini...Descargue el ejemplo, lo quise ejecutar de primerá para ver que hacia y me manda el mensaje de que no puede cargar el tipo "_csharp_GridViewCombosAnidados._Default"...¿como lo soluciono?
P.D: En más de una ocación e tenido dudas y muchas de tus repsuestas an sido de gran ayuda. ¡¡Felicidades!!
Hola Leandro ... descargue el ejemplo y cuando quise ejecutarlo me dicé que hay un error al cargar el tipo: "_csharp_GridViewCombosAnidados._Default" ... ¿como lo soluciono para poder ejecutar la aplicación?...
Abri el proyecto para validarlo y algo que note es que me ha quedado mal el nombre del formulario web con la clase que usa.
Imagino el error es: "Could not load type '_csharp_GridViewCombosAnidados._Default'."
Para solucionarlo cambia esta linea <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PedidoReparacion.aspx.cs" Inherits="ServiceSenter.UI._Default" %> es la primer linea del aspx
como veras define: Inherits="ServiceSenter.UI._Default"
Me sumo a los comentarios positivos. En realidad queria dar una idea nada mas a la contestacion que propones sobre el comentario de Fernando S. y me parece fabulosa la idea de desarrollar mas este ejemplo. Entre las ideas que puedo aportar con el favor de que me hagas correccion si me equivoco estan:
1. Entidad Orden-Detalle para poder conjugar en una aplicacion diferentes tipos de ordenes en la misma aplicacion por ejemplo: Orden de ingreso a Bodega, Orden de Trabajo, y Factura centralizando en Dos tablas relacionadas ya que se pueden eredar por medio de clases sus caracteristicas. 2. Por otra parte conozco de la potencialidad que posee C# pero en realidad muchos necesitamos del codigo en VB para poder aprender.
Me despido anteponiendo mil veces mas mi agradecimiento a tu labor y felicitandote.
Desde hace tiempo leo tus blogs leandro, sinceramente son muy claros tus conceptos, gracias por la simplicidad al tratar temas q son realmente complejos.
Tengo una consulta que hacerte respecto al modelo en capas.
Supongamos q tengo 3 capas 1 - Entities (objetos POCO) 2 - DAL (Repositorios) referencia a Entities 3 - Mi App (cualquiera consola/Winforms) Referencia a DAL
Hay alguna forma de solo referenciar en Mi App, solo a la capa DAL y obtener las entities que estan en la capa inferior, sirve DI o IOC para resolver este tema, lo que no queremos hacer es solo agregar la referencia a la DAL y que poder acceder a la capa de Entities tambien.
Desde ya gracias por tu tiempo !!! Saludos Cordiales
el tema es que necesitas de algun medio para intercambiar informacion entre las capas, usar las entidades POCO es lo que generalmente se usa
IoC en este caso no aplica, podrias usarlo para desacopar la interaccion con la DAL para tener mas de una implementacion, usarias una interface para esto
pero no se usa IoC para desacoplar entidades
de casualidad estas suando algun ORM? podrias crear otro proyecto de entidades que sean DTO Data TRansfer Object, entonces en la DAL mapeas la entidad POCO con el DTO devolviendo este ultimo como respuesta, igual esto suele usarse cuando tienes una capa de negocio o aplicacion, no se hace cuando el UI accede directo a la DAL
Muy bueno el post, Leandro muy interesnte como siempre, seria bueno si te das un tiempo, y publicas algo de un ejemplo de facturacion, tengo una duda en la entidad factura como deberia estar formada, ya que la factura tiene cabecera y detalle, dentro de la cabecera esta el codigo del cliente y asi , como deberia ser la entidad factura???, Son dudas que me quedan y a lo mejor con un ejempo tuyo como el de estos post nos ayudas a aclarar a muchos la forma correcta de usarlos.. Saludos y felicitaciones
ResponderEliminarFernando, gracias por el comentario.
ResponderEliminarComo habras visto este artículo esta a medio terminar, aun falta para concluirlo y la idea es amplicarlo.
Ademas esta es solo la parte 1, como dice el titulo, el objetivo final es amplirlo hasta llegar a desarrollar con capas remotas, y con distintos repositorios de base de datos, y si se puede hasta con NHibernate o Entity Framework, pero bueno eso lo haremos de a poco al hacer crecer el ejemplo.
Lo que se complica un poco es plantear el dominio en el cual desarrollarlo, en tu caso planeas el de una factura, pero este modelo esta algo desgastado, estaba pensado mas bien a una orden de compra, en donde por ahi al final si termine en facturacion.
Pero bueno de a poco ira creciendo el articulo.
Estimado Leandro tiene un muy buen blog, ayuda mucho a los que estamos iniciando en el mundo del desarrollo, seria bueno ver si continua con las otras partes de este post, que pinta buenisimo, todo lo que intenta mostrar.
ResponderEliminarEspero pueda hacerlo pronto.
Saludos
hola Cristian
ResponderEliminarbueno que sea de utilidad los articulos, tengo tanto en mente y tan poco tiempo, pero bueno de a poco ire completando.
Como habia comentado anteriormente la idea es seguir con este hilo de desarrollo en capas que se que es un temas que tae miles de preguntas, este fue un post algo apresurado justamente para contestar una consulta en un foro por eso veras que tuvo tan poco explicacion, y solo apunto a un ejemplo en codigo.
Lo que ocurre es que al ser un tema algo grande, armar un ejemplo completo lleva su tiempo, la idea que tenia es ir mostrando la arquitectura cuando va evolucionando desde capas separadas simples a capas remotas completamente desconectadas, pudiendo cambiar de interfaces web a winform y de base de datos.
Pero bueno en breve tendre actualizaciones sobre este.
saludos
Muchas Gracias Leandro por este ejemplo, me quedo esperando la continuación de este post que pinta buenínisimo y por supuesto las explicaciones a medida que aumente la complejidad; estoy muy interseado en saber como es el asunto de la interacción web con winform, espero que pueda verlo pronto, saludos
ResponderEliminarDisculpa soy nuevo en esto y tu ejemplo me resulta muy util pero cual es la base de datos que usas ??
ResponderEliminarCuando lo ejecuto em manda un mensaje sobre la base de datos que no es puede acceder en modo remoto
hola Cristhian
ResponderEliminarDisculpa la demora en la respuesta
La base de datos que se esta usando es Sql Server Express 2008
Veras en la carpeta App_Data del proyecto de UI, que esta el archivo .mdf, esa es la base de datos
Por supuesto necesitas que este presente el Sql Server Express, iniciado para que se adjunte dinamicamente al servicio.
saludos
Tuttini...Descargue el ejemplo, lo quise ejecutar de primerá para ver que hacia y me manda el mensaje de que no puede cargar el tipo "_csharp_GridViewCombosAnidados._Default"...¿como lo soluciono?
ResponderEliminarP.D: En más de una ocación e tenido dudas y muchas de tus repsuestas an sido de gran ayuda.
¡¡Felicidades!!
Hola Leandro ... descargue el ejemplo y cuando quise ejecutarlo me dicé que hay un error al cargar el tipo:
ResponderEliminar"_csharp_GridViewCombosAnidados._Default"
... ¿como lo soluciono para poder ejecutar la aplicación?...
P.D Felicidades por tu blog...
hola Miguel Angel
ResponderEliminarAbri el proyecto para validarlo y algo que note es que me ha quedado mal el nombre del formulario web con la clase que usa.
Imagino el error es: "Could not load type '_csharp_GridViewCombosAnidados._Default'."
Para solucionarlo cambia esta linea
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PedidoReparacion.aspx.cs" Inherits="ServiceSenter.UI._Default" %>
es la primer linea del aspx
como veras define:
Inherits="ServiceSenter.UI._Default"
saludos
Me sumo a los comentarios positivos.
ResponderEliminarEn realidad queria dar una idea nada mas a la contestacion que propones sobre el comentario de Fernando S. y me parece fabulosa la idea de desarrollar mas este ejemplo. Entre las ideas que puedo aportar con el favor de que me hagas correccion si me equivoco estan:
1. Entidad Orden-Detalle para poder conjugar en una aplicacion diferentes tipos de ordenes en la misma aplicacion por ejemplo: Orden de ingreso a Bodega, Orden de Trabajo, y Factura centralizando en Dos tablas relacionadas ya que se pueden eredar por medio de clases sus caracteristicas.
2. Por otra parte conozco de la potencialidad que posee C# pero en realidad muchos necesitamos del codigo en VB para poder aprender.
Me despido anteponiendo mil veces mas mi agradecimiento a tu labor y felicitandote.
Desde hace tiempo leo tus blogs leandro, sinceramente son muy claros tus conceptos, gracias por la simplicidad al tratar temas q son realmente complejos.
ResponderEliminarTengo una consulta que hacerte respecto al modelo en capas.
Supongamos q tengo 3 capas
1 - Entities (objetos POCO)
2 - DAL (Repositorios)
referencia a Entities
3 - Mi App (cualquiera consola/Winforms)
Referencia a DAL
Hay alguna forma de solo referenciar en Mi App, solo a la capa DAL y obtener las entities que estan en la capa inferior, sirve DI o IOC para resolver este tema, lo que no queremos hacer es
solo agregar la referencia a la DAL y que poder acceder a la capa de Entities tambien.
Desde ya gracias por tu tiempo !!!
Saludos Cordiales
hola Guillermo
ResponderEliminarel tema es que necesitas de algun medio para intercambiar informacion entre las capas, usar las entidades POCO es lo que generalmente se usa
IoC en este caso no aplica, podrias usarlo para desacopar la interaccion con la DAL para tener mas de una implementacion, usarias una interface para esto
pero no se usa IoC para desacoplar entidades
de casualidad estas suando algun ORM?
podrias crear otro proyecto de entidades que sean DTO Data TRansfer Object, entonces en la DAL mapeas la entidad POCO con el DTO devolviendo este ultimo como respuesta, igual esto suele usarse cuando tienes una capa de negocio o aplicacion, no se hace cuando el UI accede directo a la DAL
saludos
Estimado Leandro.
ResponderEliminarPor favor podria ilustrarme como trabajar en Capas pero que se incluya un Web Services.
Gracias.
No se ve nada, la imagen ya no esta :(
ResponderEliminar