11.06.07
Bye-bye CAB/SCSF, Welcome Acropolis ! [edited]
Juste pour info, MS annonce un nouveau SmartClient qui remplacera à terme CAB/SCSF.
On peut se réjouir que le futur bébé soit full .NET 3.0. Windows Workflow est enfin a l'oeuvre, et XAML montre qu'il ne sert pas qu'à faire de la UI.
Reste à espérer que le chemin de migration CAB/SCSF ne soit pas trop lourd, et que cet Acropolis ne s'éternise pas... stay tuned.
[edit 15/06] c'est bien SCSF et non WCSF.
15.02.06
Client Riche... une belle démo
S'il en est encore pour certains des doutes sur ce que va changer Avalon WPF dans le monde du client riche, voici qui devrait vous éclairer sur le véritable web de demain, tueur d'Ajax.
Il s'agit évidemment de flash, mais l'idée est là. Chapeau bas d'ailleurs à la web agency, c'est là qu'on réalise les années de tooling accumulées nécessaires à ce genre de réalisation.. et le chemin équivalent qu'il reste à faire autour d'Avalon.
[OT] Fracture Numérique, Graphologie, SOA et Assedic
Il y a des titres de blog improbables, et pourtant...
Nos chères institutions optent pour le libre, grand bien leur fasse. Mais la fracture numérique n'est pas toujours celle qu'on croit.
Pour ceux qui auront comme moi joué avec les formulaires électroniques ACCRE, Assedic et j'en passe, il semblerait bien que le manuscrit reste encore l'arme la plus efficace..quoique (lisez plutôt);
On ne compte plus le nombre d'e-formulaires web/PDF buggués, avec formules de calcul intégrées fausses ou incomplètes, champs insaisissables, tabulation capricieuse et surtout postback partiel.
Or donc, me voici contraint de compléter moi-même avec mon vieux bic les champs ayant inopinément "disparu" de mon e-formulaire d'e-licenciement e-conomique, souhaiter soulager l'administratif, TPE oblige, en remplissant par avance les rubriques sur indication précise de sa part avant signature par le gérant.
C'était sans compter sur l'imparable firewall de notre e-administration:
Oui on a bien votre dossier depuis 15 jours mais c'est la même écriture monsieur, on trouve ça bizarre, il nous faudrait des justificatifs supplémentaires.
Comme quoi dans notre monde moderne, l'analyse graphologique ne se réduit pas à l'entretien d'embauche.
Me voila donc contraint à justifier de mes origines fiscales, ma non-possession de part, ma non-appartenance à un directoire, ma non-association capitalistique et j'en passe.
...osais-je effrontément.Non je ne suis qu'un simple salarié, mais n'avez-vous pas les moyens de le vérifier dans vos fichiers ?"
Non monsieur, c'est pas dans nos services.
Tout d'un coup, Separation of Concern et Verticalisation métier prirent une connotation toute différente dans mon esprit...
04.02.05
1. The Way
The Way that can be experienced is not true;
The world that can be constructed is not true.
The Way manifests all that happens and may happen;
The world represents all that exists and may exist.
To experience without intention is to sense the world;
To experience with intention is to anticipate the world.
These two experiences are indistinguishable;
Their construction differs but their effect is the same.
Beyond the gate of experience flows the Way,
Which is ever greater and more subtle than the world.
TaoDeChing - Lao Tze
(Chinese text)
05.01.05
Eclipse, OSGi, .NET
2005, c'est parti !
Mes dernières pérégrinations .NETocturnes m'ont amené a creuser autour de ... Eclipse, le VisualStudio de Java (ne vous vexez pas il y a encore des gens qui ne connaissent pas
)
Je suis chaque jour fasciné par l'intelligence de la conception modulaire de ce joyau... Au point d'ailleurs d'être horriblement tenté de fusionner notre gestion de projets Java ET .NET (versionning cvs, scripts de build) intégralement sous Eclipse.
L'idée ne semble pas si absurde puisqu'en maintenance, les ratios sont plus a la gestion de configuration qu'au codage, et Eclipse a une grosse longueur d'avance sur VS.NET 2003. Nos scripts de build sont invoqués en tant qu'external tool builders et appellent NAnt en attendant MSBuild. Citons au passage le plugin Eclipse C# d'Improve encore modeste mais déjà remarquable.
Pour en revenir a Eclipse donc, je me suis mis en tête l'idée -un peu absurde, comme toujours- d'étudier le portage éventuel du système de plugins sous .NET, l'objectif étant bien de comprendre la plus-value de ses mécanismes d'assemblage dynamique (...pas de faire un Eclipse# hélas, sans blague Jb
) Après tout, dites-moi si je me trompe, mais tout ça a un rapport pas si lointain avec les conteneurs légers et l'IoC.
En fait, le béotien que je suis découvre donc qu'Eclipse s'appuie sur un socle OSGi, que je découvre aussi
, lequel est justement chargé de ce genre de problématique. je creuse encore un peu... et je tombe sur ce splendide rapport de magistère très récent (Septembre 2004) qui traite précisément du portage d'OSGi en .NET, et qui par son style très pédagogique pourrait constituer un magnifique article DNG (ou bien sont-ce les articles DNG qui sont aussi bien ficelés que des thèses de recherche ?
). Les conclusions sont hélas qu'un OSGi.NET reste encore un mythe, mais les explications sont remarquables! En plus, l'article place clairement OSGi dans le contexte SOA ce qui a tout pour me réjouir ![]()
... tiens, je parle trop vite peut-être : une implémentation Compact Framework ici!
Merci Google
Voila pour la R & D du moment. Si vous êtes expert du sujet et que vous me savez déjà perdu en plein désert, merci de me montrer la sortie ![]()
J'en profite pour souhaiter a tous et a toutes une Très Bonne Année !
20.12.04
PetShopSOA - Sources disponibles
Les sources sont disponibles ici :
PetShopSOA.zip
Vous devez avoir installé au préalable:
- Microsoft WSE 2
- VS.NET 2003 Enterprise Templates
- MS PetShop 3 (afin d'installer la base de données)
Vous devez reporter les chaines de connexion cryptées de MS PetShop 3 dans chacune des solutions (3, 3.1, 3.2) car elles sont spécifiques a votre machine.
Chaque solution (3, 3.1, 3.2) correspond a une étape de la refactorisation, telle que décrite lors du symposium. La solution 3.2 nécessite un démarrage de projets multiples dans VS.NET, a savoir tous les xxx.WebHost
Bonne lecture, et Joyeux Noël par la même occasion !
22.10.04
Vos Logs NT au format RSS
Après que mes collègues Java adeptes de log4j m'aient moulte fois raillé sous le prétexte (accepté) que les logs NT de Microsoft sont toujours aussi compliqués a analyser, surtout quand ils sont chez l'hébergeur, nous sommes tombés d'accord sur une lumineuse idée parceque simple : exposer ces logs au format RSS. Ainsi nous pouvons monitorer très simplement ce sous-système de Windows certes efficace mais toujours aussi tristement propriétaire ![]()
Après 10 minutes de code et la librairie OpenSource RSS.NET, la chose était réglée. C'est tellement trivial en réalité que le code tient dans les lignes qui suivent... cadeau ![]()
(désolé pour la mise en page)
using System.Web;
using RSS.NET;public class LogToRssHandler : IHttpHandler
{
void IHttpHandler.ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/xml";
context.Response.ContentEncoding = Encoding.UTF8;
context.Response.StatusCode = 200;string machineName = ".";
string source = context.Request.Params["source"];
string logName= EventLog.LogNameFromSourceName(source,machineName);
EventLog log = new EventLog(logName,".",source);string sMax = context.Request.Params["max"];
int max = (sMax==null) ? 20 : int.Parse(sMax);RssChannel channel = new RssChannel();
channel.Generator = "LogToRssHandler";
channel.LastBuildDate = DateTime.Now;
channel.PubDate = DateTime.Now;
channel.Title = "Log - "+source;
channel.Description = channel.Title;
channel.Link = context.Request.Url;
foreach(EventLogEntry entry in log.Entries)
{
if (!entry.Source.Equals(source))
continue;
if (max--==0)
break;
RssItem item = new RssItem();
RssCategory cat = new RssCategory();
cat.Name = entry.Category;
item.Categories.Add(cat);
item.Description = string.Join(" ",entry.ReplacementStrings);
item.PubDate = entry.TimeWritten;
item.Title = string.Concat(entry.EntryType.ToString()," - ",entry.Message);
channel.Items.Add(item);
}RssFeed feed = new RssFeed();
feed.Channels.Add(channel);
feed.Encoding = Encoding.UTF8;
feed.Version = RssVersion.RSS20;
feed.Write(context.Response.OutputStream);
}bool IHttpHandler.IsReusable
{
get { return false; }
}
}
Pour compléter l'histoire, j'ai fait le soir même une petite recherche Google et la chose était cette fois bouclée en 30 secondes...
12.10.04
PetShopSOA, suite et fin
Bonjour a tous et a toutes,
Je reçois plusieurs mails de personnes souhaitant télécharger le code source de PetShopSOA.
Chose promise, chose due, le code sera disponible sous peu. Il s'agit essentiellement de rédiger un manuel de mise en route léger.
Pour l'anecdote, la solution est constituée de 55 projets et il y a une dizaine de fichiers .config a paramétrer avec des chaines de connections cryptées avec une clef propre a votre machine...cette fonctionnalité étant présente dans les Data Access Layer de la version MS que nous avons intégralement récupéré, il n'est apparemment pas possible de débrayer cette fonctionnalité sans modifier un peu le code, ou sans vous donner quelques consignes.
D'autre part, le deuxième et dernier article sur PetShopSOA est en gestation (et non, pas de trilogie en vue
) - Il est nécessaire (même si mon emploi du temps me dis le contraire...
) puisque, entre le 1er opus de Novembre 2003 et le Symposium, si rien certes n'a changé concernant l'approche générale, le code source bientôt disponible n'est plus en phase avec le prototype technique évoqué il y a un an.
Concernant le futur de PetShop, nous avons bien noté les multiples remarques concernant le fait qu'il faudrait passer a autre chose (pas moins de 3 sessions PetShop lors du symposium!!). A ce sujet, le team DNG cherchait, dès vendredi soir, la suite a donner sur les futures applications de référence présentées par DNG.
10.10.04
Symposium DNG ... l'effet démo
Session SOA Efficace : l'ancestral effet démo ayant encore fonctionné a merveille
, vous auriez du voir ceci:
Un PetShop distribué sur 5 applications web communiquant via WebServices WSE 2.0, dont un service catalogue substitué par celui d'Amazon.
Cliquez sur l'image pour l'agrandir

A noter que j'ai incriminé un peu trop vite, honneur mal placé oblige
, Orange Wifi et Amazon : le problème venait tout simplement d'un appSetting mal configuré (à 8h55..) dans un des 55 projets que constituait la solution...
Corollaire:
1) ne jamais modifier un déploiement SOA a chaud
2) ne jamais développer un connecteur amazon la veille d'un symposium ![]()
3) relire les deux lignes précédentes une centaine de fois 
Hormis cela, j'espère que vous aurez trouvé la session intéressante, et dans tous les cas je vous invite, comme tous les autres speakers je pense, a donner votre point de vue sur les sujets abordés lors de cette passionnante journée !
PS : Je tiens également a remercier, avec beaucoup de retard, Guillaume Renaud de Microsoft pour ses conseils éclairés durant la préparation de cette session.
20.08.04
Hello tous,
L'été fut meurtrier ... enfin presque
. Preuve si l'en est que réaliser une boutique d'e-commerce from scratch en 2 mois n'est pas une gageure, aussi puissante que soit la technologie (.NET + J2EE en l'occurrence), l'expérience fût pour le moins éprouvante.
Au chapitre des bonnes nouvelles, les approches prévalentes se revèlent terriblement efficaces pour éviter tout problème de montée en charge (ce qui n'a rien d'extraordinaire dans le principe mais qui fait toujours plaisir a voir ... un honorable 1200rps avec 200 users simultanés, et sans même avoir utilisé le cache de page .net)
Autre petit plaisir, la simplicité de mise en oeuvre des web services en .net comparée a celle de Java. Ce n'est pas moi qui le dit, mais mon collègue
. Il semble que le manque d'intégration entre les stack WS et de sérialisation xml y soit pour beaucoup.. si vous avez un avis contraire sur la question, je suis preneur :-)
Coté SOA, la preuve fut faite qu'on peut tout a fait raisonner en services autonomes sans pour autant mettre le préfixe web- devant. Résultat, une souplesse d'intégration plus qu'agréable sans les complications inutiles habituellement rencontrées.
Un des morceaux croustillants fut l'intégration de l'api de paiement sips-atos sous .NET, qui bien que très bien faite et documentée souffre d'un manque de packaging évident sous Windows (il faut appeler des exe natifs, alors qu'en java tout est managé)...Mais avec un peu de travail, ça marche très bien.
Sur ce l'automne fût venu, et bien qu'ayant travaillé tout l'été la fourmi dût s'activer, afin que pour le symposium dotnetguru elle ne fût point dépourvue !! (puisse La Fontaine me pardonner...)