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

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

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

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

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

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

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


person amazedsaint    schedule 15.12.2008    source источник
comment
Пытаюсь понять, как все это работает. Нужна ли пользователям лицензия на Visual Studio для использования вашего DSL?   -  person TimothyP    schedule 16.12.2008
comment
Чтобы создать пакет DSL, загрузите и установите Visual Studio SDK. Пакет DSL похож на любой другой пакет VS, для развертывания вам понадобится ключ загрузки пакета. msdn.microsoft.com/en-us/library/bb165795 (VS.80) .aspx   -  person amazedsaint    schedule 16.12.2008
comment
AFAIK, все инструменты Visual Studio UML созданы с помощью общедоступного SDK моделирования и визуализации ... это довольно серьезный выбор.   -  person Jack Ukleja    schedule 07.11.2014


Ответы (4)


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

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

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

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

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

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

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

person Darien Ford    schedule 12.07.2009
comment
@Darien: этот вопрос был конкретно о DSL Toolkit. - person John Saunders; 12.07.2009
comment
Ах, вы правы, я неправильно понял часть вопроса о проектах с открытым исходным кодом. Сообщение тела delted - person Darien Ford; 12.07.2009
comment
На самом деле, я отредактирую его, чтобы лучше отразить мое мнение об инструментах, которые есть у MS. - person Darien Ford; 12.07.2009
comment
@Darien: база данных SQL Server - лишь одна из целей Осло. Вы также можете получить AST или MSchema. БД (SQL Server Express == бесплатно) удобна в случае, когда модель и ее экземпляры должны быть доступны в одном месте для нескольких заинтересованных сторон. Пример: настройка приложений и сервисов. - person John Saunders; 16.07.2009

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

person John Saunders    schedule 12.07.2009
comment
ОП спросил об открытом исходном коде. Источник для NORMA находится здесь: github.com/ormsolutions/NORMA С 197 классами домена это существенная часть работы. - person cliffordheath; 25.04.2018

Я определенно серьезно беру. Ивэ недавно сделал DSL для моделирования процессов заказа для системы заказов. Мы используем windowsservice, который подключается к различным веб-сервисам в зависимости от того, какой статус процесса имеет конкретная строка, а затем меняет статус в зависимости от результата (Next, Error, Denial). Редактировать эту 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
)
person Glenn    schedule 19.03.2009
comment
Звучит круто. Фактически, мы также сделали что-то подобное, в основном для создания прототипов и объектов dto. - person amazedsaint; 23.03.2009
comment
Конечно, вы можете просто использовать ORM для генерации всего кода сохранения репозитория .... - person Mitch Wheat; 12.07.2009