Domanda

In un progetto di impalcature di applicazioni su cui sto lavorando, sto cercando di decidere se utilizzare Oslo , T4 o CodeDom per la generazione di codice. I nostri obiettivi sono di ridurre al minimo le dipendenze e guidare la generazione di codice per una progettazione guidata dal dominio dalle storie degli utenti. Il primo passo sarà creare i test dalle storie degli utenti, ma vogliamo che gli esperti del dominio siano in grado di scrivere le loro storie su una varietà di media diversi (ad esempio app personalizzate, Word, ecc.) E generare comunque i test dal storie.

Quello che so finora:

  1. CodeDom richiede .NET ma può solo produrre file di classe .NET (ad es. .cs, .vb). Il livello di difficoltà è abbastanza alto.
  2. T4 richiede CodeDom e VS Standard +. Il livello di difficoltà è abbastanza ragionevole, specialmente con T4 Toolbox .
  3. Oslo è nuovissima. Non ho idea delle dipendenze, ma immagino che tu debba essere almeno su .NET 3.5. Non sono inoltre sicuro delle capacità di generazione del codice o della complessità per l'aggiunta di nuove grammatiche. Tuttavia, gli esperti di dominio potrebbero probabilmente scrivere storie utente in Intellipad abbastanza facilmente. Inoltre, non sono sicuro della facilità con cui converti le storie in Word in MGrammar.

Quali sono i tuoi pensieri, esperienze, ecc. con uno qualsiasi degli strumenti di cui sopra. Vogliamo attenerci a strumenti Microsoft o open source.

È stato utile?

Soluzione

Vai con T4 - decisione facile.

  • Oslo è troppo nuova e gli strumenti sono troppo grezzi per essere qualcosa di più di una tecnologia solo valutaria
  • CodeDOM è potente, se è necessario generare classi CLR in fase di esecuzione e si è disposti a sacrificare semplici modifiche all'output generato.
  • T4 (con il toolkit T4) è uno strumento di generazione di codice per scopi generici di facile utilizzo. L'unica difficoltà che ho avuto finora è nelle integrazioni in fase di creazione.

Altri suggerimenti

In generale, vedo la generazione del codice come parte di una storia completa di modellazione / codifica. Dovrebbe essere accompagnato da un quadro generico in cui viene eseguita la maggior parte dell'impianto idraulico. A mio avviso, non è utile generare grandi classi mentre un quadro decente con punti di estensione o hook ben definiti sarà molto meglio da mantenere e da estendere.

Dovrai definire un linguaggio formalizzato per le storie degli utenti, sia esso XML o un linguaggio di dominio Oslo. Oslo richiederebbe agli esperti del tuo dominio di apprendere gli strumenti di Oslo. È possibile utilizzare Word + XML. Quindi definisci un modello di bell'aspetto in Word, con uno schema XML incorporato e dopo che la storia è stata scritta puoi ottenerlo da Word in sintassi XML formalizzata.Questo XML può ovviamente essere usato per guidare generatori, tramite XSLT o Linq.

CodeDOM è potente, ma piuttosto ingombrante. Non è una soluzione facile da usare e non ha un vero supporto per i modelli.

Non ho esperienza con T4, ma le sue caratteristiche di template sono un pre.

Il prodotto Oslo è davvero abbastanza nuovo, richiede .Net 4.0, un ambiente di runtime. È ancora solo un CTP. È un ambiente molto potente, anche se ho qualche dubbio sulla storia della generazione del database.

Spero che questo aiuti.

Bene, Oslo non rientra nell'elenco. Finora non ha una storia sulla generazione di codice. Quindi segui T4.

Oslo non ha intenzione di generare codice per te. Dovrai creare un runtime (ad esempio un programma C #) che cambi il suo comportamento in base ai dati. Puoi vederlo come un browser Internet.

Non credo che Oslo richieda un .Net 4.0, come menziona Rine. Per il mio tirocinio presso Avanade Netherland ho & # 8217; sto creando Oslo MSchema e MGrammars e un runtime C # 3.5. A seconda dei dati forniti creerà (non genererà) servizi WCF ed eseguirà tali.

Esistono alcune interessanti applicazioni di Oslo

  • il " nuovo LDAP " System.Identity, altro nel video della sessione PDC http://microsoftpdc.com/Sessions/SVC28
  • System.Modelling (credo) Microsoft.UML2 dove è possibile inviare informazioni su metodi, classi, moduli ecc. nel repository, analizzarlo e creare report. Ad esempio, creare un rapporto con i metodi aggiunti / rimossi tra 2 buil http://microsoftpdc.com/Sessions/SVR19
  • e ovviamente modellazione
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top