Spring.Net, ASP.Net, Session et multithreadind

Pour commencer, je vous préviens, ce billet s’adresse à ceux qui savent développer en ASP.Net.
Je ne plaisante pas! J’ai vu un trop grand nombre de gens prétendre savoir faire des applications Web sans savoir m’expliquer le protocole HTTP!
Donc voici un petit test d’entré:

  • Comment fonctionne un HttpHandler?
  • Pourquoi ne pas utiliser les UpdatePanels?
  • A quoi sert un MembershipProvider et comment s’en servir?

Si ces questions vous paressent obscures et que vous êtes plutôt un développeur “glisser-déposer”, alors je vous propose de vous “glisser-déposer” sur un autre blog ;)

Pour les autres, j’ai un aveu à vous faire: je viens de découvrir qu’il n’est pas possible d’afficher 2 pages ASP.Net en simultané si elles accèdent à la Session.

Lire la suite

Présentation de Spring.Net

Je remercie David Coppet, Florent Dugué, Olivier Bazoud, Ophélie Rudent, ALT.Net, le SUG, Zenika, et l’équipe de France pour m’avoir permis de présenter Spring.Net.

C’était hier, dans les locaux de Zenika: http://www.eventbrite.com/event/727568176

Mais comme vous êtes nombreux à ne pas avoir pu y assister, et que certains d’entre vous souhaites consulter les sources des démos, je vous proposes de télécharger le tout sur mon Bitbucket: http://bitbucket.org/grozeille/spring.demo/src

J’espère que ça vous a plus, et que cela vous a permis de découvrir de nouvelles choses dans Spring.Net.
Si des gens d’ALT.Net  souhaite que je refasse la présentation à une date moins problématique, n’hésitez par à me le faire savoir.
De même, si vous souhaitez que j’approfondisse un sujet en prenant plus de temps à expliquer les démos, ce serait avec plaisir.

Share

Spring.Fluent

Certains le savent déjà, je suis un accro à Spring.Net depuis ses débuts.
En fait, je suis devenu amoureux de Spring Java dès sa sortie… c’était les débuts de l’IOC.

Spring est devenu un framework « standard de facto » dans le monde Java. Il inclut bien plus que de l’IOC: AOP, Web MVC, etc.
Aujourd’hui, Spring c’est aussi un serveur « JEE » d’un nouveau genre. Puis il y a eu l’acquisition d’Hyperic, puis c’est au tour de VMWare d’acquérir Spring…
Bref, c’est une vrai success story dans le monde Java.

Quand à Spring.Net, ce n’est pas encore ça. Le projet Castle est même lui plus avancé: framework IOC, AOP, Web MVC, etc.
Je crois que Castle était en avance sur son temps dans l’écosystème .Net, c’est peut-être la raison pourquoi il n’a pas pris la même ampleur que Spring Java.

Mais j’ai foie en Spring! Ce framework m’aide tout les jours à réaliser des applications d’entreprises complexes et robustes.

Mais une chose rebute TOUT développeur .Net: la configuration XML.
Le XML c’est verbeux, le XML ça ne se compile pas, on n’a pas intellisense avec le XML…
Bref, plein de raison de préférer des frameworks comme AutoFac ou Ninject qui propose une approche de configuration par code, voir à la sauce « fluent ».

A ça, je réponds que:

  • la verbosité n’est pas dramatique quand on a la complétion. Je remarque aussi que la verbosité est reproché avec des fichiers XML de 1000 lignes… ce qui est tout aussi vrai avec un code source C# de 1000 lignes.
  • la complétion et la vérification du XML peut être faite à l’édition ou la compilation, c’est ce que fait  Spring IDE sous Eclipse, mais pas de support VisualStudio pour le moment (même si Resharper arrive à la rescousse)
  • on PEUT faire du Spring sans XML, même si les gens de Spring.Net n’ont pas été très cool sur l’API…

Comme l’API de Spring.Net est un peut obscure et pas très documenté sur son utilisation en dehors d’une configuration XML, j’ai décidé de faire une petite surcouche pour facilité l’écriture et que ce soit suffisamment intuitif pour ne pas avoir besoin d’une doc.

De cette volonté est né le projet Spring.Fluent!!

C’est un projet OpenSource, ce qui veut dire que je ne vous interdit pas de m’aider à réaliser mon rêve :)
Ceci-dit, un projet similaire existe déjà: http://code.google.com/p/fluent-spring/
Alors pourquoi faire un fork? Car il m’a fallut 1 journée pour faire autant et même plus que ce le projet propose, et à ma façon qui me plait rien qu’à moi!

De plus, Mark Pollack à l’annonce de Spring.Net 1.3, a prétendu que la configuration « par code Fluent » sera un point de la prochaine version, à savoir la 2.0: http://www.infoq.com/interviews/Spring.NET-1.3-2.0

Je souhaite à Mark et toutes l’équipe de Spring.Net de réussir, en attendant j’ai ma propre solution. Et si elle peut les inspirer pour Spring.Net 2.0, ce sera formidable. C’est pourquoi je pense ce cet « effort » n’est pas perdu: il n’est jamais inutile de contribuer au monde OpenSource et à faire connaitre ses opinions.

Les Settings en .Net

La plateforme .Net fournit un mécanisme pour gérer les paramétrages. Il en existe 2 types : ceux de l’application et ceux de l’utilisateur. Au début de l’existance, il y avait la bonne vielle méthode du fichier *.ini, mais aujourd’hui le XML et devenu LE standard pour écrire des données dans un fichier « lisible » et structuré.

Il existe un autre standard : les applications .Net possède un fichier « mon_application.exe.config » qui n’est autre qu’un XML contenant le paramétrage de l’appliation. Ce fichier est structuré en 2 grosses parties: l’entête avec la section « configSections » qui décrit les sections du XML et les « parser » qui vont lire ces dernières. Puis il y a les sections proprement dites.
Lire la suite

Timeout WCF au bout d’un certain nombre d’appels

Rien de plus stressant que de passer une journée entière sur un bug. Surtout si on n’a aucune idée du problème (pas d’exceptions, ni d’erreurs dans les logs) et que les recherches sur Internet sont infructueuses.
Contexte : une application Web Asp.Net communique avec un service WCF.
Problème : au bout d’un certain nombre d’appels (invariant) l’application Web n’arrive plus à joindre le serveur (Timeout).

Lire la suite

Utiliser des *.resx externes (avec Spring.net)

On a parfois besoin de livrer une application .Net avec les fichiers de ressources, afin qu’un traducteur, voir même un intégrateur, puisse faire les traductions au dernier moment.

Si cette personne doit recompiler l’application pour voir le fruit de son travail, ce n’est pas très pratique voir impossible: allez lui expliquer que VisualStudio n’est pas nécessaire et qu’il est possible de créer des ressources avec ResGen.exe (et al.exe pour faire des assembly satellites). Très franchement, les traducteurs ne veulent pas de quelque chose d’aussi et vont vous fuir comme la peste si vous leur demander d’être des développeurs.

Lire la suite

Suivre

Recevez les nouvelles publications par mail.