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

Foi útil?

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 :

  1. As DSLs VS tem desempenho visual maus diagramas grandes, você precisa dobrar os elementos do modelo afastado (Hide / Show)
  2. diagramas grandes com muitas linhas de interligação são difíceis de navegação (esquemas são difíceis)
  3. grandes modelos de realizar de forma adequada para o código gen etc, com o tempo gasto principalmente em deserialisation (como esperado)
  4. comparação Modelo é difícil devido ao grande número de GUIDs
  5. Uma experiência bom programador exige muito desenvolvimento ao longo do fora das caixas de diálogo Propriedades da caixa.
  6. 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
)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top