2009-01-29 12 views
4

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 réduire au minimum les dépendances et de générer une génération de code pour une conception basée sur un domaine à partir d'user stories. 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 dans une variété de supports différents (par exemple application personnalisée, Word, etc.) tout en générant les tests à partir du histoires.T4 vs CodeDom vs Oslo

Ce que je sais à ce jour:

  1. CodeDom nécessite .NET mais seulement peut produire des fichiers de classe .NET (par exemple .cs, .vb). Le niveau de difficulté est assez élevé.
  2. T4 requiert CodeDom et VS Standard +. Le niveau de difficulté est assez raisonnable, surtout avec le T4 Toolbox.
  3. Oslo est très nouveau. Je n'ai aucune idée des dépendances, mais j'imagine que vous devez être au moins .NET 3.5. Je ne suis pas sûr non plus des capacités de génération de code ou de la complexité pour ajouter de nouvelles grammaires. Cependant, les experts du domaine pourraient probablement écrire des user stories dans Intellipad assez facilement. Aussi pas sûr de la facilité de convertir des histoires dans Word à un MGrammar. Quelles sont vos pensées, expériences, etc. avec l'un des outils ci-dessus?

Nous voulons rester avec Microsoft ou des outils open source.

Répondre

9

Allez avec T4 - décision facile.

  • Oslo est trop nouveau et les outils sont trop crus pour être autre chose qu'une technologie eval seule
  • CodeDOM est puissant, si vous avez besoin pour générer des classes CLR lors de l'exécution, et que vous êtes prêt à sacrifier facile modification de votre 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. La seule difficulté que j'ai eu jusqu'ici est dans les intégrations de temps de construction.
+0

Cela répond plus directement à ma question initiale. Merci pour votre contribution, Scott. –

+0

L'intégration de l'heure de génération nécessite que vous invoquiez vous-même le fichier TextTemplate.exe, car VS.NET tend à verrouiller tous les assemblages partagés que vous utilisez pour la lecture dans les métadonnées. Une fois que vous avez fait cela (à partir des étapes pré-post-construction) c'est vraiment sympa. J'utilise powershell pour faire les comparaisons de date de fichier pour déterminer si appeler le moteur de modèle. –

3

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

Vous devrez définir un langage formalisé pour les user stories, que ce soit du XML ou une langue de domaine d'Oslo. Oslo exigerait que vos experts du domaine apprennent l'outillage d'Oslo. Vous pouvez utiliser Word + XML. Ensuite, vous définissez un modèle attrayant dans Word, avec un schéma XML intégré et une fois l'histoire écrite, vous pouvez l'obtenir à partir de Word dans une syntaxe XML formalisée. Ce XML peut bien sûr être utilisé pour piloter des générateurs via XSLT ou Linq. CodeDOM est puissant, mais plutôt encombrant. Il est à mon humble avis pas une solution facile à utiliser et il n'a pas de véritable support de modèle.

Je n'ai aucune expérience avec T4, mais ses caractéristiques de modèle sont un pré.

Le produit Oslo est en effet assez récent, nécessite .Net 4.0, un environnement d'exécution. Ce n'est encore 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.

Espérons que cela aide.

+0

je prendrais un regard sérieux sur XML aussi :) – leppie

+0

Ceci est une excellente réponse et correspond à l'approche globale que je suis essayant de prendre. –

+0

... modèle dans Word, avec un schéma XML intégré ... semble intéressant, aucune idée où je peux trouver l'information pour une enquête plus approfondie? merci ... – bob

1

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

0

Oslo n'a pas l'intention de générer du code pour vous. Vous devrez créer un runtime (programme C# par exemple) qui change le comportement en fonction des données. Vous pouvez le voir comme un navigateur internet.

Je ne crois pas qu'Oslo exige un .Net 4.0, comme les mentions de Rine. Pour mon stage chez Avanade Netherland, je suis en train de créer Oslo MSchema et MGrammars ainsi qu'un runtime C# 3.5. En fonction des données fournies, il va créer (et non générer) des services WCF et les exécuter.

0

Il y a une application intéressante d'Oslo

  • la "nouvelle LDAP" System.Identity, plus la vidéo de la session PDC http://microsoftpdc.com/Sessions/SVC28
  • System.Modelling (je pense) Microsoft.UML2 où vous pouvez pousser des informations à propos des méthodes, classes, modules, etc. dans le Repository, l'analyser et créer des rapports. Par exemple créer un rapport avec les méthodes ajouté/retiré entre 2 buils http://microsoftpdc.com/Sessions/SVR19
  • et de la modélisation des cours
Questions connexes