Question

Dans un projet d'échafaudage d'application sur lequel je travaille, j'essaie de décider s'il faut utiliser Oslo , T4 ou CodeDom pour générer du code. Nos objectifs sont de minimiser les dépendances et de générer du code pour une conception pilotée par le domaine à partir d'histoires utilisateur. La première étape consistera à créer les tests à partir des user stories, mais nous souhaitons que les experts du domaine puissent écrire leurs histoires sur différents supports (par exemple, application personnalisée, Word, etc.) tout en générant les tests à partir du. histoires.

Ce que je sais jusqu'à présent:

  1. CodeDom requiert .NET mais ne peut générer que des fichiers de classe .NET (par exemple, .cs, .vb). Le niveau de difficulté est assez élevé.
  2. T4 nécessite CodeDom et VS Standard +. Le niveau de difficulté est assez raisonnable, en particulier avec la boîte à outils T4 .
  3. Oslo est très nouvelle. Je n'ai aucune idée des dépendances, mais j'imagine que vous devez être au moins sur .NET 3.5. Je ne suis pas non plus certain des capacités de génération de code ni de la complexité liée à l'ajout de nouvelles grammaires. Cependant, les experts de domaine pourraient probablement écrire des user stories dans Intellipad assez facilement. Également incertain de la facilité de conversion d’histoires dans Word en MGrammar.

Quelles sont vos pensées, expériences, etc. avec l’un des outils ci-dessus? Nous voulons nous en tenir à Microsoft ou aux outils open source.

Était-ce utile?

La solution

Allez avec T4 - décision facile.

  • Oslo est trop nouvelle et les outils sont trop crus pour être autre chose qu'une technologie d'évaluation uniquement
  • CodeDOM est puissant, si vous devez générer des classes CLR au moment de l’exécution et êtes prêt à sacrifier la modification facile de la sortie générée.
  • T4 (avec la boîte à outils T4) est un outil de génération de code à usage général facile à utiliser. Le seul problème que j’ai eu jusqu’à présent concerne les intégrations au moment de la construction.

Autres conseils

De manière générale, je considère la génération de code comme une partie d’une histoire de modélisation / codage complète. Il devrait être accompagné d'un cadre générique dans lequel l'essentiel de la plomberie est effectué. À mon avis, il n'est pas utile de générer d'énormes classes alors qu'un cadre décent avec des points d'extension bien définis ou des points d'ancrage bien définis sera beaucoup mieux à maintenir et à étendre.

Vous devrez définir un langage formalisé pour les user stories, qu'il s'agisse de XML ou d'un langage de domaine Oslo. Oslo aurait besoin de vos experts de domaine pour apprendre les outils d’Oslo. Vous pouvez utiliser Word + XML. Ensuite, vous définissez un beau modèle dans Word, avec un schéma XML incorporé. Une fois l’histoire écrite, vous pouvez l’obtenir de Word en syntaxe XML formalisée. Ce XML peut bien entendu être utilisé pour piloter des générateurs, via XSLT ou Linq.

CodeDOM est puissant, mais plutôt encombrant. Ce n'est pas une solution facile à utiliser à mon humble avis et ne prend pas en charge les modèles réels.

Je n'ai aucune expérience de T4, mais ses fonctionnalités de gabarit sont un pré.

Le produit Oslo est en effet assez récent et nécessite .Net 4.0, un environnement d’exécution. Ce n'est toujours qu'un CTP. C’est un environnement très puissant, même si j’ai des doutes sur l’histoire de la génération de la base de données.

J'espère que cela vous aidera.

Eh bien, Oslo ne correspond pas à la liste. Il n’a pas encore d’histoire de génération de code. Alors, restez avec T4.

Oslo n’a pas l’intention de générer du code pour vous. Vous devrez créer un environnement d'exécution (programme C # par exemple) qui modifiera son comportement en fonction des données. Vous pouvez le voir comme un navigateur Internet.

Je ne crois pas qu'Oslo nécessite un .Net 4.0, comme le mentionne Rine. Pour mon stage chez Avanade Pays-Bas, je & # 8217; je crée Oslo MSchema et MGrammars ainsi qu’un runtime C # 3.5. Selon les données fournies, il créera (et ne générera pas) des services WCF et les exécutera.

Il y a des applications intéressantes d'Oslo

  • le " nouveau LDAP " System.Identity, plus de contenu dans la vidéo de session PDC http://microsoftpdc.com/Sessions/SVC28
  • System.Modelling (je pense) Microsoft.UML2 où vous pouvez transmettre des informations sur les méthodes, classes, modules, etc. dans le référentiel, les analyser et créer des rapports. Par exemple, créer un rapport avec des méthodes ajoutées / supprimées entre deux versions http://microsoftpdc.com/Sessions/SVR19
  • et bien sûr la modélisation
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top