Frage

Bei einer Anwendung Baugerüst Projekt, an dem ich arbeite, ich versuche zu entscheiden, ob ein href verwenden <= „http://msdn.microsoft.com/en-us/oslo/default.aspx“ rel = "nofollow noreferrer"> Oslo , T4 oder CodeDom Code zu generieren. Unsere Ziele sind Abhängigkeiten auf ein Minimum zu halten und Code-Generierung für eine Domain Driven Design von User Stories fahren. Der erste Schritt wird sein, die Tests von den Benutzern Geschichten zu schaffen, aber wir wollen, dass die Domain-Experten in der Lage sein, ihre Geschichten in einer Vielzahl von verschiedenen Medien (zB benutzerdefinierte Anwendung, Word, etc.) zu schreiben und erzeugt noch die Tests von der Geschichten.

Was ich weiß, so weit:

  1. CodeDom erfordert .NET kann aber nur dann ausgegeben, .NET-Klassendateien (z CS-, .vb). Schwierigkeitsgrad ist ziemlich hoch.
  2. T4 erfordert CodeDom und VS Standard +. Schwierigkeitsgrad ist ziemlich vernünftig, vor allem mit der T4 Toolbox .
  3. Oslo ist sehr neu. Ich habe keine Ahnung von den Abhängigkeiten, aber ich glaube, Sie auf mindestens .NET 3.5 sein muss. Ich bin auch nicht sicher, wie die Code-Generierung Fähigkeiten oder die Komplexität für das Hinzufügen neue Grammatiken. Domain-Experten könnte wahrscheinlich ganz leicht User Storys in IntelliPad schreiben jedoch. Auch nicht sicher einfache Geschichten in Word zu einem MGrammar konvertieren.

Was sind Ihre Gedanken, Erfahrungen, usw. mit einem der oben genannten Werkzeuge. Wir wollen gemeinsam mit Microsoft oder Open-Source-Tool bleiben.

War es hilfreich?

Lösung

Gehen Sie mit T4 - einfache Entscheidung.

  • Oslo ist zu neu und die Werkzeuge sind zu roh nichts als eine eval-only-Technologie sein
  • CodeDOM ist kraftvoll, wenn Sie CLR-Klassen zur Laufzeit generieren müssen, und bereit sind, einfache Änderungen an Ihre erzeugten Ausgabe zu opfern.
  • T4 (mit der T4-Toolkit) ist ein einfache Allzweck-Code-Generierungs-Tool zu verwenden. Nur Schwierigkeit, die ich je hatte bisher ist in Build-Zeit-Integrationen.

Andere Tipps

Im Allgemeinen I-Code-Generation als Teil einer kompletten Modellierung / Codierung Geschichte zu sehen. Es sollte von einem allgemeinen Rahmen begleitet werden, in dem die meisten der Sanitär erfolgt. Meiner Meinung nach ist es nicht sinnvoll, große Klassen zu erzeugen, während ein anständiger Rahmen mit gut definierten Erweiterungspunkten oder Haken viel besser sein wird, zu erhalten und zu erweitern.

Sie müssen einige formalisierte Sprache für die Benutzergeschichten definieren, sei es XML oder eine Oslo Domänensprache. Oslo würde Ihre Domain-Experten benötigen die Oslo Werkzeuge zu lernen. Sie könnten Word + XML verwenden. Dann definieren Sie eine gut aussehende Vorlage in Word, mit einem eingebetteten XML-Schema und nach die Geschichte geschrieben ist, können Sie es aus Word erhalten in formalisierte XML syntax.This XML können natürlich verwendet werden, Generatoren anzutreiben, über XSLT oder Linq.

CodeDOM ist mächtig, aber recht umständlich. Es ist IMHO keine einfache Lösung zu verwenden, und es hat keine wirkliche Template-Unterstützung.

Ich habe keine Erfahrung mit T4, aber seine Templating Features sind ein Pre.

Das Oslo Produkt ist in der Tat ganz neu, erfordert .Net 4.0, eine Laufzeitumgebung. Es ist nach wie vor nur eine CTP. Es ist eine sehr leistungsstarke Umgebung, obwohl ich einige Zweifel an der Datenbank Generation Geschichte haben.

Hope, das hilft.

Nun, Oslo nicht die Liste passen. Es hat keine Codegenerierung Geschichte so weit. Halten Sie sich also mit T4.

Oslo hat nicht die Absicht Code für Sie zu generieren. Sie haben eine Laufzeit (C # Programm zum Beispiel) zu schaffen, die es Verhalten auf den Daten abhängig ändert. Sie können es wie ein Internet-Browser sehen.

Ich glaube nicht, dass Oslo erfordert eine .Net 4.0, wie Rine erwähnt. Für mein Praktikum bei Avanade Netherland bin ich die Schaffung Oslo MSchema und MGrammars und eine C # 3.5-Laufzeit. Je nach den gegebenen Daten wird es (nicht erzeugt) WCF-Dienste und führen diejenigen zu schaffen.

Es gibt einige interessante Anwendung von Oslo

  • die "neue LDAP" System.Identity, mehr in PDC Sitzung Video http://microsoftpdc.com/Sessions / SVC28
  • System.Modelling (glaube ich) Microsoft.UML2, wo Sie Informationen über Methoden, Klassen, Module usw. im Repository schieben können, analysieren und Berichte erstellen. Zum Beispiel erstellen Bericht mit Methoden hinzugefügt / entfernt zwischen 2 buils http://microsoftpdc.com/Sessions/SVR19
  • und natürlich Modellierung
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top