Pergunta

Em um projeto de andaimes de aplicativos no qual estou trabalhando, eu estou tentando decidir se a utilização Oslo , T4 ou CodeDom para gerar código. Nossos objetivos são manter dependências para um mínimo e impulsionar a geração de código para um projeto impulsionado domínio a partir de histórias de usuários. O primeiro passo será criar os testes das histórias de usuários, mas queremos que os especialistas de domínio para ser capaz de escrever suas histórias em uma variedade de diferentes meios de comunicação (por exemplo aplicativo personalizado, Word, etc.) e ainda gerar os testes do histórias.

O que eu sei até agora:

  1. CodeDom requer .NET, mas podem apenas arquivos de classes .NET saída (por exemplo, cs, .vb). Nível de dificuldade é bastante elevado.
  2. T4 requer CodeDom e VS Standard +. Nível de dificuldade é bastante razoável, especialmente com a T4 Toolbox .
  3. Oslo é muito novo. Eu não tenho idéia das dependências, mas eu imagino que você deve estar em pelo menos .NET 3.5. Eu também não estou certo quanto às habilidades de geração de código ou a complexidade para a adição de novas gramáticas. No entanto, especialistas de domínio provavelmente poderia escrever histórias de usuários em IntelliPad com bastante facilidade. Também não tenho certeza sobre a facilidade de conversão de histórias em Word para um MGrammar.

Quais são seus pensamentos, experiências, etc, com qualquer das ferramentas acima. Queremos ficar com a Microsoft ou ferramentas de código aberto.

Foi útil?

Solução

Vá com T4 - decisão fácil.

  • Oslo é muito novo e as ferramentas são muito cru para ser qualquer coisa do que uma tecnologia só-eval
  • CodeDOM é poderoso, se você precisa gerar classes CLR em tempo de execução, e estão dispostos a sacrificar a modificação fácil de sua saída gerada.
  • T4 (com o kit de ferramentas T4) é um fácil de usar de propósito geral ferramenta de geração de código. Apenas dificuldade que eu tive até agora está em integrações em tempo de compilação.

Outras dicas

De um modo geral eu vejo a geração de código como parte de uma modelagem completa / codificação história. Deve ser acompanhada de um quadro genérico, em que a maior parte do encanamento é feito. Na minha opinião não é útil para gerar classes enormes Considerando que um quadro decente com pontos de extensão bem definidos ou ganchos será muito melhor para manter e estender.

Você precisará definir uma linguagem formal para as histórias de usuário, seja ele XML ou uma linguagem de domínio Oslo. Oslo exigiria seus especialistas em domínio para aprender as ferramentas Oslo. Você poderia usar o Word + XML. Em seguida, você define um modelo de aparência boa no Word, com um esquema XML incorporado e depois que a história está escrito que você pode obtê-lo a partir do Word em XML formalizados syntax.This lata XML, naturalmente, ser usado para acionar geradores, via XSLT ou Linq.

CodeDOM é poderoso, mas bastante complicada. É IMHO não é uma fácil solução de uso e não tem suporte modelo real.

Eu não tenho nenhuma experiência com T4, mas suas características de templates são um pré.

O produto Oslo é realmente muito novo, requer o .NET 4.0, um ambiente de tempo de execução. Ainda é apenas uma CTP. É um ambiente muito poderoso, embora eu tenha algumas dúvidas sobre a história geração de banco de dados.

Espero que isso ajude.

Bem, Oslo não se encaixa na lista. Não tem nenhuma história de geração de código até agora. Então vara com T4.

Oslo não tem a intenção de gerar o código para você. Você terá de criar um tempo de execução (programa C #, por exemplo) que muda o comportamento dependendo dos dados. Você pode vê-lo como um navegador de internet.

Eu não acredito que Oslo exige uma .Net 4.0, como Rine menciona. Para o meu estágio na Avanade Netherland Estou criando Oslo MSchema e MGrammars e C # 3.5 tempo de execução. Dependendo dos dados fornecidos que vai criando (não gerando) serviços WCF e executar os.

Há alguma aplicação interessante de Oslo

  • a "nova LDAP" System.Identity, mais em vídeo sessão PDC http://microsoftpdc.com/Sessions / SVC28
  • System.Modelling (eu acho) Microsoft.UML2 onde você pode empurrar informações sobre métodos, classes, módulos etc. no repositório, analisá-lo e criar relatórios. Por exemplo criar relatório com métodos adicionados / removidos entre 2 buils http://microsoftpdc.com/Sessions/SVR19
  • e da modelagem curso
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top