Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

Tout sur WPF, LINQ, C# et .NET en général !

[LINQ] NLinq: Pour disposer des fonctionnalités de LINQ avec .NET 1.1 et .NET 2 !

Sébastien Ros vient de mettre à disposition, sur Codeplex, le projet NLinq, qui n'est rien d'autre qu'un Framework visant à réimplémenter les fonctionnalités de LINQ mais pour les framework .NET 1.1 et 2.0.

"NLinq is a framework focusing on reimplementing the Linq functionnalities in .Net 1.1 and 2.0 by providing a Linq grammar parser and a "Linq To Memory" execution environment. With NLinq you can take advantage of major C# 3.0 features right now, without requiring it."

Concrètement, voici le genre de choses que vous allez pouvoir faire:

Certes, pour l'instant, c'est très ressemblant à LINQ To Objects: il serait intéressant que Sébastien fasse la même chose mais pour LINQ To SQL et LINQ To XML Wink

En tout cas, c'est un sacré boulot qui mérite au moins qu'on y jette un oeil: NLinq

 

A+

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: mercredi 5 septembre 2007 19:46 par Thomas LEBRUN
Classé sous : ,

Commentaires

patrice a dit :

euh...

Si je lis l'exemple :

quid du boxing/unboxing ?

quid de l'intellisense ?

quid de l'extensibilité ?

# septembre 5, 2007 20:50

Thomas LEBRUN a dit :

Salut Patrice,

Je vais répondre à tes questions très honnetement: absolument aucune idée :)

En effet, pour le moment, je n'ai pas eu l'occasion de regarder le projet en détails (j'ai appris son existence il y a quelques heures à peine): je ne pourrais donc pas te répondre tout de suite

Si l'auteur passe par là, peut-il le fera-t-il sinon, j'essayerais de regarder dès que je pourrais pour éventuellement t'en dire plus après.

Mais n'oublie pas 2 choses:

- mon post avait juste pour objectif de vous tenir informé de l'existence de ce projet

- Le but de ce projet est de réimplémenter LINQ sur des versions du framework qui ne dispose des fonctionnalitées offerte par le FX 3.5. Il est donc normal que celui-ci ne soit pas à 100% identique à l'original et que certaines fonctionnalités (je pense à l'intellisense, dont tu as parlé) ne soient pas opérationnelles.

A+

# septembre 5, 2007 21:10

FREMYCOMPANY a dit :

L'intelisense, vous ne l'aurez pas mais ca vous évitera de devoir migrer ;)

# septembre 5, 2007 21:31

RaptorXP a dit :

Les requêtes sont sous forme de string !! Donc pas de vérification à la compilation.

En fait le framework 3.5 s'appuie lui aussi sur 2.0, donc je ne vois pas trop dans quel cas on peut avoir besoin de ce NLinq ?

Mais dans tous les cas, je reconnais que ça doit représenter un travail important !

# septembre 6, 2007 01:11

simon ferquel a dit :

Mouais, je suis pas convaincu de l'intérêt du truc...

Pas de type safety, pas de compile-time check, émission de code IL résultant du parsing d'un string tout ca pour éviter d'écrire un foreach et un Sort, ca me parait franchement pas réaliste.

Au passage, mon interprétation du nom du projet, ca serait "Non Language INtegrated Queries". En effet, on passe complètement à côté d'un des principaux concepts apportés par Linq : l'intégration au langage, et la vérification syntaxique à la compilation

# septembre 6, 2007 09:56

Thomas LEBRUN a dit :

L'auteur m'a contacté par mail pour poster la réponse à vos questions: je poste ce qu'il m'a envoyé en attendant qu'il reçoive son mot de passe.

Au passage, merci de ne pas prendre les commentaires de mon blog pour un ring de boxe :)

A+

Patrice : « quid du boxing/unboxing ? »

-          Effectivement, il y a pas mal de boxing et on ne peut pas y faire grand-chose dans ce type d’outils. Mais ce n’est pas un problème, si ? Performances ? Hum … la performance c’est d’atteindre les objectifs en temps de réponse, pas d’être le plus apide possible, sinon on fait de l’assembleur, pas du C# ;)

Patrice : « quid de l'intellisense ? »

-          Effectivement, j’ai rarement vu l’intellisense dans une chaîne de caractères. Le fait de fonctionner en C# 2.0 et 1.1 empêche cela car les mots clés ne sont reconnus que par la version 3.0.

Patrice : « quid de l'extensibilité ? »

-          Pour le moment rien. On verra ce que les utilisateurs en attendront.

RaptorXP : « En fait le framework 3.5 s'appuie lui aussi sur 2.0, donc je ne vois pas trop dans quel cas on peut avoir besoin de ce NLinq ? »

-          C’est vrai, mais il faut quand même Visual Studio 2008 pour pouvoir bénéficier de Linq, ce qui fait au moins 4 mois de vie pour NLinq, c’est plus que le CPE !

-          Vous avez surement la chance de faire tous vos développement en 3.5, moi non ;) Je travaille sur des pojets d’envergure internationale qui sont encore sous 1.1, depuis quelques mois 2.0 voire 3.0.

-          Beaucoup de programmeurs n’utilisent même pas les fonctionnalité de 2.0 donc cela risque d’être encore au gout du jour pendant un moment.

-          Cela fait un bon outil d’apprentissage car c’est exactement la même syntaxe. Le jour où le C# 3 sortira ils l’auront déjà en main.

Il faut aussi savoir quelles peuvent être les utilisations (je les ai rencontrées en clientèle). Par exemple dans les banque il y a beaucoup de taxes et de règles monétaires. Il faut pouvoir les coder sous forme littérale  afin de les administrer. Par exemple un impôt variant en fonction du volume, la TVA, … Avec ce framework on peut évaluer ces expressions dynamiquement, et en plus utiliser des fonctions métiers dans la formule (ProrataTemporis(), Client.DateNaissance, …). Un embryon de moteur de règle. Quid avec Linq ;)

Chez un autre client ce sont toutes les formules mathématiques d’analyse scientifique de capteurs qui sont stockées. Encore bingo !

Et puis souvent on ne voit pas à quoi cela peu servir et quelqu’un en trouve une utilité inattendue. Ma mère par exemple ne voit pas à quoi Windows Workflow peut servir. Pour autant elle ne sait pas forcément tout de l’informatique.

# septembre 6, 2007 10:13

simon ferquel a dit :

Pour l'évaluation dynamique d'expressions Linq, c'est faisable (c'est dans un des samples livré avec 2008).

Au passage, le moteur de règles, je trouve justement que Linq apporte du nouveau, avec la possibilité de modifier / combiner des expressions at runtime, et de créer des bibliothèques de règles s'appuyant non pas sur des bibliothèques en mode text (xml ou autre), mais sous forme d'assemblies contenant une collection d'arbres d'expressions.

bref, toujours pas convaincu de l'intérêt.

Au passage, même si tu as besoin du compilo du framework 3.5 pour créer des requètes Linq, tu peux les déployer sur un système sous le framework 2.0 (en déployant simplement System.Core, et System.Data.Linq si tu veux faire du Linq to SQL).

# septembre 6, 2007 10:30

Thomas LEBRUN a dit :

Petit apparté dans le débat: Fabrice Marguerie a expliqué, en détails, la dernière remarque de Simon: http://weblogs.asp.net/fmarguerie/archive/2007/09/05/linq-support-on-net-2-0.aspx

# septembre 6, 2007 10:37

Jb Evain a dit :

Simon,

Sébastien vient d'expliquer qu'un des buts était d'avoir un DSL mathématique, sous une forme textuelle pour que des gens sans compilateurs puissent les administrer. Un autre but étant de tourner sous .net 1.1.

Et toi tu proposes de compiler des règles sous forme d assemblies utilisant LINQ pour .net 2. Je comprends que tu sois pas convaincu de l'intérêt si tu comprends pas les pré-requis.

Et pour info, si la solution de déployer System.Core est techniquement possible, il y a toutes les chances que la licence du framework .net ne te permette pas de le faire. Et que donc, n'importe quelle boite un tant sois peu sérieuse n'accepte pas cette solution.

# septembre 6, 2007 10:51

simon ferquel a dit :

J'admet tout à fait que ce projet peut avoir son utilité dans ce genre de cas, mais ce qui me chiffone véritablement, c'est la volonté d'affiliation à Linq. En effet, en dehors de la syntaxe qui reprend celle de C# 3.0, il n'y a aucun rapport, que ce soit d'un point de vu technique (ca ne fonctionne pas du tout de la même manière), que d'un point de vu "cas d'utilisation" (vu l'impact sur les perfs, à part pour le moteur de règles, l'intérêt me semble plus que limité).

Cela n'enlève rien au fait que ca a du nécessiter une masse importante de travail, et qu'effectivement, il s'agit d'une jolie pirouette technique.

# septembre 6, 2007 11:07
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [Perso] Découvertes estivales : Linux (Part I) par Le blog de FremyCompany le il y a 57 minutes

- [Refactoring] ReSharper pour Visual Studio 2010 (Preview) par Thomas Jaskula le il y a 15 heures et 33 minutes

- [Refactoring] Analyser vos exceptions avec ReSharper Exceptional par Thomas Jaskula le il y a 16 heures et 47 minutes

- SharePoint 2007 : patterns & practices SharePoint Guidance par Philippe Sentenac [MVP SharePoint] le 07-03-2009, 09:56

- [Visual Studio 2010] Les tests cases c’est bien, mais je vais devoir tout réécrire ? par Etienne Margraff le 07-03-2009, 09:00

- MVP[Gribouillon].AddYear par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le 07-03-2009, 08:45

- Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1 par David REI le 07-02-2009, 23:38

- C’est la crise ? Bah pourquoi cramer du budget pub alors ? par Nix's Blog le 07-02-2009, 15:31

- Soyons MVP ! par TheSaib .NET blog le 07-02-2009, 12:15

- SharePoint : Gestion des Erreurs 6398, 7076 et 6482 par Blog Technique de Romelard Fabrice le 07-02-2009, 11:53