Estúdio SDK DSL Tools Microsoft Visual - todos os compradores sérios?
-
21-08-2019 - |
Pergunta
Estamos considerando Microsoft DSL kit de ferramentas para a criação de alguns designers abstratos. Eu já fiz alguns AP, mas gostaria de obter algumas opiniões sobre o mesmo.
Qualquer um aqui para partilhar as suas experiências de trabalho com o Microsoft DSL Toolkit e T4? Além disso, qualquer ponteiros para projectos DSL de código aberto vai ajudar - por exemplo. Microsoft Service Fábrica edição modelagem é bastante dependentes da caixa de ferramentas DSL.
Como OSLO / Quadrant vai levar algum tempo para ser liberado, eu acho que a única opção que temos é de confiar na Microsoft DSL designer. (Blog See de Kieth na mesma )
Além disso, aqui estão algumas informações que já tenho em DSL:
1 - A Nice Lab no MSDN em ferramentas DSL
2 - uma lista de projectos no Codeplex usando DSL kit de ferramentas
Solução
Temos feito um trabalho considerável com as DSLs e ter um número de-los para casa e cliente baseado uso consultor, embora não tenha me que tenha feito mais trabalho com eles. Depois de ter passado a ferro para fora a modelagem (não é pouca coisa) eu diria que estes são grandes ferramentas.
Eu não posso apontá-lo em qualquer projetos de código aberto unfortuanetly, e vou acrescentar que o investimento na obtenção de um DSL não trivial instalado e funcionando com é bastante grande, no entanto, se você pegá-los bem, então o aumento de produtividade é impressionante.
Editar - depois de alguns anos de experiência Eu fazer as seguintes observações :
- As DSLs VS tem desempenho visual maus diagramas grandes, você precisa dobrar os elementos do modelo afastado (Hide / Show)
- diagramas grandes com muitas linhas de interligação são difíceis de navegação (esquemas são difíceis)
- grandes modelos de realizar de forma adequada para o código gen etc, com o tempo gasto principalmente em deserialisation (como esperado)
- comparação Modelo é difícil devido ao grande número de GUIDs
- Uma experiência bom programador exige muito desenvolvimento ao longo do fora das caixas de diálogo Propriedades da caixa.
- Os modelos podem ser criptografados para proteger IP, o que torna a comparação mais tarde extremamente difícil (mas isso é verdade para todos os arquivos criptografados.)
Outras dicas
Eu olhei para o uso do kit de ferramentas estúdio DSL visual. Em última análise, eu achei essas ferramentas a ser muito a constrição. Para exigir uma GUI, sem qualquer capacidade de descrever facilmente uma gramática textual subjacente, apenas parece inadequada para mim. I exigem a capacidade de facilmente usar o DSL sem um GUI.
Oslo parece estar indo em uma direção muito estranha, armazenar todos os metadados para o DSL em um SQL DB. Isso parece estranho para mim, e certamente pode desacelerar as coisas, especialmente se você quiser a integração IDE rápido. É certo que eu não olhei profundamente dentro dele, por isso pode ser melhor do que a minha impressão do mesmo.
Como um aparte, recentemente implementou uma DSL usando Antlr . Você pode encontrar o meu post como uma resposta a uma pergunta sobre SO sobre isso aqui
Além do acima, o NORMA ferramenta para Objeto ViewOnlyAdmin Modeling é construído sobre as DSL Tools. É um exemplo muito sofisticado do que pode ser feito com eles, e demonstra o uso de transformações XML para a transformação do modelo e geração de código.
Estou definitivamente um comprador sério. Ive recentemente fez uma DSL para orderprocesses modelo para uma orderingsystem. Nós usamos um windowsservice que que se conecta a diferentes webservices com base no qual processtatus uma linha específica tem e, em seguida, altera o status com base no resultado (Next, Erro, negação). Foi muito demorado para editar essa db-tabela manualmente, por isso fiz um idioma e geradores de código SQL.
I deve verificar se estou autorizado a publicar qualquer código do projeto, mas eu postar a estrutura DB para que você possa entender o porquê É díficil fazer editar isso manualmente. Eu tenho que colocar em dados de aprox. 10 orderprocesses com 5-20 etapas, cada uma com ações e tudo (ProcessActionId é um refrence para um webservice).
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
)