Archives mensuelles : mai 2010

News de la semaine #20

imageCommençons
comme chaque semaine l’actualité de Windows Azure. Cette
semaine Microsoft nous propose un document comparant les fonctionnalité de SQL Azure
et de SQL Server
.

L’équipe
d’ADO.net présente les améliorations apportées au moteur de génération de code SQL
avec la version 4 d’Entity Framework
.

Jennifer
Marsman publie un long post décrivant les nouveautés de Visual Studio 2010 en terme
de visualisation d’architecture et d’analyse des dépendances.

L’Identity
Developer Training kit pour Visual Studio 2010 est à présent disponible
.

Du côté de l’actualité française, Guillaume
Lacasa nous informe que jQuery prend définitivement le pas sur la librairie Microsoft
Ajax
.

Nicolas Esprit nous propose un article sur le
déploiement d’applications web avec Visual Studio 2010.

Et enfin, Benoit
Laut publie un article complet sur TechHeadBrothers sur l’implémentation d’instrumentation
à l’aide de dotfuscator 4.0
.

3 livres pour avoir les bases en .net

Quels
sont les livres que je peux lire pour avoir de bonnes bases en .net ?”

est en substance la question que se peuvent se poser ceux qui débutent en .net (et
que devraient se poser beaucoup de développeurs qui pensent avoir les bases :)). Il
se trouve qu’on vient de me la poser pour 686 ème fois, voici donc ma sélection de
3 ouvrages que je trouve important d’avoir lu pour être efficace.

Le
premier est la 3ème édition de CLR via C# écrit par Jeffrey Richter de Wintellect.
J’ai déjà lu les deux premières éditions et je suis en train de lire cette 3ème édition
(qui est sorti très récemment), et c’est de mon point de vue un des meilleurs ouvrages
sur les fondamentaux de la CLR et donc de la BCL.
Le
second ouvrage est orienté maitrise du langage C#. C# in depth de Jon Skeet est très
clairement l’ouvrage le plus pédagogique est le plus avancé que j’ai pu lire sur le
langage C#. Ce qui est plaisant avec cet ouvrage, c’est que l’ensemble des concepts
et notions sont abordés de manière intelligente sans passer sur les détails qui peuvent
paraitre compliqué au premier abord. Une vrai référence pour ceux qui s’intéresse
au langage C#.
Et
enfin, le petit dernier est le bien connu Framework Design Guidelines. Cet ouvrage
annoté par plusieurs acteurs importants dans le monde .net permet de comprendre comment
le framework .net a été conçu, et indique comment créer des frameworks qui respectent
les recommandations de Microsoft. Sa lecture peut très globalement être appliquée
à la création de tous type d’applications.

 

Et vous ? Quelles sont vos recommandations de lecture sur .net en général et sur
C# ?

<br />

image

Légers changements autour du 64 bits et de Visual Studio 2010

image C’est
en lisant le premier chapitre de
la 3ème édition de CLR via C#
de
Jeffrey Richter que m’est revenu cette information qui a son importance lorsque l’on
souhaite le pourquoi du comment à propos du support du 64 bits.

Jeffrey Richter indique à juste titre que le compilateur C# compile par défaut les
assemblies en AnyCPU afin que celles-ci soient portables et compilées en 32 ou 64
bits par le compilateur JIT en fonction de la plate-forme sur laquelle on souhaite
exécuter l’application. Ceci est vrai, mais on pourrait penser que donc Visual Studio
compile également par défaut vos assemblies en AnyCPU.

Et cela était effectivement le cas avec les précédentes versions de Visual Studio,
mais il y a eu un changement de politique avec Visual Studio 2010 qui a eu lieu assez
récemment il me semble (probablement à partir de la RC).

Avec la dernière version de l’ide, les projets qui sont généralement des points
d’entrées applicatifs (les types de projets relatifs au GUI clients) sont par défaut
compilés en x86.
Ainsi si vous créez un projet Windows Forms, un projet WPF
ou une application Console vous pouvez constater que l’AnyCPU qui faisait loi jusqu’
présent à laisser place à une configuration en x86. Les projets ASP.net et les bibliothèques
de classes ne sont pas concernés et restent par défaut en AnyCPU.

Pourquoi ce changement alors que l’AnyCPU permet d’avoir des assemblys
multi-plateforme et donc portables ?

Tout simplement, parce que les développeurs ne font pas assez souvent de tests de
leurs applicatifs sur des environnements 32 bits ET 64 bits.
Si vous développez dans un environnement 32 bits, et que vous ne testez pas votre
application 64 bits vous risquez
d’avoir des problèmes si vous référencez des composants 32 bits
. En effet, votre
point d’entrée étant en AnyCPU votre application sera compilée en 64 bits et sera
donc incapables de charger des composants 32 bits.

Modifier le paramétrage par défaut afin de compiler en x86 les projets de types GUI
clients permet d’avoir des applications qui fonctionneront dans tous les cas puisque
elles seront (par défaut) exécutées en 32 bits même sur un OS 64 bits. Vous êtes toujours
libre de changer cette configuration vers un compilation en AnyCPU mais prenez bien
garde à vos dépendances.

Quand aux projets ASP.net, ceux-ci concernent des applications serveurs qui ont potentiellement
bien moins de chance d’avoir des dépendances vers des composants 32 bits, et les bibliothèque
de classes restent en AnyCPU afin de garder leur portabilité, le point d’entrée de
votre application étant l’élément clé indiquant si le process doit être en 32 ou 64
bits.

News de la semaine #19

imageComme
chaque semaine, débutons avec l’actualité sur Windows Azure et plus particulièrement l’épisode
10 de Cloud Cover qui traite cette semaine des API permettant de manipuler les Tables
.

Le
SDK 4.0.12 de pour Dynamics CRM 4.0 est disponible.
Celui est orienté vers l’application
de type xRM puisque il propose propose un dossier Microsoft.xRM avec des extensions
avancées pour les développeurs. Toujours à propos de Dynamics CRM, Mary
Jo Foley nous informe que CRM 5.0 sera d’abord disponible en version Online puis plus
tard en version On Premise
.

Quant au développement web, Scott
Guthrie présente deux nouveautés soumises au framework jQuery. L’occasion de montrer
que Microsoft participe activement à ce projet Open Source.

L’équipe d’Internet Explorer nous informe qu’une
seconde preview d’IE 9 est à présent disponible.

A propos de la CLR, un
article sur MSDN Magazine présente les nouveautés apportées par la CLR4 en matière
de diagnostiques d’applications en production.

L’équipe
responsable de la génération de code propose une série de posts consacrés à l’utilisation
de ngen.exe
.

Du côté de l’actualité française, Benoit Laut nous informe d’une
nouvelle fonctionnalité proposée par DotFuscator 4.0 et disponible sur CodePlex, l’instrumentation
d’applications afin d’analyser leur utilisation (nombres d’utilisateurs, quel modules
sont utilisés ,etc.).
 

Jb Evain nous
propose une manière simple d’implémenter l’équivalent de mots-clés parameterof, propertyof,
methodof, et eventof en C#.

Quand la CLR V2, la CLR V4 et du code mixte se rencontrent

“Mixed mode assembly is built against version ‘v2.0.50727’ of the runtime and
cannot be loaded in the 4.0 runtime without additional configuration information”

Voici le petit message d’amour que peut vous renvoyez votre ami la CLR lorsque vous
essayez d’exécuter une application qui :

  • référence une assembly mixte (mêlant code natif et code managé) qui a été compilée
    pour être basée sur une version différente de la CLR utilisée par votre point d’entrée.

La solution à ce problème est assez simple, il suffit de rajouter une section dans
votre fichier de config :

<configuration>

<startup useLegacyV2RuntimeActivationPolicy="true">

<supportedRuntime version="v4.0"/>

</startup>

</configuration>

L’attribut useLegacyV2RuntimeActivationPolicy

La clé du problème se situe donc dans l’utilisation de l’attribut useLegacyV2RuntimeActivationPolicy
qui est à false par défaut. Cet attribut permet de changer la politique de chargement
de CLR au sein de votre application. Il y a eu en effet un gros changement à ce sujet
:

  • Dans l’ère pré-CLR V4, en V2 quoi, il n’était possible de charger
    qu’une seule version de CLR au sein d’un process. La politique par défaut était de
    charger toutes vos assemblies en utilisant la version la plus récente de la CLR que
    vous aviez à disposition. Cette stratégie a comme avantage que votre ancien code bénéficie
    automatiquement des améliorations apportées par des versions plus récentes de CLR.
    Mais cela pouvait posait des problèmes de compatibilité dans certains rares cas.
  • Avec la CLR V4, il est à présent de charger différentes versions
    de CLR au sein d’un même process et afin de ne plus être confronté aux problèmes de
    compatibilité la politique de chargement a changé. A présent les assemblies basées
    sur la CLR 4, utilisent la CLR 4, et les autres utilisent la version la plus récente
    inférieure à la V4.

Le problème avec les assemblies mixtes c’est que la CLR doit être capable de savoir
quelle est la CLR a utiliser lorsque un thread natif appel du code managé. Il faut
donc désactiver le side by side afin d’avoir une seule version identifiable.

Mais pourquoi ça marche très bien depuis mes tests unitaires ?

Confronté au problème une de mes premières questions a été de comprendre pourquoi
mon code fonctionne très bien depuis mes tests unitaires alors qu’il plante lorsque
je l’appelle depuis mon application. Le moteur d’exécution des tests unitaires MSTest
est QTAgent.exe (QTAgent32.exe en version 32 bits, et oui VS 2010 supporte enfin l’exécution
de tests unitaires en 32 et 64 bits). Si l’on va farfouiller
un petit peu dans le dossier C:Program Files (x86)Microsoft Visual Studio 10.0Common7IDE
à la recherche des fichiers de configs des tests runners on se rend compte que Microsoft
a configuré le chargement de runtime via le fameux attribut useLegacyV2RuntimeActivationPolicy.

Ce qui veut donc dire que par défaut tous vos tests unitaires utiliseront uniquement
la V4 de la CLR et que le hosting de CLR Side by Side est désactivé pour tous vos
tests unitaires.

 

The Information SuperHighway (cc) Vermin Inc.

Mettre en place une veille technologique via RSS

“Mais tu passes combien d’heures par jour sur le net pour connaitre autant de
sites/blogs ?”

Voilà une question que l’on me pose de temps en temps suite à une de mes réponses
du style : “Il  y a Eric Lippert qui a bloggué sur ce sujet il y a 1 mois et
demi, vas sur son blog sur msdn tu trouveras ton bonheur”. Malheureusement à chaque
fois que l’on m’interroge à ce sujet je me rends compte que la personne en face de
moi ne fait pas du tout de veille technologique et ne maitrise pas l’utilisation des
flux RSS. Car au lieu de passer plusieurs heures par jour à me balader sur Internet,
je passe maximum 1/2h par jour à consulter l’ensemble du contenu que je récupère via
mes 200 flux auxquels je suis abonné. Consulter 200 sites/blogs par jour ? oui c’est
possible via RSS. Et voici ma méthode pour réaliser ma veille technologique efficacement
sans y consacrer 307 ans.

1ère étape : Trouvez votre lecteur RSS

Première étape qui évoluera en fonction de vos habitudes de consommation,
il faut choisir votre client RSS. Deux principales options s’offrent à vous : un client
web ou un client riche. Pour savoir quels sont les points forts et points faibles
des principaux clients sur le marché, je vous recommande ce
post de l’excellent blog d’Olivier Ezratty
.

image Les
critères de choix qui me semble les plus importants en tant que gros consommateur
de flux sont : la performance (en terme de consommation CPU et de mémoire et d’affichage
des posts), et la possibilité de flagguer les posts les plus intéressants.
2ème étape : Créez votre catalogue de flux RSS

Il s’agit généralement de l’étape la plus simple. Vous avez très probablement en tête
certains blogs ou têtes pensantes qui publient régulièrement des informations dans
le domaine qui vous intéresse. Rendez-vous (pour la dernière fois) sur ces sites web
que vous connaissez déjà et abonnez vous aux flux RSS qu’ils exposent.

Classez correctement vos flux en différentes catégories/sous-catégories afin de pouvoir
retrouver facilement les informations lorsque vous en aurez besoin.

Je vous déconseille fortement de vous abonner aux flux qui ne proposent qu’un résumé
du contenu et non l’intégralité du contenu (le RSS sert à syndiquer du contenu et
non des résumés). Ces flux sont une perte de temps puisqu’ils vous obligent à consulter
le site pour avoir accès à l’information souhaitée. Sur mes 200 flux, je n’en possède
que deux qui proposent uniquement le résumé (celui de Mary
Jo Foley
, et celui d’une toulousaine
pleine d’humour
–rien à avoir avec la techno :p)

3ème étape : Maintenez régulièrement sa liste d’abonnements

Il est très important d’enrichir votre liste de flux, votre client RSS
n’est pas une boite qui s’alimente toute seule en effectuant sans cesse des requêtes
HTTP, il faut l’entretenir en lui donnant de quoi se mettre sous la dent. En plus
du simple ajout ponctuel effectué suite à des recherches précises, j’enrichis mon
catalogue de deux manières :

  • En suivant les blogrolls des blogs qui me plaisent le plus. Les personnes qui vous
    intéressent le plus ont une probabilité assez importante de recommander à leur tour
    des personnes intéressantes. Cette technique fonctionnait bien jusqu’à il y a quelques
    mois mais je l’utilise de moins en moins car : les bloggeurs utilisent de moins en
    moins les blogroll et quand ils le font c’est généralement pour des blogroll “corporate”
    destinés à promouvoir leurs collègues.
  • La deuxième technique, celle que je privilégie, est d’utiliser Twitter.

La maintenance passe également par la suppression des flux inactifs ou qui ne vous
intéressent plus. Cette étape est importante afin de ne pas pénaliser les performances
de votre client et surtout afin de toujours avoir des informations pertinentes et
non un simple tas d’informations accumulées avec le temps. La plupart des clients
RSS vous permettent d’avoir facilement accès à vos flux morts pour que vous puissiez
faire facilement le ménage.

4ème étape : Abonnez vous à des blogs/sites/rubriques de news

Vous n’êtes pas les seuls à faire de la veille technologique, n’hésitez
donc pas à profiter du travail des autres quand ceux-ci ont la gentillesse de le partager
via des blogs, des sites ou alors des rubriques dédiées.

En règle générale, vous ne trouverez pas de listes qui ciblent exactement vos centres
d’intérêts, c’est pour cette raison que ces sites doivent être des compléments à votre
propre veille, et non en être la base.

Dans le monde .net vous pouvez vous abonner aux sites suivants :

En anglais : The Morning Brew

En français : C2i.fr ou encore ma
propre rubrique de news
😉

Voilou ! vous êtes à présent parés pour affronter la masse d’informations disponibles
sur le net !

News de la semaine #18

imageComme
souvent débutons l’actualité de cette semaine par des nouvelles de Windows Azure. L’épisode
9 de Cloud Cover est à présent en ligne sur Channel 9
.

L’équipe de Patterns & Practices a mis en ligne des
Windows Azure Guidance sur CodePlex.

L’actualité de la semaine est également axée autour de la mise à disposition des
outils de développement pour Windows Phone 7 compatibles avec la RTM de Visual Studio
2010
.

Adam Kinney nous propose à cette occasion une
vidéo de 90 secondes montrant l’intégration de ces outils avec Expression Blend 4.

A peine sortie, le maitre Jedi de la 3D, David Catuhe, nous
présente une implémentation de son moteur Nova pour Windows Phone 7. Avec comme démonstration
la navigation en 3D dans le Windows Café
.

Tess Fernandez nous présente quelques
nouveautés proposées par Visual Studio 2010 en matière de débogage.

Microsoft Belgique lance
un appel à projet Multi Touch pour les sociétés belges et luxembourgeoise
.

Du côté de l’actualité française, Benoit Laut (qui
vient d’arriver sur Twitter
) propose une
version de Bowie (plugin TFS pour Outlook) compatible avec la RTM de Visual Studio
2010
.