Инструменты Microsoft Visual Studio SDK DSL — есть серьезные любители?

StackOverflow https://stackoverflow.com/questions/369504

Вопрос

Мы рассматриваем набор инструментов Microsoft DSL для создания абстрактных дизайнеров.Я уже сделал несколько POC, но хотел бы узнать мнение по этому поводу.

Кто-нибудь здесь может поделиться своим опытом работы с Microsoft DSL Toolkit и T4?Кроме того, помогут любые указатели на проекты DSL с открытым исходным кодом - например.Версия для моделирования Microsoft Service Factory в значительной степени зависит от набора инструментов DSL.

Поскольку выпуск OSLO/Quadrant займет некоторое время, я думаю, что единственный вариант, который у нас есть, — это положиться на дизайнера Microsoft DSL.(См. блог Кита о том же.)

Кроме того, вот некоторая информация о DSL, которая у меня уже есть:

1 - Хорошая лаборатория в MSDN по инструментам DSL

2 - Список проектов в Codeplex с использованием инструментария DSL

Это было полезно?

Решение

Мы проделали значительную работу с DSL, и у нас есть несколько из них для использования внутренними и клиентскими консультантами, хотя большую часть работы с ними проделал не я.Как только вы наладите моделирование (немалый подвиг), я бы сказал, что это отличные инструменты.

К сожалению, я не могу указать вам на какие-либо проекты с открытым исходным кодом и добавлю, что инвестиции в запуск и работу нетривиального DSL довольно велики, однако, если вы сделаете их правильно, то прирост производительности будет впечатляющим.

изменить - после нескольких лет опыта я делаю следующие наблюдения:

  1. У VS DSL плохая визуальная производительность, большие диаграммы, нужно свернуть элементы модели (скрыть/показать).
  2. на больших диаграммах со множеством соединяющихся линий сложно ориентироваться (сложны макеты)
  3. Большие модели работают адекватно для генерации кода и т. д., при этом время в основном уходит на десериализацию (как и ожидалось).
  4. Сравнение моделей затруднено из-за большого количества GUID.
  5. Хороший опыт разработчика требует тщательной разработки стандартных диалоговых окон свойств.
  6. Модели могут быть зашифрованы для защиты IP, это чрезвычайно затрудняет последующее сравнение (но это справедливо для всех зашифрованных файлов).

Другие советы

Я рассмотрел использование инструментария Visual Studio DSL.В конечном итоге я обнаружил, что эти инструменты слишком сужают ситуацию.Требовать графический интерфейс без какой-либо возможности легко описать лежащую в его основе текстовую грамматику кажется мне неадекватным.Мне нужна возможность легко использовать DSL без графического интерфейса.

Осло, похоже, идет в очень странном направлении, сохраняя все метаданные для DSL в базе данных SQL.Мне это кажется чуждым и, безусловно, может замедлить процесс, особенно если вам нужна быстрая интеграция с IDE.Признаюсь, я не вникал в это глубоко, так что это может быть лучше, чем мое впечатление о нем.

Кстати, недавно я реализовал DSL, используя Антлр.Вы можете найти мой пост как ответ на вопрос на SO об этом. здесь

Помимо вышесказанного, НОРМА Инструмент объектно-ролевого моделирования построен на основе DSL Tools.Это очень сложный пример того, что можно с их помощью сделать, и он демонстрирует использование XML-преобразований для преобразования модели и генерации кода.

Я определенно серьезный любитель.Недавно Иве создал DSL для моделирования процессов обработки заказов в системе заказов.Мы используем службу Windows, которая подключается к различным веб-службам в зависимости от статуса процесса, который имеет конкретная строка, а затем меняет статус в зависимости от результата (Далее, Ошибка, Отказ).Редактирование этой db-таблицы вручную занимало очень много времени, поэтому я сделал язык и генераторы для sql-кода.

Я должен проверить, разрешено ли мне публиковать какой-либо код из проекта, но я публикую структуру БД, чтобы вы могли понять, почему сложно редактировать ее вручную.Мне нужно ввести данные примерно за10 процессов заказа по 5-20 шагов каждый с действиями и всем остальным (ProcessActionId — это ссылка на веб-сервис).

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
)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top