Reconozco que sigo muy apegado a la arquitectura tradicional de 3
capas, siempre cuando veo DDD me pregunto: ¿dónde va la lógica del
negocio?, ¿donde la persistencia? Sigo perdido…
Espero que ustedes puedan sacarme de esta ignorancia.
1 – Lógica del Negocio: No tengo en claro todavía donde va la lógica
del negocio concretamente ¿En el modelo? ¿En la capa servicios? ¿En
las dos partes?
2 – Repositorios y Servicios: No sé porque, pero no me gusta llamar a
Repositorios desde Controladores. ¿Está mal llamar a Repositorios
desde Servicios y utilizar estos servicios en los controladores, en
vez de usar Repositorios?
3 – Servicios que procesan IQueryable: En la charla, Ángel y Fabio
tocaron este tema. Lo que intento saber es si lo que yo realizo está
bien. Mis repositorios tienen pocos métodos *4 o 5* y algunos retornan
IQueryable, luego en la capa servicios es donde están los demás
métodos necesarios, donde realizo los procesos Linq.
4 – Validación de objetos: ¿Los objetos deben ser validados en la capa
servicios o en el modelo? Si fuera en el modelo., No llenaríamos las
clases con atributos? ¿Y qué hay con validaciones UI? ¿Son
infraestructura?
Bueno chicos, solo pondré 4 preguntas pero la lista podría llegar a
100. Gracias de antemano y espero sus respuestas.
Fabián Figueredo
Como el dominio(entities, value objets, domain services) es la
representación del negocio, la lógica referente al negocio debe estar
en el dominio. La decisión de donde ponerlo depende mucho de la regla
de negocio en sí; podría ser que tengas un comportamiento orden.Ordenar
() que realizé ciertos cambios en el estado de la orden y tu regla de
negocio podría estar ahi, o también tu regla podría ser que el cliente
no supere su límite de crédito, por lo tanto la regla podría ponerse
dentro de un servicio de dominio, un patrón muy usado para este caso
es el specification pattern, aunque también puede usarse dentro de una
entidad.
Algunos links sobre servicios:
http://jonathan-oliver.blogspot.com/2008/12/services-infrastructure-application.html
http://www.lostechies.com/blogs/jimmy_bogard/archive/2008/08/21/services-in-domain-driven-design.aspx
Specification Pattern en DDD
http://sbtourist.blogspot.com/2006/01/case-for-specifications.html
http://sbtourist.blogspot.com/2006/02/another-case-for-specifications.html
2 - En Muchos ejemplos que usan (o dicen usar) DDD vas a ver que ponen
directamente el repositorio dentro del controlador, en estos casos la
lógica del negocio pasa a estar dentro de las entidades ya que no hay
nada que coordine esto. En ciertos casos, podría ser que esto se
mantenga dentro los conceptos de DDD, pero por lo general se termina
poniendo mucho del negocio dentro del controllador y también el
controllador empieza a crecer demasiado (Fat Controller). En lo
personal prefiero mantener los repositorios dentro de un servicio y
los servicios dentro de los controladores.
3 - En lo personal tengo muchas opiniones encontradas, ya que ahora
Linq pertenece a las librerias nativas de la framework y deberíamos
aprovechar sus capacidades. Pero también su uso abusivo puede causar
que muchas de las optimizaciones de los repositorios, no se tengan que
hacer en su implementacion misma sino en cualquier otra parte donde se
encuentren las llamadas Linq.
Linq y Repositories
http://mikehadlow.blogspot.com/2009/01/eric-evans-on-repositories.html
http://mikehadlow.blogspot.com/2008/03/using-irepository-pattern-with-linq-to.html
http://mikehadlow.blogspot.com/2009/01/in-search-of-wild-repository.html
4 - Las validaciones se deben encontrar sí o sí en el dominio, pero
esto no significa que no tengas otros lugares donde refuerces estas
validaciones, ejm:UI. Ahora, si las validaciones van en las entidades
o en los servicios de dominio, creo que no es un problema directamente
relacionado con DDD aunque existe mucha discusión sobre el tema. Yo
suelo poner las validaciones del negocio dentro del servicio y las
validaciones de ingreso de datos como atributos dentro de la entidad.
http://colinjack.blogspot.com/2008/03/domain-model-validation.html
http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/02/15/validation-in-a-ddd-world.aspx
http://devlicio.us/blogs/billy_mccafferty/archive/2009/02/17/a-response-to-validation-in-a-ddd-world.aspx
Espero les haya servido de algo.
Muchos Saludos.
Angel Nuñez Salazar.
1 – Lógica del Negocio: No tengo en claro todavía donde va la lógica
del negocio concretamente ¿En el modelo? ¿En la capa servicios? ¿En
las dos partes?
2 – Repositorios y Servicios: No sé porque, pero no me gusta llamar a
Repositorios desde Controladores. ¿Está mal llamar a Repositorios
desde Servicios y utilizar estos servicios en los controladores, en
vez de usar Repositorios?
3 – Servicios que procesan IQueryable: En la charla, Ángel y Fabio
tocaron este tema. Lo que intento saber es si lo que yo realizo está
bien. Mis repositorios tienen pocos métodos *4 o 5* y algunos retornan
IQueryable, luego en la capa servicios es donde están los demás
métodos necesarios, donde realizo los procesos Linq.
4 – Validación de objetos: ¿Los objetos deben ser validados en la capa
servicios o en el modelo? Si fuera en el modelo., No llenaríamos las
clases con atributos? ¿Y qué hay con validaciones UI? ¿Son
infraestructura?
Aprovechando la excelente charla de hoy de Ángel Java Lopez, quiero
hacerles unas preguntas sobre DDD.
Reconozco que sigo muy apegado a la arquitectura tradicional de 3
capas, siempre cuando veo DDD me pregunto: ¿dónde va la lógica del
negocio?, ¿donde la persistencia? Sigo perdido…
Espero que ustedes puedan sacarme de esta ignorancia.
1 – Lógica del Negocio: No tengo en claro todavía donde va la lógica
del negocio concretamente ¿En el modelo? ¿En la capa servicios? ¿En
las dos partes?
2 – Repositorios y Servicios: No sé porque, pero no me gusta llamar a
Repositorios desde Controladores. ¿Está mal llamar a Repositorios
desde Servicios y utilizar estos servicios en los controladores, en
vez de usar Repositorios?
3 – Servicios que procesan IQueryable: En la charla, Ángel y Fabio
tocaron este tema. Lo que intento saber es si lo que yo realizo está
bien. Mis repositorios tienen pocos métodos *4 o 5* y algunos retornan
IQueryable, luego en la capa servicios es donde están los demás
métodos necesarios, donde realizo los procesos Linq.
4 – Validación de objetos: ¿Los objetos deben ser validados en la capa
servicios o en el modelo? Si fuera en el modelo., No llenaríamos las
clases con atributos? ¿Y qué hay con validaciones UI? ¿Son
infraestructura?
Bueno chicos, solo pondré 4 preguntas pero la lista podría llegar a
100. Gracias de antemano y espero sus respuestas.
Fabián Figueredo
--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispan...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.
Contestando la pregunta de Pedro sobre los atributos. Yo utilizo
NHValidator para validar las entidades, por eso ese lado va mi
pregunta.
Se que existen varios métodos para validar entidades sin utilizar
atributos, el bueno de Mario Chávez me comentó de la existencia de
Fluent NHValidator.
Bueno, otra vez, muchas gracias por su tiempo. Un abrazo y que pasen
muy bien las fiestas.
Fabián Figueredo
On 20 dic, 02:53, José F. Romaniello <jfromanie...@gmail.com> wrote:
> El 19 de diciembre de 2009 19:06, Fabian Figueredo <
> fabianfiguer...@gmail.com> escribió:
>
> > Aprovechando la excelente charla de hoy de Ángel Java Lopez, quiero
> > hacerles unas preguntas sobre DDD.
>
> > Reconozco que sigo muy apegado a la arquitectura tradicional de 3
> > capas, siempre cuando veo DDD me pregunto: ¿dónde va la lógica del
> > negocio?, ¿donde la persistencia? Sigo perdido…
>
> > Espero que ustedes puedan sacarme de esta ignorancia.
>
> > 1 – Lógica del Negocio: No tengo en claro todavía donde va la lógica
> > del negocio concretamente ¿En el modelo? ¿En la capa servicios? ¿En
> > las dos partes?
>
> Por todos lados, una entidad puede y debe tener cierta lógica que le
> corresponda a ella, y un servicio también. una arquitectura donde toda la
> lógica esta en los servicios y en las entidades de dominio solo hay datos
> pero no lógica, es un modelo anímico según Fowler y no va muy bien con DDD.http://martinfowler.com/bliki/AnemicDomainModel.html
> > altnet-hispan...@googlegroups.com<altnet-hispano%2Bunsubscribe@go oglegroups.com>
Hola
Lamentablemente me perdí la VAN, espero el video con ansias:
Es cierto que el resultado de un proceso de DDD debe ser una aplicación orientada a objetos que siga patrones reconocibles de diseño y que se adapte a la realidad que se esta modelando, pero en términos prácticos viendo el resultado final no debiera haber forma de diferenciar código que se escribió usando DDD o no. La base de DDD es la creación de un lenguaje ubicuo, la participación de los expertos del dominio durante todo el proceso, etc.
Exacto: La base de DDD es la creación de un lenguaje ubicuo, un conjunto de estereotipos…
Como saben sigo usando CSLA .NET en algunos proyectos, y me permite eso, integrar equipos a través de un lenguaje común.
Suena a broma, pero da mucha risa ver a los analistas de negocio (expertos de dominio) hablar en estereotipos con nosotros los del equipo de desarrollo.
Saludos….
Se certificó
que el correo entrante no contiene virus.
Comprobada por AVG - www.avg.es
Versión: 9.0.717 / Base de datos de virus: 270.14.115/2577 - Fecha de la
versión: 12/20/09 02:35:00
Según lo que yo entiendo, si hay una desconexión entre los objetos de la aplicación y la realidad, por haber desconectado al cliente/experto durante el desarrollo, entonces toda buena práctica que se use es inútil y no se hizo un proceso DDD
--
--