Posts Tagged ‘DotNet’

L’actualité .NET de la semaine

Thursday, April 29th, 2010

Voici quelques liens pour suivre l’actualité de la plateforme .NET et des outils qui gravitent autour :

  • Voici le post du blog “The Morning Brew” sur la sortie du framework 4 et de Visual Studio 2010. Vous y trouverez tout ce qu’il y a à savoir sur les nouveautés de ces nouvelles moutures. Par ailleurs, le Morning Brew est une excellente source d’information sur le monde .NET, et je vous recommande son flux RSS
  • .NET

  • Axum passe en RTM. Axum est un langage pour la plateforme .NET qui utilise le principe d’agent pour faciliter la programmation parallèle et asynchrone
  • Les TFS Powertools 2010 sont sortis. Ces outils viennent compléter Team System, l’usine logicielle de Microsoft, avec des fonctionnalités avancées
  • D’ailleurs, des tutoriaux et une machine virtuelle pour TFS 2010 sont disponibles : c’est par ici !
  • Une nouvelle version de Pex est sortie. Pex est un outil qui permet de générer des tests unitaires et faire du mocking à base de delegates.
  • Une nouvelle version de Fiddler est sortie, c’est l’occasion de rappeler l’existence de ce proxy qui permet de voir circuler les requêtes http.
  • Le blog de NHibernate propose trois tutoriaux basiques… une introduction intéressante.
  • Et enfin introduction à MEF, le framework d’extensibilité made in Microsoft sur lequel se base entre autres le système de plugins de VS2010

A bientôt pour plus d’actu !


WPF et Silverlight : De nouvelles perspectives pour vos applications industrielles

Thursday, February 25th, 2010

Windows logoAujourd’hui, de nombreux produits, disponibles pour le grand public, doivent leur succès à une ergonomie adaptée aux attentes des utilisateurs. Cette tendance, initiée par l’iPhone, tend désormais à se généraliser à l’ensemble des biens de consommation courants.

Cependant, la plupart des applications d’entreprises ignorent encore ces problématiques, et les utilisateurs se retrouvent devant des systèmes souvent inutilement complexes, peu attractifs, et élaborés sans réellement cerner les usages des utilisateurs.

Cet état de fait, qui a vu son origine dans les limitations inhérentes aux technologies industrielles historiques, est aujourd’hui injustifié : des technologies, comme Windows Presentation Foundation ou Silverlight existent, et permettent de réaliser simplement des applications industrielles riches, visuellement attractives, et parfaitement adaptées aux besoins des utilisateurs.

Grace à WPF et Silverlight, vous pourrez réaliser des applications esthétiquement évoluées, intuitives, et naturelles. L’outillage dédié, la suite Microsoft Expression, permettra à vos designers de laisser libre court à leur imagination, et à vos ergonomes de concevoir rapidement les interfaces de vos systèmes en collaboration directe avec vos clients et les utilisateurs finaux du produit.

Vos logiciels seront plus intuitifs, plus réactifs, et la productivité générale de vos utilisateurs en sera améliorée.

Les technologies WPF et Silverlight, cela vous intéresse ?

Valtech Technology organise prochainement un séminaire gratuit dédié à WPF-Silverlight le 2 Mars 2010, de 9h00 à 12h00 dans les locaux toulousains de Valtech.

Des places sont encore disponibles, n’hésitez pas à réserver !

Rencontre Alt.NET sur l’AOP

Tuesday, June 16th, 2009

Logo ALT.NetLa prochaine rencontre ALT.Net aura lieu demain soir, le 17 juin à partir de 19h15. Elle portera sur la programmation orientée aspect.

Plus d’informations par ici.

Et pour s’inscrire, c’est par là.

ALT.Net est un groupe de développeurs .NET passionnés, cherchant à améliorer la façon dont les logiciels sont développés et reconnaissant qu’il n’y a pas de solution unique à un problème mais qu’il y a une multitude d’alternatives pouvant être appliquées dans différentes situations.

Les rencontres s’articulent autour d’une présentation principale et se terminent généralement en discussions autour d’un verre.

Programmation par contrat avec .Net

Monday, May 4th, 2009

Ce billet souhaite inaugurer le début d’une série de billets pour mettre en lumière l’ensemble des technologies gravitant autour de la plateforme .Net de Microsoft, l’intérêt que porte Valtech à cette plateforme ainsi que le savoir faire de la communauté .Net au sein de Valtech.

Pour ce premier billet, nous allons nous attarder sur un projet lancé par Microsoft et voué à rejoindre la version 4 du Framework .Net. Cet outil est actuellement déjà disponible, téléchargeable et utilisable pour peu que l’on dispose de la version 2008 de Visual Studio. Ce projet nommé « Code Contracts » consiste, comme son nom l’indique plutôt bien, à la mise en œuvre pour la plateforme .net (et donc pour l’ensemble des langages de la plateforme) du concept de programmation par contrat.

Le concept est relativement simple et « Code Contract » permet de définir au niveau d’une méthode des pré-conditions (instruction Contract.Requires), des post-conditions (instruction Contract.Ensures) et des objets invariants (instruction Contract.Invariant) c’est-à-dire qu’un objet doit remplir une condition pendant tout le temps d’un traitement (de façon à ce que des variables ne prennent pas des valeurs inattendues). Lorsqu’un des contrats n’est pas respecté, une exception est levée du type ContractException indiquant la condition non respectée.

Une telle approche doit permettre d’établir un contrat fort avec une méthode. Il n’est alors possible de l’appeler qu’avec des données valides c’est-à-dire vérifiant les pré-conditions sous peine de lever une exception. Les erreurs de traitements ou les bugs sont plus rapidement détectés grâce aux différents types de contrat disponibles.

Un autre avantage de ce framework est de pouvoir vérifier certains contrats de façon statique à la compilation et de pouvoir ainsi signaler très tôt des conditions non vérifiées au développeur et ceci à travers des warnings.

Parmi les autres objectifs fixés du projet, on notera également la possibilité d’utiliser ces contrats pour générer automatiquement des tests unitaires plus pertinents en évitant les valeurs ne vérifiant pas les pré-conditions ou en utilisant les pré-conditions pour générer des tests avec des valeurs limites.

On peut noter également que cette démarche simplifie l’écriture de tests unitaires car certains contrôles sont maintenant faits par contrat à l’intérieur de la méthode. Les tests unitaires se bornant alors à appeler la méthode avec plusieurs jeux de données et à vérifier que la méthode ne lève pas d’exception de type ContractException. La programmation par contrat n’ôte pas l’absolue nécessité d’écrire des tests unitaires mais permet d’exprimer dans le code des conditions qui auparavant ne pouvaient être que « vérifiées » par l’utilisation de tests unitaires.

« Code Contracts » devrait également pouvoir à terme servir à générer de la documentation plus pertinente en affichant les pré-conditions et les post-conditions dans la documentation des méthodes.

Quelques informations sur l’installation et la configuration.

L’installation du package téléchargé (cf en bas de cet article) intègre directement les fonctionnalités dans Visual Studio.

L’activation des fonctionnalités se fait dans les propriétés du projet, où un onglet a été ajouté (cf image ci-dessous). On peut alors activer les contrôles à la compilation et/ou ceux à l’exécution.

Pour pouvoir utiliser l’API fournie, il convient d’ajouter une référence dans le projet à l’assembly « Microsoft.Contract ».

Voici donc des exemples concrets de code source.

Toutes les méthodes pour définir des contrats sont des méthodes statiques définies dans la classe Contract présente dans le namespace System.Diagnostics .Contracts.

  • Définition de pré-conditions :
Contract.Requires( x ! = null );
 
Contract.Requires( x > y );
  • Définition de post-conditions :

normale :

Contract.Ensures( this .F > 0 );

sur une levée d’exception (avec T le type de l’exception) :

Contract.EnsuresOnThrow<T>( this.F > 0 );

sur la valeur de retour (avec T qui est le type de retour de la fonction) :

Contract.Ensures(0 < Contract.Result<T>());
  • Définition d’un objet invariant (contrat vérifié tout au long du traitement) :
Contract. Invariant ( this .y >= 0 );
Contract. Invariant ( this .x > this.y );
  • Définition d’une assertion (le contrat doit être vérifié à un endroit précis du traitement) :
Contract.Assert( this .x == 3, "la valeur devrait être 3" );

Voici donc un exemple un peu plus complet :

public class CodeContract
{
  public static void Main(string[] arg)
  {
    CodeContract cc = new CodeContract();
    cc.Test1();
    cc.Test2();
  }
  public void Test1()
  {
    DivideUnderZero(5, 3);
  }
  public void Test2()
  {
    DivideUnderZero(5, 0);
    //Warning à la compilation (problème détecté de façon statique)
    //contracts: requires is false: denominateur doit être different de 0
  }
  public float DivideUnderZero(int num, int den)
  {
    Contract.Requires(den != 0, "denominateur doit être different de 0");
    Contract.Requires(num > den);
    Contract.Ensures(0 < Contract.Result<System.Single>());
 
    //Warning à la compilation (problème potentiel détecté mais résolu lors de l'execution)
    //contracts: ensures unproven
    return num / den;
  }
}

Pour conclure, je pense que l’introduction de la programmation par contrat introduit dans le framework .Net par une approche très facile à mettre en œuvre aide le développeur à détecter rapidement ces erreurs lors de l’écriture du « bon code ». Ceci convient tout à fait à l’écriture de code métier dans lequel les erreurs peuvent coûter cher et être difficilement détectables. La programmation par contrat est donc un nouvel outil dans l’escarcelle du développeur.

D’aucun pourrait reprocher à cette approche le fait d’avoir un code moins ouvert à l’évolution. Auquel cas je répondrais que toute évolution du code nécessite de toute façon la modification des tests unitaires et donc que la modification des contrats fait aussi dans cette logique d’évolution de façon à écrire et garantir le bon fonctionnement du code écrit.

Sources :
Manuel Utilisateur
Site Web
Téléchargement de Code Contract:

Soirée ALT.NET à Valtech mardi 04/11

Thursday, October 30th, 2008

Mardi prochain (le 4/11), Valtech ouvre ses portes à la communauté ALT.NET parisienne.

ALT.NET est une communauté de passionnés de la plate-forme .NET dont le but est d’améliorer la production de logiciels à travers le partage de bonnes pratiques et l’utilisation d’un maximum de ressources notamment tirées du monde open source (comme des frameworks : NHibernate, Castle, etc.) et de l’agilité.

Ce mois-ci, la communauté reçoit un membre de l’équipe de Mono, une implémentation Open Source de la plateforme .NET : les discussions tourneront donc principalement sur ce sujet.

Inscrivez-vous sur la page wiki de l’événement et rendez-vous mardi soir à Valtech!

Sadek discute avec Simon Peyton Jones

Friday, September 19th, 2008

Sadek Drobi, un de nos experts .NET (mais il s’intéresse à de nombreux autres sujets!), est depuis longtemps un des responsables de la section Architecture du site InfoQ. Dans ce cadre, il a interviewé à QCon London 2008, Simon Peyton Jones, un expert des langages fonctionnels.

Si vous voulez en apprendre plus, venez à Valtech Days 2008 en octobre. Sadek sera présent; il présente deux sujets: Linq et l’utilisabilité des interfaces graphiques.

Atelier clients riches Web : GWT, Silverlight et Flex, le 19 juin

Wednesday, May 21st, 2008

Le 19 juin, Valtech Training organise un atelier clients riches Web : GWT, Silverlight et Flex.

A l’heure où Web 2 devient l’expression la plus utilisée de la presse informatique et où les éditeurs se livrent à une escalade d’annonces, nous vous proposons de vous forger votre opinion sur les technologies les plus en vue du monde Rich Internet Application : Flex, GWT et Silverlight.

Après une introduction rapide aux problématiques et solutions du client riche, vous pratiquerez lors de trois ateliers techniques successifs de 2 heures. Vous écrirez donc votre première application dans chacune de ces technologies et serez ainsi amené à juger de leur facilité de mise en œuvre : essayez-les, choisissez !

Je veux m’inscrire !

Linq in Action – Fabrice Marguerie Steve Eichert Jim Wooley

Saturday, May 10th, 2008

lin in actionCe livre est un hit chez l’éditeur Mannings et la seconde édition est déjà impression. Linq fait partie des nouveautés du framework 3.5 et étant donné le rythme qu’a connu la plateforme depuis 2 ans, c’est le genre de framework qui vous fait dire : je dois me mettre à jour. J’avais déjà entrevu Linq dans un projet ASP.NET, principalement pour la facilité d’utilisation qu’il apporte à la manipulation de sources de données
XML. Mais pour avoir suivi le blog d’un des auteurs, je savais que Linq était plus que ça.

Linq in Action n’est pas qu’un catalogue des 3 principales "versions" (Objects, XML et Sql) du framework. La première partie explique les origines et les nouveautés du langage C#/VB.NET qui ont permis et qui constitue les dessous :

  • l’inférence des variables locales : var toto = "Moi";
  • les constructeurs implicites Personne p = new Personne { Nom="Guyonnet-Duluc",
    Prenom="Matthieu", Age = 30 }
  • les expressions lambdas : personne => personne.Age>20;
  • les méthodes étendues : maCollectionPersonne.Where(personne => personne.Age >20) Where est une méthode statique qui prend la collection en premier paramétre et une expression lambda.

Ce qui donne par exemple pour Linq to Objects issu du livre :

dgBooks.DataSource = (from book in SampleData.Books where book.Title.Length
> 5 orderby book.Title select new { Book=book.Title.ToUpper()
}).ToList();

Toutes ces possibilités sont très bien expliquées dans le livre, et ce n’est pas innocent car c’est ce qui forme la base de Linq comme un moyen d’utiliser une programmation plus orientée fonctionnelle avec des langages objets. Remarque importante, un programme utilisant Linq peut s’éxécuter avec la CLR 2.0 (.NET framework 2.0 SP1) car le compilateur n’a pas changé dans les version 3.0 et 3.5.

L’ouvrage aborde ensuite les différentes déclinaisons de Linq : Object, XML et SQL. A chaque fois on compare l’avant et l’après Linq : les améliorations par rapport au modèle de programmation existant (par exemple les API XML souvent très rébarbatives à aborder). Bien sûr les opérateurs (Where, OrderBy, Group , let ) sont analaysés mais les auteurs n’oublient pas les limites, notamment en terme de performances. Enfin l’exemple de Linq to Amazon permet d’entrevoir le développement d’un "provider" personnalisé.

Bien sûr après avoir ingurgité les 500 pages on en arrive à se demander : Quelle est la place de Linq dans une architecture ? Autant les versions Objets et XMl peuvent être "innocentes" car utilisées pour simplifier, rendre plus lisible un accès ou un algorithme, la version "SQL" est plus problématique. Cette dernière arrive tout juste avant Linq to Entities, sous-partie du framework ORM ADO.NET Entity framework. On peut résumer en disant que Linq to Sql est un ORM "léger" qui convient bien pour les schémas de sgbd qui se mappent facilement aux objets (1 table – 1 objet) et utilisant SQL Server. Linq to Sql pour le RAD, Linq to Entities pour le monde des applications d’entreprise semble être le mot d’ordre de Microsoft.

Linq in Action est un très bon livre pour apprendre et surtout apprécier les subtilités de Linq.

Environnements Multi-Paradigmes

Monday, February 4th, 2008

Chers collègues Valtechiens, je vous rappelle que demain mardi 4 février 2008 aura lieu un cours du soir, dont l’intitulé exact est Linq & C# 3.0: Benefits of a mixed paradigm environment (OOP/Functional). Il sera animé par Sadek et Julien.

(more…)

Un autre Coding Dojo à Valtech

Thursday, January 17th, 2008

Julien donne ses impressions sur un Coding Dojo organisé la semaine dernière à Valtech et animé par Yannick. A la différence du précédent, celui-ci a utilisé le langage C# plutôt que Java.

Les slides de la soirée, mis à jour depuis la soirée précédente, sont disponibles sur Google Docs.