c# - por - domain driven design quickly
Lenguajes específicos de dominio(DSL) y diseño impulsado por dominio(DDD) (8)
Creo que están relacionados de alguna manera (como dijo Christophe), pero dos aspectos totalmente diferentes. Ni siquiera descartaría la declaración de jop.
Para obtener información muy bien escrita sobre DSL, consulte el conjunto de páginas de Martin Fowler sobre DSL (trabajo en progreso), puede comenzar con el ejemplo o la definición . Otra buena lectura es su QandA .
DDD se basa en el modelo de dominio y generalmente tiene al menos un nivel de abstracción más alto que el DSL. Ambos pueden existir sin el otro, y como Christophe ya dijo, ambos pueden usarse en el mismo proyecto.
¿Cuáles son las diferencias y similitudes entre los lenguajes específicos del dominio (DSL) y el diseño impulsado por el dominio (DDD)?
Domain Driven Design (DDD) es una forma de pensar y comunicarse sobre los problemas y sus soluciones.
El lenguaje específico del dominio (DSL) es una forma de escribir código.
Son similares porque ambos comienzan con la palabra "dominio". Eso es todo, supongo. :-)
El Diseño Dirigido por Dominio enfatiza la función del dominio del problema a medida que crea el vocabulario, los conceptos y el modelo de objeto fundamentales para el sistema que se está diseñando.
Un lenguaje específico de dominio es una notación para especificar o implementar partes específicas del sistema, orientadas a las necesidades del profesional en ese dominio (es decir, minimizando los aspectos "programados" de la mayoría de los lenguajes de programación o especificación).
Wikipedia tiene una definición bastante clara para DSL :
El término lenguaje específico de dominio (DSL) se ha popularizado en los últimos años en el desarrollo de software para indicar un lenguaje de programación o especificación dedicado a un dominio de problema particular, una técnica de representación de problema particular y / o una técnica de solución particular.
Esto se puede implementar como un conjunto de clases siguiendo un patrón consistente, una magia de plantillas de C ++ sofisticada o un compilador / analizador que interpreta la entrada de texto libre para hacer lo que desee.
Yo diría que están relacionados de alguna manera y no solo por la palabra "dominio". Una vez que tenga un buen diseño (controlado por el dominio), seguramente le ayudará a crear un DSL sólido.
"DDD no requiere específicamente el uso de una DSL, aunque podría usarse para ayudar a definir una DSL". - Wikipedia
Las diferencias, una es un enfoque para construir sistemas usando un lenguaje de lenguaje específico del dominio (DSL) en lugar de un lenguaje de propósito general y el otro es un enfoque arquitectónico (DDD) para diseñar y construir sistemas.
La similitud es que ambos se enfocan en el dominio específico.
Un elemento de DDD puede verse como la capacidad de desarrollar lenguajes ubicuos para hablar con los interesados sobre el dominio. Para el subconjunto de esas UL que no son ambiguas y potencialmente ejecutables, puede optar por implementarlas utilizando una DSL interna o externa.
Aquí hay un video de mí discutiendo esto en el sitio DomainDriven:
http://domaindrivendesign.org/library/bell_gitlevich_2009
Mis mejores deseos, Peter
Supongo que ambos tienen como foco principal reducir el ruido en la programación, DDD actúa sobre el ruido semántico y DSL en el ruido sintáctico.
Estos pueden ayudar a entender mi opinión:
http://fragmental.tw/2009/03/12/expessive-design-slides/
http://fragmental.tw/2008/04/20/domain-specific-languages-and-video-games/