2010-02-16 10 views
6

En una aplicación de blog desarrollada utilizando el diseño impulsado por dominio, una entidad 'Publicada' tiene una colección relacionada de entidades de etiqueta.Diseño impulsado por dominio - API de datos externos como repositorio o servicio

Al crear la publicación (por ejemplo, rellenando el objeto de la interfaz de usuario) me gustaría llamar a una API de terceros a través de REST que toma el contenido de la publicación y extrae etiquetas semánticas (link text) para la asociación.

pregunta principal: ¿Cuál es la mejor manera de diseñar este ...

es la mejor forma diseñada de forma que la entidad Post le llame a un servicio de dominio como PostServices.GetTags (Postcontent) que pasa a su contenido y recuperando una lista de etiquetas.

** PostServices.GetTags interactuaría con la API REST a través de una clase de contenedor adicional.

¿O debería completarse la API de terceros como un repositorio?

¿Debería la función Post.GenerateTags(), no existir en absoluto dentro de la entidad de dominio?

preguntas adicionales:

1: También he leído que no es una buena práctica tener una entidad converse dominio con un servicio de dominio. ¿Es esto cierto?

2: ¿Está bien obtener una referencia al servicio de dominio PostServices mediante un método de creación de fábrica. por ejemplo,

IPostService PostService = ServiceUtil.GetPostService(); return PostService.GetTags (Post.content);

3: ¿Es aceptable tener el servicio de dominio junto con una API de terceros?

4: En caso de que la entidad de dominio simplemente sepa cómo tratar con las etiquetas recibidas a través de la capa de aplicación que ha llamado a la API REST.

Poco a poco tratando de entender DDD, sin embargo, parece que no puedo encontrar ejemplos de cómo implementar este tipo de cosas.

Respuesta

3

En una aplicación de blog, una publicación es una entidad y una etiqueta es un objeto de valor. Una etiqueta no tiene identidad. Usted debe tener:

  • PostsRepository
  • Post (Entidad)
  • Tag (valor del objeto)

Un Post ha conseguido una lista de etiquetas.

Preguntas:

1: También he leído que no es una buena práctica tener una entidad converse dominio con un servicio de dominio. ¿Es esto cierto?

Sí, no es una buena práctica. Su entidad no quiere asociarse con un servicio de dominio. Si haces eso, entonces no podrías volver a usarlos más tarde.¿Ha considerado disparar un evento de dominio? Puedes decirle a tu dominio de servicio que haga algo sobre eventos de dominio de fuego.

2.: ¿Está bien obtener una referencia al servicio de dominio PostServices mediante un método de creación de fábrica. por ejemplo, IPostService PostService = ServiceUtil.GetPostService(); return PostService.GetTags (Post.content);

Sí, es posible. Un método de fábrica podría devolver una clase abstracta o una interfaz. Este es un buen código de principio de diseño de software para una interfaz, no para una implementación. Si hace esto, podrá cambiar su implementación más tarde y no tendrá que cambiar su código de cliente.

3: ¿Es aceptable tener el servicio de dominio junto con una API de terceros?

No lo recomiendo, pero es aceptable.

Lo sentimos, no entiendo la pregunta 4.

Mira este enlace. Espero que te ayude

https://stackoverflow.com/questions/901462/ddd-where-is-it-most-appropriate-to-get-a-list-of-value-objects/901562#901562

+0

Gracias por la respuesta, sin embargo todavía estoy un poco confuso. ¿Está sugiriendo que la entidad Post utiliza una fábrica para obtener una referencia a un servicio de dominio que suministra etiquetas? También las etiquetas son únicas en mi sistema y se identifican a través de una clave principal ¿significa esto que son una entidad? – sjb101

+0

Acabo de encontrar el siguiente enlace que ofrece una buena explicación de los objetos de valor ... http://tech.groups.yahoo.com/group/domaindrivendesign/message/6290 Así que la etiqueta debería ser objeto de valor. De todos modos, volvamos a la pregunta principal anterior ... – sjb101

+0

No, la publicación tiene una lista de etiquetas. Y podrías recuperar las etiquetas de PostsRespository. Un blog es un dominio fácil. Solo tienes publicaciones, etiquetas y comentarios. No entiendo por qué necesitas un servicio de dominio. ¿Cuál es la responsabilidad de tu servicio de dominio? – yeraycaballero

Cuestiones relacionadas