Archive

Archive for août 2011

WP7 – Faîtes attention à la méthode utilisée pour formater votre DataBinding !

Je me suis mis au développement sous la plateforme Windows Phone 7 en codant une petite application que je mettrai bientôt sur le Marketplace donc comme on dit en anglais « stay tuned! ».

Au cours du développement, j’ai énormément utilisé le Databinding (normal vu que j’utilise aussi le pattern MVVM) et si vous ne l’avez pas remarquée, le DataBinding propose une propriété StringFormat qui permet de formater le résultat issu du binding. Je peux citer comme exemple le fait de formater une date. C’est au sujet du formatage du binding que j’ai fait ce billet parce qu’à ma grande surprise une méthode que j’utilisais pour spécifier le format d’une date et qui marchait sous WPF et Silverlight (Application Web RIA) ne marche pas sous Windows Phone alors qu’on utilise Silverlight pour développer sous cette plateforme.
En WPF et Silverlight pour formater une date pour avoir seuls le jour, le mois et l’année sans l’heure dans l’affichage on a les trois méthodes suivantes :

1ère méthode :

<!-- Les deux premiers accolades {} avant le format sont là pour spécifier au moteur XAML 
de ne pas prendre en compte les accolades qui suivront juste après. --> 
<TextBlock Foreground="Red"
   FontSize="50"
   Text="{Binding Path=Date, StringFormat={}{0:dd/MM/yyyy}}" />

2ème méthode :

<!-- On utilise le '\' pour échapper les accolades qui sont dans le format --> 
<TextBlock Foreground="Red"
   FontSize="50"
   Text="{Binding Path=Date, StringFormat=\{0:dd/MM/yyyy\}}" />

3ème méthode :

<!-- On met juste le format pour en prenant soin de l'entourer avec des quotes simples --> 
<TextBlock Foreground="Red"
   FontSize="50"
   Text="{Binding Path=Date, StringFormat='dd/MM/yyyy'}" />

Cool ! Nous avons 3 méthodes qui nous permettent de faire ce qu’on veut. La méthode que je préfère c’est la première (les goûts ne se discutent pas !). Donc c’est normal que je l’ai utilisée dans mon application Windows Phone 7. En design mode tout est correct, la date s’affiche dans le format voulu mais lorsqu’on compile l’application le compilateur nous renvoie l’erreur suivante :

Erreur binding lors de la compilation

Pensant avoir affaire à un format mal effectué mais il se trouve que non. La première méthode, qui elle marche avec WPF et Sivleright RIA, ne marche pas sous Windows Phone 7 ou ne marche qu’en Design Mode. Pour corriger cela il faudra passer par l’une des deux dernières méthodes citées précédemment.

j’espère que ce billet vous a appris quelque chose et vous fera gagner du temps vu que moi j’en ai perdu pas moins de 30mn avant de le savoir parce que j’étais sûr à 100% que mon format était correct SOUS WINDOWS PHONE 7 et surtout qu’en design mode l’affichage correspondait à ce que j’attendais 🙂 .

Nota Béné : Mon application a été codée avec la version RC du SDK Windows Phone 7 – Mango donc il se peut ce petit bug soit corrigé dans les versions futures.

Publicités
Catégories :Windows Phone 7 Étiquettes : , ,

Les raccourcis utiles à connaître lorsqu’on développe sous .Net

Voici un document à imprimer et à afficher devant soi dans son bureau 😉 Ce document est écrit par le blogueur Mahdi Taghizadeh et regroupe la plupart des raccourcis qui vous feront gagner pas mal de secondes comme par exemple utiliser Shift+Alt-C pour ajouter une classe dans votre projet.

Catégories :.Net Étiquettes :

Services web et services WCF : Quelle est la différence ?

27 août 2011 1 commentaire

Avant de répondre à la question, il faut savoir qu’est-ce qu’est un service web. D’après la définition de Wikipedia :

Un service web est un programme informatique permettant la communication et l’échange de données entre applications et systèmes hétérogènes dans des environnements distribués. Il s’agit donc d’un ensemble de fonctionnalités exposées sur internet ou sur un intranet, par et pour des applications ou machines, sans intervention humaine, et de manière synchrone.

En gros un service web est une application exposant ses services en se basant sur le protocole HTTP ou HTTPS. Comme exemple on peut citer les services utilisant l’architecture REST (REpresentational State Transfert), les services OData et les services web traditionnels déployés en utilisant les fichiers de type ASMX avec ASP.Net.

WCF va au delà du simple fait d’exposer des services à travers le protocole HTTP/HTTPS. Parce qu’avec cette technologie nous ne sommes pas limités à l’utilisation de HTTP/HTTPS comme protocole mais il nous est possible d’utiliser TCP, IPC ou MSMQ. Ce qu’il faut comprendre c’est qu’à partir du moment où on n’utilise plus le protocole HTTP/HTTPS alors on ne parle plus de service web mais de service WCF tout simplement.

En travaillant avec WCF, nous définissons un ou plusieurs endpoints. Chaque endpoint utilise un binding et le binding est étroitement lié au protocole que nous utilisons ainsi j’ai fourni une liste des bindings WCF les plus utilisés en les classant selon la dénomination qu’ils entraînent :

  • Service web : BasicHttpBinding, WSHttpBinding
  • Service WCF : NetTcpBinding, NetNamedPipeBinding et NetMsmqBinding

[WPF] Améliorer le chargement d’une collection d’images

Dans certaines applications où on est amené à afficher une collection d’images on peut avoir très vite des problèmes de performance dû au fait que les images ne sont pas dans un format compressé ou sont de grandes tailles et mettent du temps à se charger.

Comment améliorer cela ? La réponse est simple : créer des miniatures pour les images.

Mais il ne s’agit juste pas de redimensionner les contrôles Image autant que possible pour contenir les images voulues. En effet cela n’empêche en rien le chargement total de l’image en mémoire avant que le contrôle Image ne la redimensionne pour respecter la taille demandée.

La meilleure solution est d’utiliser les propriétés DecodePixelWidth et DecodePixelHeight de la classe BitmapImage comme suit :

<image width="100">
  <Image.Source>
    <!-- Utiliser DecodePixelWidth ou DecodePixelHeight. 
         N'utiliser les deux propriétés en même temps que 
         si vous ne voulez pas garder le ration de l'image  -->
    <BitmapImage DecodePixelWidth="100"  
                 UriSource="chemin vers le fichier image" />
  </Image.Source>
</Image>

Avec ces propriétés l’image est décodée en mémoire pour contenir exactement la taille demandée. Dans notre cas la largeur demandée est de 100 pixels et la hauteur est déduite en fonction de la ratio de la taille réelle de l’image. Cette méthode améliore la façon de charger une image et fournit une rapidité qui ne sera pas négligeable si nous avons affaire à une collection d’images 😉 .

Catégories :WPF Étiquettes : , ,

101 Exemples de requêtes LINQ

Le site MSDN fournit une ressource 101 exemples de requêtes LINQ. C’est une ressource rassemblant, comme son nom l’indique, 101 exemples de requêtes LINQ est à garder en bookmark dans votre navigateur et y jeter un coup d’œil pour voir la manière d’utiliser certaines clauses en cas d’oubli 😉

Catégories :Entity Framework, LINQ
%d blogueurs aiment cette page :