Question

Pour un projet de nuit, j'aimerais écrire un composant de validation pouvant être utilisé dans une application .NET pour effectuer la validation habituelle et fastidieuse d'objet, de paramètres d'entrée et de conditions de publication.

Ma première idée était de vider toute cette logique d'installation de validation dans un fichier de configuration XML et de fournir une interface liquide aux personnes souhaitant l'intégrer dans le code.

Etant donné que je voudrais proposer quelque chose qui soit réellement utilisable, j'ai pensé fournir un DSL (langage spécifique à un domaine) spécialisé. La question est de savoir quels outils dois-je utiliser pour faire cela?

J'ai pensé à l'analyse manuelle à l'aide de regex. Mais personnellement, j'aimerais avoir quelque chose de plus ... utilisable.

Alors, que suggéreriez-vous?

Était-ce utile?

La solution

Si vous recherchez spécifiquement une DSL, consultez le projet ANTLR . Nous l'avons utilisé avec succès dans mon entreprise par le passé.

Autres conseils

On dirait que vous parlez de mettre en œuvre une des fonctionnalités de .Net 4.0, les contrats de code .

Je suppose donc que mon outil recommandé serait VS.Net 2010.

Le problème avec les DSl est qu’ils sont rarement efficaces isolément. Pour pouvoir écrire un logiciel réel, vous devez vraiment pouvoir intégrer le DSL dans un langage hôte. Comparez, par exemple, la façon dont Linq fonctionne par rapport à du SQL pur. Un autre bon exemple est la fonctionnalité littérale XML dans VB. Tous deux vous permettent d’écrire du code réel, dans un PL généraliste, et de le tisser avec un code DSL déclaratif plus simple.

Le résultat est bien plus puissant qu'un SQL autonome ou un simple éditeur XML.

Malheureusement, ni C # ni VB n’offrent de fonctionnalités de méta-programmation, la seule façon de le faire pour les développeurs .net traditionnels est de créer votre propre langage. Si c'est quelque chose que vous faites juste pour le plaisir, vous pourrez peut-être modifier le compilateur mono C # pour ajouter les fonctionnalités qui vous intéressent au langage. Une autre alternative pourrait être d'essayer le rubis. Il a une syntaxe flexible qui vous laisse sortir avec beaucoup de folie. Personnellement, cependant, je préférerais l'approche piratée en C #.

Pourriez-vous consulter Créer des langues spécifiques à un domaine dans Boo (Boo est un langage CLR, les concepts doivent être reportés en C #). La Simple State Machine est un exemple de projet.

Jetez un coup d'œil à Oslo de Microsoft, ne sachant pas si c'est le cas ce que vous voulez, mais je sais que vous pouvez créer des analyseurs syntaxiques DSL, spécifier des grammaires et le faire générer des bibliothèques de classes capables d’analyser des données en fonction de la grammaire.

Plus de détails sur le " M " la langue et comment l’utiliser sont ici

Pourquoi aller si loin? Commencez par utiliser des génériques et une interface fluide. Commencez simple et travaillez-le à travers une production. Si le coefficient de friction est trop élevé pour une interface fluide, envisagez d’utiliser un DSL.

Vous pouvez essayer les outils DSL pour Visual Studio.

Vous devriez consulter le projet Irony à l'adresse http://irony.codeplex.com/

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top