visual studio para microsoft instalar descargar .net visual-studio dsl dsl-tools visual-studio-sdk

.net - para - sdk visual studio 2017



Herramientas DSL de Microsoft Visual Studio SDK: ¿cualquier tomador serio? (4)

Definitivamente soy un tomador serio. Ivé hizo recientemente una DSL para modelar procesos de pedido para un sistema de ordenamiento. Usamos un servicio de Windows que se conecta a diferentes servicios web en función de qué processtatus tiene una fila específica y luego cambia el estado en función del resultado (Siguiente, Error, Denegación). Me costó mucho tiempo editar manualmente la tabla db, así que creé un lenguaje y generadores para el código sql.

Debo verificar si puedo publicar cualquier código del proyecto, pero publico la estructura de la base de datos para que pueda entender por qué es difícil editarlo manualmente. Tengo que poner datos para aprox. 10 procesos de pedido con 5-20 pasos cada uno con acciones y todo (ProcessActionId es una referencia a un servicio web).

CREATE TABLE [dbo].[OrderProcessStep]( [OrderProcessCode] [int] NOT NULL, [PreviousProcessStatusCode] [int] NOT NULL, [NextProcessStatusCode] [int] NULL, [DenialProcessStatusCode] [int] NULL, [ErrorProcessStatusCode] [int] NULL, [ProcessActionId] [int] NULL, [StepComment] [varchar](500) NOT NULL, [SecondsToNext] [int] NULL, [SecondsToError] [int] NULL, [SecondsToDenial] [int] NULL, CONSTRAINT [PK_OrderProcess] PRIMARY KEY CLUSTERED ( [OrderProcessCode] ASC, [PreviousProcessStatusCode] ASC )

Estamos considerando la herramienta de Microsoft DSL para crear algunos diseñadores abstractos. Ya hice algunos POC, pero me gustaría obtener algunas opiniones sobre el mismo.

¿Alguien aquí para compartir sus experiencias trabajando con Microsoft DSL Toolkit y T4? Además, cualquier sugerencia para abrir proyectos DSL de código fuente ayudará - por ejemplo. La edición de modelado de Microsoft Service Factory confía mucho en el kit de herramientas de DSL.

Como OSLO / Quadrant tardará un tiempo en ser lanzado, creo que la única opción que tenemos es confiar en el diseñador de Microsoft DSL. ( Ver el blog de Kieth sobre lo mismo )

Además, aquí hay información que ya tengo en DSL:

1 - Un buen laboratorio en MSDN en herramientas DSL

2 - Una lista de proyectos en Codeplex utilizando el kit de herramientas DSL


Además de lo anterior, la herramienta NORMA para el Modelo de Objeto se basa en las Herramientas DSL. Es un ejemplo muy sofisticado de lo que se puede hacer con ellos y demuestra el uso de transformaciones XML para la transformación del modelo y la generación de código.


Hemos hecho un trabajo considerable con las DSL y varias de ellas para el uso de consultores basados ​​en la casa y en el cliente, aunque no soy yo quien más ha trabajado con ellas. Una vez que haya resuelto el modelado (no pequeña hazaña), diría que estas son excelentes herramientas.

No puedo señalarle ningún proyecto de código abierto desafortunadamente, y agregaré que la inversión para poner en marcha una DSL no trivial es bastante grande, sin embargo, si los obtiene correctamente, el aumento de la productividad es impresionante.

editar - después de unos años de experiencia hago las siguientes observaciones :

  1. Las VS DSL tienen un mal rendimiento visual Diagramas grandes, es necesario plegar los elementos del modelo (ocultar / mostrar)
  2. los diagramas grandes con muchas líneas interconectadas son difíciles de navegar (los diseños son difíciles)
  3. Los modelos grandes funcionan adecuadamente para gen de código, etc., con el tiempo que se toma principalmente en la deserialización (como se esperaba)
  4. La comparación de modelos es difícil debido a la gran cantidad de GUIDs
  5. Una buena experiencia de desarrollador requiere mucho desarrollo sobre los diálogos de propiedades listos para usar.
  6. Los modelos se pueden cifrar para proteger IP, lo que hace que la comparación sea extremadamente difícil (pero esto es cierto para todos los archivos cifrados).

He analizado el uso del kit de herramientas DSL visual studio. En última instancia, encontré que esas herramientas son muy restrictivas. Requerir una GUI, sin ninguna habilidad para describir fácilmente una gramática textual subyacente, me parece inadecuada. Necesito la capacidad de usar fácilmente el DSL sin una GUI.

Oslo parece ir en una dirección muy extraña, almacenando todos los metadatos para el DSL en una base de datos SQL. Eso me parece extraño, y ciertamente puede ralentizar las cosas, especialmente si quieres una integración rápida de IDE. Es cierto que no he examinado a fondo, por lo que puede ser mejor que mi impresión de ello.

Como comentario aparte, recientemente implementé una DSL usando Antlr . Puedes encontrar mi publicación como respuesta a una pregunta sobre SO al respecto aquí