2009-03-30 16 views
24

Sto cercando un motore di template per .NET/C# per generare notifiche email nella mia applicazione. Ho letto su NVelocity in passato e penso che sarebbe adatto alle mie esigenze, ma sembra che questo progetto sia morto.Il progetto NVelocity è morto? Ci sono alternative?

Si consiglia comunque di utilizzare NVelocity per tale scopo o è possibile suggerire eventuali alternative?

Nota: ho trovato alcuni altri motori di template, ma questi sono principalmente "view-engine" per ASP.NET MVC (Brail, NHaml, ecc.). Ma penso che questi non sono quello che sto cercando.

risposta

26

Il progetto Castle ha biforcato il progetto e lo ha mantenuto, e più recentemente ha rilasciato la versione 1.1.1 il 10 dicembre 2010. Maggiori dettagli possono essere trovati a the Castle Projects NVelocity site. Hanno anche apportato una serie di miglioramenti, i cui dettagli possono essere trovati nella pagina on their NVelocity improvements. Il progetto sembra che sia morto e in MonoRail 3 è stato sostituito da Castle Blade, basato su Razor.

Se si sta cercando un'alternativa, suggerirei lo Razor view engine da ASP.Net MVC3 o Spark View Engine.

Il progetto open source RazorEngine consente di utilizzare il motore Razor View al di fuori di ASP.Net MVC o pagine Web in modo da poterlo utilizzare per generare e-mail basate su modelli.

+0

Castello ha avuto un rilascio NVelocity nel dicembre del 2010. – mattmc3

+4

btw, questo è ora un collegamento morto e in base alla loro pagina è ora un "progetto archiviato" che indica che è effettivamente morto – Earlz

+0

Sto lavorando con ASP.NET 2.0 e avevo bisogno di una libreria di modelli. Dovrei semplicemente andare con l'originale 'NVelocity' o c'è una buona alternativa compatibile con ASP.NET 2.0 (non MVC 2!). –

-1

Si consiglia di utilizzare XSLT per il template. Sì, richiede un po 'più di tempo per imparare la tecnologia, ma poi hai una soluzione di template molto più flessibile di qualsiasi altra cosa.

+0

Questa risposta elenca i pro e i contro dell'utilizzo di [UI XML/XSLT per un prodotto aziendale per oltre 5 anni] (http://stackoverflow.com/a/847342/819887) e nella stessa domanda [questa risposta conclude se sei impegnato con xslt e hai dati complessi che richiedono un processo di rendering complesso, allora vai con esso altrimenti non andare con esso.] (http://stackoverflow.com/a/848596/819887) – surfmuggle

1

È possibile utilizzare la versione originale (e frequentemente aggiornato) Java di velocità in .NET utilizzando IKVM per convertirlo a un assemblea. Ho usato Velocity in questo modo con successo per la generazione del codice con .Net. Si potrebbe anche dare un'occhiata a StringTemplate. Esistono versioni Java e C# di StringTemplate. Puoi trovare un breve mini-tutorial sull'uso di Velocity in .Net here. Suggerisco di dare un'occhiata a StringTemplate tuttavia, poiché penso che sia un motore di template più pulito (sono un convertito recente).

3

Non vedo un motivo per non utilizzare NVelocity (il fork del progetto Castle). È stabile e le tue esigenze specifiche (modelli di email) non sono probabilmente così complesse come quelle di altri progetti che utilizzano NVelocity, quindi non dovresti aspettarti alcun problema.

3

C'è un progetto su codeplex.

http://www.codeplex.com/NVelocity

Descrizione del progetto: NVelocity è un porto di molto propular Java open source modello enginee quadro, velocità 1.6. NVelocity è un puro.Libreria di rete scritta in C# che attualmente è indirizzata alla versione 3.5 del framework .

Il codice sorgente iniziale registrato sembra essere direttamente da svn.castleproject.org.

La persona che crea il progetto CodePlex (nome utente: TerryLiang) anche ne ha creato uno in agosto da nLucene. Per quel progetto, ha fatto fatto circa 50 check-in da allora, quindi forse ha in programma di fare del lavoro serio su quel progetto.

3

Non c'è niente di sbagliato in NVelocity, tranne che è difficile trovare la versione più aggiornata del progetto. In genere, Google attiva il vecchio collegamento Sourceforge come primo hit e il collegamento codeplex è il successivo più comune. Il posto per ottenerlo è dal Castello come menzionato da Pervez Choudhury. Usiamo la versione Castle di NVelocity al lavoro, ed è grandiosa.

C'è un'altra opzione che è emersa negli anni da quando questa domanda è stata posta per la prima volta, e questo è il T4 di Microsoft. La maggior parte delle persone pensa che T4 sia un generatore di pre-compilazione in quanto era la prima versione, ma attualmente è possibile utilizzarlo per generare una classe di generatore e generare dinamiche in fase di runtime. Si chiama modello T4 pre-elaborato e puoi leggere ulteriori informazioni su di esso here. Il vantaggio è che è già integrato in Visual Studio, quindi non devi fare nulla di speciale per andare avanti.

3

Poiché NVelocity sembra essere morto (di nuovo), suggerirei DotLiquid. Non posso dire molto per ora come sto ancora valutando, ma sicuramente sembra promettente (e costruisce come libreria MonoTouch/MonoDroid per quello che mi riguarda).

UPDATE [11 Giugno 2012]

Il vincolo di avere "sicuri" Corsi/collezioni modelli possono essere una fonte importante di mal di testa. Quando valuti questo motore, potresti voler iniziare da questo punto.

2

Non riesco a sorvolare Sorin per DotLiquid, quindi voglio solo aggiungere il mio commento: sembra che sia stata sviluppata una grande piattaforma.

E con le caratteristiche che hanno in versione tronco (non nel tho dll rilasciato) è possibile utilizzare pocos, senza la necessità di ereditare da qualsiasi classe di base se si registra loro in questo modo:

foreach (var type in {Assembly}.GetTypes()) 
    Template.RegisterSafeType(type, type.GetProperties().Select(p => p.Name).ToArray()); 

e questo ha risolto i mal di testa citati da Sorin.

StringTemplate è anche una grande cosa, ma troppo rigida e limitante, i modelli sono troppo puri Vista ed è inpractical da usare ...