Microsoft Visual Studio SDK DSL Tools - Кто-нибудь серьезно хочет?

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

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

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

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

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

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

15.12.2008 19:53:51
Я пытаюсь понять, как все это работает. Нужно ли пользователям иметь лицензию на Visual Studio, чтобы использовать DSL?
TimothyP 15.12.2008 21:50:09
Чтобы создать пакет DSL, загрузите и установите Visual Studio SDK. Пакет DSL подобен любому другому пакету VS, для его развертывания требуется ключ загрузки пакета. msdn.microsoft.com/en-us/library/bb165795(VS.80).aspx
amazedsaint 16.12.2008 07:57:23
AFAIK все инструменты Visual Studio UML созданы с помощью общедоступного SDK для моделирования и визуализации ... это довольно серьезная
Jack Ukleja 7.11.2014 18:17:52
4 ОТВЕТА
РЕШЕНИЕ

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

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

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

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

Я определенно серьезный игрок. 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
)
0
19.03.2009 12:17:24
Звучит круто. Infact, мы также сделали что-то вроде этого, в основном для генерации клика по прототипам и объектам
amazedsaint 23.03.2009 13:38:57
Конечно, вы можете просто использовать ORM для генерации всего кода сохранения репозитория ...
Mitch Wheat 12.07.2009 02:32:55

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

2
12.07.2009 02:30:02
ОП спросил об открытом исходном коде. Источник для NORMA находится здесь: github.com/ormsolutions/NORMA С 197 DomainClasses, это существенная часть работы.
cliffordheath 25.04.2018 04:40:07

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

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

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

4
23.05.2017 11:47:21
@Darien: этот вопрос был конкретно о DSL Toolkit.
John Saunders 12.07.2009 03:07:40
Ааа, вы правы, я ошибся в части вопроса о проектах с открытым исходным кодом. Почтовое тело удалено
Darien Ford 12.07.2009 03:28:47
На самом деле, я отредактирую его, чтобы больше отражать мое мнение об инструментах, которые есть у MS.
Darien Ford 12.07.2009 03:29:42
@Darien: БД SQL Server - только одна из целей Осло. Вы также можете получить AST или "MSchema". БД (SQL Server Express == free) удобна для случая, когда модель и ее экземпляры должны быть доступны в одном месте нескольким заинтересованным сторонам. Пример: настройка приложений и сервисов.
John Saunders 15.07.2009 20:53:29