Revue du Web du 3 mai
Les tweets de la semaine
http://twitter.com/ganshani/status/12951748647 une application ebay silverlight 4
http://twitter.com/gridshore/status/12810788065 un framework CQRS, java mais avec une documentation intéressante
http://twitter.com/escobar5/status/13131896774 les spécifications de C# 4.0
La question Stackoverflow
http://stackoverflow.com/questions/2745076/what-is-the-difference-between-git-commit-and-git-push Git a attiré beaucoup l’attention de la communauté. La question de la semaine nous permet d’explorer la différence entre Commit (action locale) et Push (action remote). On trouve aussi un diagramme expliquant les différentes commandes. Ces deux questions peuvent vous aider à mettre un pied dans le monde merveilleux de la gestion de configuration distribuée : http://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide et http://stackoverflow.com/questions/507343/using-git-with-visual-studio
Actualités Microsoft
Steve Ballmer a présenté la nouvelle version de MSN Messenger qui va comporter les conversations en onglet, l’intégration avec Facebook (status et chat), la vidéo HD et une version iPhone. En plus de MSN Messenger, ce sont les services en ligne Live qui vont connaître aussi leur vague numéro 4, Liveside.net revient dessus et on apprend par exemple qu’Hotmail va supporter Exchange ActiveSync (c’est-à-dire qu’on pourra enfin utiliser un compte Hotmail sur iPhone pour avoir ses emails, contacts et calendriers), la vue conversation, l’édition en ligne de document et une version mobile beaucoup plus évoluée. Cette vidéo permet de voir les fonctionnalités de Windows Live pour l’íPhone.
Côté développement le nouveau blog IronRuby-Rocks.com permet d’explorer le langage et l’intégration avec .NET ou Windows (utilisation des génériques, intégration avec Office).
Actualités “Alt.NET”
On a parlé au début de l’existence de cette revue de PSake, un outil simple mais très efficace pour construire ses logiciels à partir d’un script PowerShell. Il a lui aussi passé à la version 4.0 : support de .NET 4.0, x64, . Il s’agrémente aussi d’un wiki pour aider les développeurs à commencer avec cet outil.
Dans un autre registre on peut visionner sur le site de Skill Matters l’intervention de Greg Young à Londres sur CQRS – Event Sourcing du point de vue métier.
De l’autre côté
Cet article nous introduit à une librairie Python (neo4j) utilisée en Java pour manipuler des données en graphe (modélisation de catégories, de réseau) plus facilement qu’avec un modèle relationnel. L’exemple abordé est celui d’un catalogue de produits classifiés en catégories et chaque catégorie a un ensemble d’attributs. Le concept de noeuds corresponds aux entités (ici Catégories, Produits et Attributs), tandis que les relations permet de typer un lien (catégorie – produit, catégorie – attributs). L ‘intérêt de ce type d’API réside dans la capacité à traverses le graphe pour avoir les attributs par exemple d’une catégorie et de toutes ses catégories facilement. Le site fait état d’une API REST associée au framework et de modèles exemples.
Un projet
JSON (JavaScript Object Notation) est bien connu des développeurs Ajax. Ce format d’échange tiré du monde JavaScript a su se positionner comme le standard de facto pour les API Ajax ou REST étant aussi lisible que XML tout en étant plus simple. Dans le monde .NET il existe quelques librairies pour parser ou générer du JSON, comme par exemple celle intégrée à WCF via un binding spécifique (webHttpBinding)
et/ou en accédant directement au sérialiseur dédié : DataContractJsonSerializer.
Mais pour des scénarios plus avancés on peut se tourner vers d’autres implémentations comme Json.NET qui en est à sa version 3.5 qui offre une liste de fonctionnalités intéressante :
- Linq to Json
- Conversion vers/de XML
- Support de Silvelight
Voici un exemple trivial de sérialization/désérilization (Contact a une collection d’Emails qui référence aussi le Contact, cet référence bidirectionnelle est gérée via une des nombreuses options)
1: var contact = new Individual()
2: {
3: FirstName = “Matthieu”,
4: LastName = “Duluc”,
5: Birthday = DateTime.Now
6: };
7: contact.Emails.Add(new Email{ Address = “info@nventive.net”});
8:
9: var jsSettings = new JsonSerializerSettings
10: {
11: ReferenceLoopHandling = ReferenceLoopHandling.Ignore
12: };
13:
14: string json = JsonConvert.SerializeObject(contact, Formatting.Indented, jsSettings);
15:
16: var deserializedContact = JsonConvert.DeserializeObject(json, jsSettings);
et le json généré avec l’option pour indenter les chaînes de caractères :
Elle est assez flexible pour s’adapter avec du code personnalisé par exemple avec NHibernate et ses fameuses collections lazy-loadées.
Le fournisseur Linq peut être utilisé pour transformer du Json vers un type personnalisé autre que celui d’origine :
1: //json est une chaîne de caractères
2: JObject individuJson = JObject.Parse(json);
3:
4: var listEmails = from email in individuJson[“Emails”].Children()
5: select email[“Address”];
Billet publié dans les rubriques Programmation le