Récemment j’ai eu le besoin de partager des informations entre différentes applications Silverlight qui étaient hébergées sur le même site. Par même site il faut comprendre accessibles depuis le même sous domaine.
Prenons un exemple.
Deux applications disponibles de la manière suivante:
Chacune des applications se trouvant aux Urls ci-dessus ont un espace de stockage dédié à l’application. Il est possible d’y ajouter ou modifier des éléments à partir d’ApplicationSettings.
IsolatedStorageSettings.ApplicationSettings.Add("key", "value");
Maintenant pour avoir un espace partagé entre les applications xap des sites App1 et App2, il vous suffit simplement d’accéder à l’IsolatedStorage via SiteSettings se trouvant également dans IsolatedStorageSettings.
IsolatedStorageSettings.SiteSettings.Add("key", "value");
Rien de bien compliqué, mais plutôt pratique !!
La méthode que nous venons de voir correspond à un raccourci pour obtenir le contenu des différents stores. Pour une plus grande souplesse vous pouvez accéder à ces stores via les méthodes
IsolatedStorageFile.GetUserStoreForApplication();
IsolatedStorageFile.GetUserStoreForSite();
A partir de là, vous pourrez par exemple créer une arborescence, connaitre l’espace utilisé et restant, agrandir l’espace courant pour stoker un nombre de données plus important…
Si vous avez lu les précédents billets, vous aurez remarqué que ces derniers parlent de situations rencontrées lors de ma mission actuelle. Ce sera encore le cas pour ce billet, où nous allons voir comment créer un catalogue basé sur les AppSettings du fichier de configuration.
Besoin:
Dans cette application, nous avons un service d’authentification qui selon certains critères peut choisir tel ou tel module pour authentifier l’utilisateur. La résolution du module en question est faite via MEF. Ce module peut avoir besoin de paramètres comme par exemple l’url d’un Web Service et l’environnement sur lequel on souhaite réaliser cette opération.
Plutôt que de toujours faire appel à ConfigurationManager.AppSettings[key] dans le module lui-même je souhaitais trouver un moyen d’injecter ces valeurs. Ceci est notamment possible avec MEF, c’est ce que nous allons voir tout de suite.
Dans le cadre de ma mission, je développe en ce moment une application utilisant Silverlight. Nous avons décidé d’appliquer le pattern MVVM. Pour chaque page, nous avons donc un ViewModel assigné au DataContext, dans lequel sont injectés différents services nécessaires à nos besoins.
Pré-requis de l’application:
-
Utilisation de MEF, pour faire la résolution des ViewModels et de leurs services.
-
Lorsque l’on navigue sur une nouvelle page, celle-ci doit être dans le même état que lors du premier accès.
More...
Dans un projet récent, j'avais besoin de masquer certaines parties de la page. Je sais qu'il existe dans des librairies tierces des contrôles permettant de déjà réaliser cette opération. Cependant, il y a certains projets, où il est impossible d'utiliser ces librairies.
Ce que je vous propose dans ce billet c'est donc d'en développer un simple.
A quoi doit-il ressembler ?
Graphiquement, il sera composé de quatre parties:
-
une partie header pour afficher une description de la partie en question.
-
un bouton au niveau du header pour activer l'animation permettant de masquer ou afficher le contenu.
-
une partie dans laquelle se trouvera le contenu à masquer ou à afficher.
-
Et un séparateur entre le header et le contenu à afficher.
Allez démarrons...
More...
Dans le développement d'une application Silverlight ou WPF, on a l'habitude d'utiliser les ICommand pour communiquer de manière découplée entre une View (V) et un ViewModel (VM).
Regardons d'un peu plus près de quelles propriétés / méthodes est constituée cette interface.
More...
Lors d'une mission récente, un des pré-requis graphique était d'avoir des couleurs différentes au niveau de la MainPage et des pages de la NavigationFrame en fonction du menu sélectionné.
Au travers de ce billet, nous verrons une solution qu'il est possible d'implémenter pour modifier les styles des différents contrôles au Runtime.
More...
Lors du développement d'une application, le développeur doit s'assurer que l'utilisateur ne pourra pas entrer de données non valides.
Avec Silverlight 4, il existe plusieurs méthodes pour procéder à la validation des données.
-
Via des attributs que l'on peut trouver dans System.ComponentModel.DataAnnotations
-
L'interface IDataErrorInfo
-
L'interface INotifyDataErrorInfo
Dans ce billet je vous propose de voir plus en détail comment utiliser INotifyDataErrorInfo.
More...
Par défaut, lorsqu'une exception est levée dans une méthode d'un service, le contenu de l'exception n'est pas envoyé au client qui consomme le service.
Lors de la phase de développement, une pratique commune est de modifier la behavior associée au service en ajoutant l'élément serviceDebugincludeExceptionDetailInFaults à true pour que les erreurs puissent remonter jusqu'au client. Bien entendu, n'oubliez pas de désactiver cette option lors de la livraison de votre service en production.
More...
Depuis peu de temps je suis passé sur le développement d'une application Silverlight 3 pour le client où je suis actuellement.
Nous avons réalisé les premiers développements sans encombre et ces derniers jours nous avons décidé de déployer l'application sur un serveur, afin que le client puisse tester et prendre en main l'application tout au long de son développement.
More...
Lorsque Microsoft a mis à disposition la première version des RIA Services, l'installation des binaires se faisait via un fichier MSI. Avant de procéder à l'installation des binaires dans le GAC, le MSI vérifiait certains pré requis comme l'installation de Visual Studio 2008 et les Silverlight tools
Pendant la phase de développement d'un projet cela ne pose aucun problème, puisque ces outils sont nécessaires pour le développement, mais comment procéder pour le déploiement sur un serveur.
Deux possibilités existent:
-
La première consiste simplement à passer la propriété Copy Local des références RIA Services à true. Ainsi au moment de la compilation les binaires seront copiés dans le dossier bin. Il ne sera donc pas nécessaire d'utiliser un setup quelconque pour les installer dans le GAC.
-
La deuxième solution est d'utiliser le même MSI que pour l'installation sur la machine de développement mais en ligne de commande avec les paramètres suivants:
En procédant ainsi, les binaires sont déployés dans le GAC et le MSI ne fait plus attention aux pré requis.