Microsoft Visual Studio SDK DSL Tools - Кто-нибудь серьезно хочет? - PullRequest
10 голосов
/ 15 декабря 2008

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

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

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

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

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

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

Ответы [ 4 ]

5 голосов
/ 18 марта 2009

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

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

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

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

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

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

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

2 голосов
/ 12 июля 2009

В дополнение к вышесказанному в DSL Tools используется инструмент NORMA для объектно-ролевого моделирования. Это очень сложный пример того, что можно сделать с ними, и демонстрирующий использование XML-преобразований для преобразования моделей и генерации кода.

0 голосов
/ 19 марта 2009

Я определенно серьезный игрок. Ivé недавно сделал DSL для моделирования процессов заказов для системы заказов. Мы используем windowsservice, который подключается к различным веб-сервисам в зависимости от того, какой процесс имеет конкретная строка, а затем изменяет статус в зависимости от результата (Next, Error, Denial). Редактирование этой db-таблицы заняло очень много времени, поэтому я создал язык и генераторы для кода SQL.

Я должен проверить, разрешено ли мне публиковать какой-либо код из проекта, но я публикую структуру БД, чтобы вы могли понять, почему трудно редактировать это вручную. Я должен ввести данные для aprox. 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
)
...