2009-03-30 5 views
24

Je suis à la recherche d'un moteur de template pour .NET/C# pour générer des notifications par email dans mon application. J'ai lu à propos de NVelocity dans le passé et pense que cela correspondrait à mes besoins, mais il semble que ce projet est mort.Le projet NVelocity est-il mort? Existe-il des alternatives?

Recommanderiez-vous toujours d'utiliser NVelocity à cette fin ou pouvez-vous suggérer des alternatives?

Note: J'ai trouvé d'autres moteurs de templates, mais ceux-ci sont pour la plupart des "view-engines" pour ASP.NET MVC (Brail, NHaml, etc.). Mais je pense que ce n'est pas ce que je cherche.

Répondre

26

Le projet Castle a bifurqué le projet et l'a maintenu, et a récemment publié la version 1.1.1 le 10 décembre 2010. Plus de détails peuvent être trouvés à the Castle Projects NVelocity site. Ils ont également apporté un certain nombre d'améliorations, dont les détails peuvent être trouvés on their NVelocity improvements page. Le projet semble maintenant mort et dans MonoRail 3, il a été remplacé par Castle Blade qui est basé sur Razor.

Si vous cherchez une alternative, alors je suggère le Razor view engine de ASP.Net MVC3 ou le Spark View Engine.

Le projet open source RazorEngine vous permet d'utiliser le moteur de vue Razor en dehors de ASP.Net MVC ou de pages Web afin de pouvoir l'utiliser pour générer des e-mails modélisés.

+0

Castle avait un communiqué NVelocity en Décembre 2010. – mattmc3

+4

BTW, c'est maintenant un lien mort et selon leur page c'est maintenant un "projet archivé" indiquant qu'il est en effet mort – Earlz

+0

Je travaille avec ASP.NET 2.0 et j'avais besoin d'une bibliothèque de modèles. Dois-je juste aller avec le 'NVelocity' d'origine ou existe-t-il une bonne alternative qui est compatible avec ASP.NET 2.0 (pas MVC 2!). –

-1

Je recommanderais d'utiliser XSLT pour modéliser. Oui, il faut un peu plus de temps pour apprendre la technologie, mais ensuite vous avez une solution de modèle beaucoup plus flexible qu'autre chose.

+0

Cette réponse répertorie les avantages et les inconvénients de l'utilisation d'une [interface utilisateur XML/XSLT pour un produit d'entreprise pendant plus de 5 ans] (http://stackoverflow.com/a/847342/819887) et dans la même question [cette réponse conclut] si vous vous êtes engagé à xslt et que vous avez des données complexes qui nécessitent un processus de rendu complexe, alors allez-y, sinon, ne l'utilisez pas.] (http://stackoverflow.com/a/848596/819887) – surfmuggle

3

Vous pouvez utiliser brail ou nhaml standalone pour générer des emails HTML.

Le noyau de nhaml (pas sûr de brail ??) n'a aucune référence à MVC ou ASP. J'ai utilisé nhaml pour générer des documents XPS pour l'impression et la création de rapports à partir d'une application Win Forms.

Si elle doit être du texte peut-être http://www.stringtemplate.org/

Et voici une question similaire How to use Brail as a stand-alone general purpose templating engine (like NVelocity)?

1

Vous pouvez utiliser l'original (et fréquemment mis à jour) version Java de Velocity en .Net en utilisant IKVM pour le convertir à un assemblage. J'ai utilisé la vitesse avec succès de cette façon pour la génération de code sous .Net. Vous pouvez également jeter un coup d'oeil à StringTemplate. Il existe des versions Java et C# de StringTemplate. Vous pouvez trouver un mini-tutoriel rapide sur l'utilisation de Velocity dans .Net here. Je suggère de jeter un coup d'oeil à StringTemplate cependant, car je pense que c'est un moteur de modèle plus propre (je suis un converti récent).

3

Je ne vois pas de raison de ne pas utiliser NVelocity (la fourche de projet Castle). Il est stable et vos besoins spécifiques (modèles d'emails) ne sont probablement pas aussi complexes que ceux des autres projets qui utilisent NVelocity, vous ne devriez donc pas vous attendre à des problèmes.

3

Il existe un projet sur codeplex.

http://www.codeplex.com/NVelocity

Description du projet: NVelocity est un port de très propular modèle java open source enginee cadre, la vitesse 1.6. NVelocity est un pur.Bibliothèque réseau écrite en C# qui cible actuellement Framework version 3.5.

Le code source initial enregistré semble être directement issu de svn.castleproject.org.

La personne qui a créé le projet CodePlex (nom d'utilisateur: TerryLiang) aussi en a créé une en août chez nLucene. Pour ce projet, il a fait environ 50 checkins depuis lors, alors peut-être qu'il prévoit faire un travail sérieux sur ce projet.

3

Il n'y a rien de mal à NVelocity, sauf qu'il est difficile de trouver la version la plus récente du projet. Google affiche généralement l'ancien lien sourceforge comme premier hit, et le lien codeplex est le suivant. L'endroit pour l'obtenir est de Château comme Pervez Choudhury mentionné. Nous utilisons la version Castle de NVelocity au travail, et c'est génial.

Il y a une autre option qui a émergé dans les années depuis que cette question a été posée, et c'est le T4 de Microsoft. La plupart des gens pensent que T4 est un générateur de pré-compilation car c'était la première version, mais en fait vous pouvez maintenant l'utiliser pour générer une classe de générateur et faire une génération dynamique à l'exécution. C'est ce qu'on appelle un modèle T4 prétraité, et vous pouvez en lire plus à ce sujet here. L'avantage est qu'il est déjà intégré dans Visual Studio, vous n'avez donc rien de spécial à faire.

3

Comme NVelocity semble être mort (à nouveau), je suggérerais DotLiquid. Je ne peux pas dire grand-chose pour l'instant car je l'évalue toujours, mais cela semble prometteur (et construit comme bibliothèque MonoTouch/MonoDroid pour ce que je suis concerné).

MISE À JOUR [11 juin 2012]

La contrainte d'avoir des classes/collections "sûrs" que les modèles peuvent être une source majeure de maux de tête. Lors de l'évaluation de ce moteur, vous pouvez commencer à partir de ce point.

2

Je ne peux pas convertir Sorin pour DotLiquid, donc je veux juste ajouter mon commentaire - il semble qu'une plate-forme géniale soit activement développée.

Et avec des fonctionnalités dont ils disposent dans la version du tronc (pas dans le tho dll publié), vous pouvez utiliser pocos sans qu'il soit nécessaire d'hériter de toute classe de base si vous les enregistrez ainsi:

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

et cette résolu les maux de tête mentionnés par Sorin.

StringTemplate est aussi une bonne chose, mais trop stricte et limiter, les modèles sont trop purs Vues et il est inpractical utiliser ...