Mon monde en .NET

Aller au contenu | Aller au menu | Aller à la recherche

mars 2008

lundi, mars 24 2008

Introduction à ADO.NET Data Services (Astoria)

L'année 2008 s'annonce chargée quand il s'agit des framework qui sont en préparation dans l'univers "Microsoft". Ainsi, j'ai commencé une petite série de webcast expliquant la base de ADO.Net Data Services .... ou Astoria pour les intimes ;-). Il s'agit certainement d'une couche qui sera prochainement fortement utilisée dans les applications distribuées. Ce projet offre la possibilité de réaliser des applications avec des requêtes LINQ sans se soucier que l'on se trouve en mode distribué. Certes, dans la dernière bêta ... tout n'est pas encore au point ... on ne retrouve ainsi pas le "Include" disponible dans Entity Framework pour récupérer une ensemble d'objets mais ces petits problèmes auront certainement disparu lors de la release milieu 2008.

Lire la suite...

mercredi, mars 19 2008

LINQ to SQL (locking)

Il y a quelques jours, j'ai testé la gestion du "lock" sous Linq to SQL en cas de modification de tuple pendant la manipulation de l'objet chargé. J'avais rédigé un mini commentaire ici. Après avoir vu la remarque de Steve, j'ai décidé d'aller plus loin dans LINQ to SQL et sa gestion du lock. Après avoir réutilisé mon exemple, voici quelques remarques.

Par défaut, lors d'une mise à jour d'un tuple, Linq2SQL va utiliser tous les champs dans sa clause WHERE. Il est cependant possible de modifier ce comportement via un paramètre "UpdateCheck" nommé de l'attribut ColumnAttribute qui se place au dessus des propriétés ... Ce paramètre accepte un enum qui a trois valeurs.

  1. Never => La propriété n'entre jamais en ligne de compte.
  2. Allways => (valeur par défaut). La propriété entre toujours en ligne de compte dans un update.
  3. WhenChanged => La propriété n'est prise en compte que si elle est modifiée.
Cela offre une grande souplesse, il est donc possible de faire un lock sur un champ d'une table .. par exemple un timestamp ... et les autres champs prendront "never".


L'autre possibilité est le "pessimistic locking" (désolé ... je ne connais pas le terme en français ;-). Il est possible de bloquer un tuple le temps d'une modification. Ceci ne m'a jamais semblé une bonne idée ... Cela ajoute un lag voir des problèmes d'accès en cas de plantage etc. Mais il est intéressant d'avoir connaissance de l'existence de cette possibilité dans LINQ to SQL.

mardi, mars 18 2008

RSS/Atom sous .Net 3.5

En cette charmante petite soirée, j'ai pris la décision de terminer mon exemple expliquant une des nouveautés de .net 3.5 pour la partie WCF. Ainsi de nouvelles classes ont été ajoutées pour la gestion des flux RSS/Atom. De plus, avec le support RESTful sous WCF, il est maintenant possible de créer facilement le flux RSS. Ce post explique donc en quelques secondes comment créer un flux rss (sans création de pages ashx, etc) ou comment le lire.

Lire la suite...

lundi, mars 17 2008

L'attribut ServiceKnowType

En WCF, il arrive parfois que l'on publie un webservice avec une méthode utilisant une classe abstraite... Prenons par exemple une classe Animal abstraite et deux classes concrètes Chien et Chat ... Nous pouvons publier une méthode UpdateAnimal(Animal animal). Le problème est que lorsqu'on génère la classe proxy du côté client, on ne voit pas les classes Chien et Chat vu qu'elles ne sont pas directement utilisées dans les signatures ... Comment faire pour l'intégrer au WSDL et donc aux classes proxy ?

Avant:
La réponse se trouve dans le titre ... En effet cet attribut se place au dessus de la méthode ou de la classe .. et précise les classes qu'il faut également publier ... Il est possible d'ajouter un attribut par classe ou de regrouper ces types dans une méthode . A votre convenance ;-)

Après:

Plus d'informations ici.

Accès/modification de tuples en // sous Linq to SQL (lock ?)

Aujourd'hui, je me suis demandé comment fonctionnait le lock des entités sous LINQ to SQL. Sous NHibernate, il existe des mécanismes de lock via un champ timestamp/version dans la table ... Mais qu'en est-il sous LINQ to SQL ... Simple ... clair ... net ... Par défaut tout est géré nativement et une exception se lance en cas de modification d'un tuple qui a été modifié par un autre DataContext ou via la base de données ...

mercredi, mars 12 2008

Le telefone y braille

Rien de tel qu'un peu de détente entre deux démo ... Ainsi il y a quelques mois est apparu une vidéo sur youtube d'une version chti de Claude Francois ... C'est en plus très tendance le chti ;-))).... et Claude ... Je vous invite donc à passer quelques minutes de plaisir ... (et ... vive le doudoudou mamidou !!! ;-))

mardi, mars 11 2008

Silverlight 2 + Webservice Amazon

La première version de Silverlight 2 en bêta à peine sortie, il était temps de vérifier si l'implémentation de projets étaient plus simple que sur la version 1. Et que dire ... si ce n'est un grand OUI ;). On pourra note l'absence du support du PUT / DELETE pour REST ... (et oui ruby on rails va hurler si on ne lance pas une action "delete" en post ...) ou le support unique du BasicHttpBinding WCF. Mais tout cela est contournable rapidement via les sécurités ASP.NET. Ce nouveau cru s'annonce très bon. Voici dès lors un petit post expliquant l'abc du "comment créer une application utilisant WCF (webservice amazon) sous Silverlight 2"....

Lire la suite...

lundi, mars 10 2008

Création de custom activity avec modification du designer

La création d'activités dans une dll offre la possibilité de pouvoir la réutiliser dans différents workflows. On sépare proprement le code "business" exécuté avec le workflow. Ce post offre un mini exemple décrivant les différentes étapes pour réaliser une activité que l'on pourra intégrer à nos workflows et ensuite la méthode pour customiser le rendu de l'activité sur le designer de Visual studio (ou dans n'importe quel DSL rendant le workflow ... par exemple ... l'application WorkflowMonitor).

Lire la suite...

mercredi, mars 5 2008

Silverlight 2 bêta 1 & ASP.NET MVC Preview 2 dispo

Comme prévu, de nouvelles versions bêta ont été publiées lors du MIX 08. Ainsi, Silverlight passe en version 2.0 bêta 1 et ASP.NET MVC en preview 2. Voici les liens ...
  • ASP.NET MVC Preview 2 (download)
  • Silverlight 2 bêta 1
    1. Silverlight 2 Bêta 1 (download)
    2. Silverlight Tools for VS2008 (download)
    3. Microsoft Silverlight 2 SDK Beta 1 (download)
    4. Microsoft Silverlight 2 SDK Beta 1 Documentation (download)
    5. Source Code and Unit Tests for Silverlight 2 Beta 1 Controls (download)
    6. Microsoft Expression Blend 2.5 March 2008 Preview (download)

lundi, mars 3 2008

Diagramme d'état : Concepts fondamentaux

Workflow foundation est une technologie apparue sous .net 3.0. Il s'agit de nouvelles DLL etc permettant d'offrir des workflows dans une application .Net. On est loin et à la fois près de Biztalk ... La principale différence entre les deux est que Biztalk est utilisé pour des flux cross applications ... WF se limite à une application. Mais pourquoi en parler maintenant ? ... Simple. Cela faisait quelques mois que j'intégrais doucement ce mécanisme dans Lelibre.Fwk pour ce qui est action / validation lors d'action "OnSave" / "OnUpdate" dans la base de donnée. Et dernièrement, on m'a demandé de rechercher un peu plus en détail les possibilités qu'offre cette bibliothèque pour la possible intégration dans l'application à laquelle je vais participer ;-). Après avoir bien analysé les diagrammes séquentiels / persistence DB (pour lelibre.fwk) ... j'ai analysé ce qui est certainement souvent utilisé pour le changement d'états de nombreuses entités dans une application. Voici expliqué ci-dessous un petit exemple d'un diagramme d'état en WF.

Lire la suite...

samedi, mars 1 2008

RESTful en WCF (couplé avec du LINQ over SQL)

RESTful est une manière de construire une application pour les systèmes distribués. Le terme a été inventé par un des papa (Roy Fielding) de la RFC HTTP... REST n'est pas un protocole ou un format. Il s'agit d'une architecture original du web. Elle se repose sur quelques principes.
  • l'URI est important : connaître l'URI doit suffire pour accéder à la ressource
  • HTTP fournit toutes les opérations nécessaires (GET, POST, PUT et DELETE)
  • chaque opération est auto-suffisante : il n'y a pas d'état
  • Support de la sécurité ASP.NET
La thèse de Roy Fielding précise les avantages de ce style d'architecture // à SOAP etc.
  1. Maintenance plus simple.
  2. Absence d'état => consommation de mémoire inférieure.
  3. Simplicité dans un environnement Webfarm => meilleure tolérance aux pannes.
  4. Intéropérabilité
  5. ...

Lire la suite...