vendredi 30 septembre 2011

Visual Studio LightSwitch 2011 : Simplicité et Productivité

Visual Studio LightSwitch 2011 est le dernier né en terme d'IDE proposé par Microsoft.
Ce module permet de créer des applications métiers orientées données à faible criticité en quelques clics de souris. LightSwitch permet de créer des applications Desktop, Web ou hébergées sur la plate forme Windows Azure simplement en spécifiant le type d'application dans les propriétés du projet.
LightSwitch propose de base la génération d'écrans automatique basé sur des sources de données de types table, vues ou procédures stockées ou encore tout flux de type RIA Services, mais aussi des fonctionnalités de base tel que l'export vers excel, l’implémentation de la logique CRUD qui sont réellement des points forts de l'IDE. Egalement, les écrans étant techniquement en Silverlight, il est plutôt simple d'étendre ces IHM en référençant des contrôles utilisateurs Silverlight.
Dans cet article, nous allons illustrer ci la création d'une application orientée données et voir comment il est simple d'utiliser des contrôles Silverlight en s'appuyant sur les extensions Silverlight.
Après avoir installé LightSwitch, on retrouve dans la liste des Templates projets de Visual Studio 2010, un modèle C# et un modèle VB.Net LightSwitch.
Ici, on crée un nouveau projet, on choisit le Template LightSwitch, on choisit le Template C# puis on valide
Le Template est généré et propose immédiatement via la page d'accueil de se connecter à une source de données, Cliquer sur le lien "Connect to External Data Source" dans le cadre de notre exemple :
Choisir l'option Database
dans les propriétés de connection, choisir l'instance SQL et la base de données cible, ici dans notre exemple, la base de données AdventureWorks.
Valider puis choisir les tables que l'on souhaite afficher et manipuler dans les écrans. Ici, on choisit des tables avec relation hiérarchique pour démontrer les possibilités de filtrage dynamique : Product, ProductSubCategory et ProductCategory

Puis à partir du dossier Screen, on ajoute un nouvel écran à l'aide de la commande contextuelle Add Screen , Choisir l'option List and Details Screen, puis ProductSubCategories dans la rubrique Screen Data et activer l'affichage des données de détail ainsi que les produits tel que montré ci dessous
Valider et Visual Studio LightSwitch génére automatiquement un écran adapté au template sur un layout hiérarchique modifiable. L'écran généré est un écran Silverlight avec affichage en mode OOB (Out of Browser) ou standard dans un navigateur Internet.
Le développement est terminé, il suffit simplement de presser la touche F5 pour lancer l'application et le résultat est réellement bluffant, l'écran proposé permet de filtre le catalogue produit en fonction des sous catégories et également d'ajouter, supprimer ou modifier des éléments du catalogue : la logique CRUD est complètement opérationnelle
Nous allons pouvoir multiplier facilement les écrans et constater que chaque écran ajouté est automatiquement pris en compte dans les menus graphiques, il est également possible de modifier simplement le Look & Feel via l'utilisation de Thèmes, Microsoft propose déjà le style Metro pour les Applications LightSwitch avec un look & feel Windows 8 avant l'heure.
Les écrans générés ci dessus sont entièrement généré par l'IDE, il peut en revanche être utile d'ajouter des controles graphiques ou autres aux écrans de l'application, ceci est tout à fait possible via les extensions Silverlight, permettant de créer des controles utilisateurs utilisables directement dans Visual Studio LightSwitch avec du DataBinding.
Dans notre exemple, nous allons rajouter une Zone de liste déroulante à notre écran. Pour cela, nous rajoutons un projet Silverlight Class Library à notre projet comme montré ci dessous :
Nous supprimons le fichier Class1.cs généré par le template et rajoutons un item Silverlight User Control
Cliquer le contrôle Combo Box sur la surface de Design XAML du contrôle utilisateur
Dans le panneau de code XAML, nous allons simplement rajouter les informations de Binding de ce controle. On notera le point spécifique de syntaxe Screen.QueryName permettant de se rattacher aux éléments de la Data Source configurée dans l'application LightSwitch.
Attention à la casse des queries, en cas d'erreur, la zone de liste ne sera pas peuplée.
Une fois le projet Silverlight compilé, on se positionne dans l'écran LightSwitch dans lequel on veut importer le User Control Silverlight et on appelle la commande Add Layout Item / Custom Control
La fenêtre Add Custom Control s'affiche et permet de référencer le projet Silverlight
puis de sélectionner le contrôle comme montré ci dessous
Le contrôle peut être déplacé dans le Layout par une simple opération de drag & drop
Presser la touche F5 pour relancer l'application et on constate que le contrôle est affiché correctement et peuplé avec les données de la Source de données, la sélection d'un catégorie via ce contrôle déclenche une opération de filtrage sur la liste des produits et ce sans une ligne de code!
On peut ensuite modifier le Layout par exemple en supprimant des éléments. Ici, on ne va conserver que la Combo box et la grille de produits
Le résultat final après implémentation
Cette article nous a permis de mettre en valeur le haut niveau de productivité et de simplicité apporté par LightSwitch pour la création d'applications simples orientées données.
Il est également possible de créer des applications très user friendly avec des layouts dynamiques basé sur le Databinding et des contrôles graphiques silverlight.
Il restera néanmoins à vérifier les temps de réponse dans le cadre d'utilisation de tables à forte volumétrie.
Pour tester la tenue à la charge, j'ai injecté 100 000 lignes dans une table Region à l'aide d'un plan de génération de données puis créé un écran de recherche sur cette table, le temps de chargement de l'écran (incluant la pagination) est de l'ordre de 5 à 10 secondes.
Clairement, la cible reste donc des applications non "Business Critical" avec peu de spécifique.

lundi 26 septembre 2011

Visual Studio 2010 et TFS Azure Service Preview

Microsoft a officiellement lancé TFS Azure Preview, pour obtenir un accès, il suffit d'en faire la demande à l'adresse suivante : TFS Preview
Ce service est prévu pour fonctionner nativement avec la future version de Visual Studio : VS 2011.
Il est en cependant possible de se connecter à ce service avec Visual Studio 2010, à condition d'installer la KB2581206 disponible à l'adresse suivante http://go.microsoft.com/fwlink/?LinkId=212065&clcid=0x409
Le prérequis à l'installation est Visual Studio 2010 avec le SP1
Ci dessous les étapes détaillées pour se connecter
Lancer l'installaiton de la KB

Une fois l'installation terminée, démarrer Visual Studio 2010 puis cliquer sur le bouton "Connect to Team Project" à partir de la fenêtre du Team Explorer, puis cliquer sur "Servers" puis "Add", entrer le nom de votre serveur : VotreNom.TfsPreview.com, cocher l'option htpps, après validation la fenêtre Sign In s'affiche, il simplement de se signer avec son Live ID puis cliquer sur Close
La fenêtre Connect to Team Project s'affiche, cliquer sur Connect
Vous pouvez alors créer un Team Project, et les artefacts projet apparaissent dans la fenêtre Team Explorer excepté les éléments de types Reports et Documents non disponibles dans la Preview
Bon développement dans le Cloud!

Visual Studio 2010 et TFS Azure Service Preview

Microsoft a officiellement lancé TFS Azure Preview, pour obtenir un accès, il suffit d'en faire la demande à l'adresse suivante : TFS Preview
Ce service est prévu pour fonctionner nativement avec la future version de Visual Studio : VS
2011.
Il est en revanche possible de se connecter à ce service avec Visual Studio 2010, à condition d'installer la KB2581206 à l'adresse suivante http://go.microsoft.com/fwlink/?LinkId=212065&clcid=0x409
Le prérequis à l'installation est Visual Studio 2010 avec le SP1
Ci dessous les étapes détaillées pour se connecter
Lancer l'installaiton de la KB

Une fois l'installation terminée, démarrer Visual Studio 2010 puis cliquer sur le bouton "Connect to Team Project" à partir de la fenêtre du Team Explorer, puis cliquer sur "Servers" puis "Add", entrer le nom de votre serveur : VotreNom.TfsPreview.com, cocher l'option htpps, après validation la fenêtre Sign In s'affiche, il simplement de se signer avec son Live ID puis cliquer sur Close
La fenêtre Connect to Team Project s'affiche, cliquer sur Connect
Vous pouvez alors créer un Team Project, et les artefacts projet apparaissent dans la fenêtre Team Explorer excepté les éléments de types Reports et Documents non disponible dans la Preview
Bon développements dans le Cloud!

Visual Studio 11 ALM Machine Virtuelle et hands-on-labs disponible!

Brian Keller a mis à disposition une machine virtuelle incluant tout le matériel nécessaire pour découvrir les nouvelles fonctionnalités apportées par le prochaine version de la plate forme ALM de Microsoft.Visual Studio 11 Application Lifecycle Management
Attention, la machine virtuelle fournie est de type HyperV et nécessite de préférence un host Windows 2008 x64 (R2 SP1 recommandé).
Des Hands on Labs permettent via des scénario précis de découvrir ces fonctionalités sous forme d'exercices.
Les éléments suivants constituent l'installation de la machine virtuelle :
  • Microsoft Windows Server 2008 R2 Standard Edition
  • Microsoft SQL Server 2008 R2
  • Microsoft Visual Studio 11 Ultimate Developer Preview
  • Microsoft Team Foundation Server 11 Developer Preview
  • Microsoft SharePoint Foundation 2010
  • Microsoft Project 2010
  • Microsoft Office Professional 2010 (Word, PowerPoint, Excel)

6 Hands on Labs sont fournis et permettent d'aborder les éléments suivants :

L'ensemble de ce contenu est disponible à l'adresse suivante avec les informations nécessaires pour le téléchargement et la mise en oeuvre : http://blogs.msdn.com/b/briankel/archive/2011/09/16/visual-studio-11-application-lifecycle-management-virtual-machine-and-hands-on-labs-demo-scripts.aspx
L'utilisation de Free Download Manager est fortement conseillé pour ce téléchargement



lundi 22 août 2011

Les Power Tools TFS 2010 version Aout 2011 disponibles

Les Power Tools TFS sont un ensemble d'outils très utiles qui amènent des fonctionnalités supplémentaires à TFS et Visual Studio 2010 qui sont généralement intégrées dans les versions ultérieures du produit. cette dernière version est téléchargeable à l'adresse suivante :August '11 TFS Power Tools
Les fonctionnalités principales des Power Tools (en gras celles qui ont été modifiées depuis la dernière version) sont :

  • Alerts Explorer
  • Team Foundation Server Backups
  • Microsoft Team Foundation Server 2010 Best Practices Analyzer
  • Custom Check-in Policy Pack
  • Process Editor
  • Team Explorer Enhancements
  • Team Foundation Power Tool (TFPT.EXE) Tool
  • Team Members
  • Windows PowerShell Cmdlets for Visual Studio Team System Team Foundation Server
  • Windows Shell Extensions
  • Work Item Templates
  • Test Attachment Cleaner
Dans les Team Explorer Enhancements, on notera la recherche full text dans les work items, ci dessous une illustration, il suffit de taper un mot clé dans la zone encadrée en rouge, valider, le filtrage est instantané :

mardi 26 juillet 2011

Bases de Données et Intégration Continue avec Visual Studio 2010

Introduction

Au coeur du concept d'industrialisation, on retrouve bien évidemment l'intégration continue avec notamment le couplage du déploiement. Après la qualité, Microsoft au travers du concept "No waste" s'attaque sur l'ensemble de la plate forme ALM TFS 2010 au chantier de l'automatisation pour éliminer tout temps gaspillé par les équipes dans des taches fastidieuses, répétitives à faible valeur ajoutée. Un des piliers de ce concept est la nouvelle version de Team Build 2010 entièrement refondu au dessus de la technologie WF 4.0 lui conférant plus de capacités et de flexibilité.

Dans cet article nous allons démontrer l'utilisation de Team Build pour automatiser le déploiement d'un projet de base de données dans un contexte d'intégration continue. Nous utiliserons la base exemple Adventure Works pour la mise en oeuvre de ce Build Template personnalisé

Etape 1 : Création du Projet de Base de données

Démarrer Visual Studio 2010 et créer un nouveau projet de Type "SQL Server 2008 Wizard", nommer le projet ADVDatabase par exemple, choisir l'emplacement de stockage du projet :

Cliquer sur OK puis sur Next
Choisir l'option User Defined Database et la représentation de votre choix, ici nous prenons par type d'objet sans le nom du schéma pour éviter la limitation des 256 caractères qui peut être très vite dépassée avec des projets de bases de données. Cliquer sur Next
Modifier les Options de la base de données en fonction du contexte, ici nous garderons les options par défaut, cliquer sur Next
Cocher l'option Import Existing Schema et se connecter à la base de données AdventureWorks (ou autre) à partir de laquelle le projet sera crée au travers du scriptage de l'ensemble des objets du schéma de la base de données, nous décocherons l'ensemble des options d'import, cliquer sur Next.
Pour la configuration du build et du déploiement, choisir l'option créer le script de déploiement et déployer la base de données, spécifier ensuite le serveur SQL cible pour le déploiement et indiquer le nom de la base de données. A noter que ces options peuvent être modifées à posteriori via la fenêtre de propriétés du projet de base de données.
Cliquer sur Finish, le processus d'acquisition du schéma de la base de données est lancé. Cliquer à nouveau sur Finish lorsque le scriptage des objets est terminé.
Le projet de base de données apparait alors dans la fenêtre Solution Explorer, il peut être inspecté également en utilisant la vue "Schema View" analogue à celle de SSMS.
On compile alors pour s'assurer que le projet ne comporte pas d'erreurs.
On teste ensuite un déploiement en utilisant la commande Deploy du menu contextuel
Si aucune erreur n'est survenue, on peut par exemple avec SSMS vérifier que la base de données a bien été déployée sur le serveur SQL cible.
Le projet est prêt pour être configuré en intégration continue, nous allons donc l'ajouter au Source Control en utilisant la commande contextuelle (à partir du noeud de la solution contenant le projet) Add solution to Source Control.
Puis nous archivons la solution via la commande Check in Pending Changes.
Etape 2 : Création du Build personnalisé pour le déploiement automatisé du projet de base de données

Nous allons personnaliser ce fichier XAML en utilisant le Designer de Workflow de Visual Studio 2010, dans cet étape nous ajouterons une séquence au workflow dans laquelle nous déploierons la base de données en utilisant l'utilitaire VSDBCMD.EXE. Les préconditions seront : Le build a été exécuté avec succès et les tests sont passés.
Je vous recommande de consulter la page de référence MSDN de l'utilitaire VSDBCMD afin de connaitre l'ensemble des options de l'outil.
Afficher la fenêtre du Team Explorer et se positionner sur l'onglet Builds du projet d'équipe contenant le projet de base de données. Lancer la commande contextuelle New Build Definition
Se positionner directement sur l'onglet Process
Cliquer sur le bouton Show Details puis cliquer sur le bouton New pour créer un nouveau Template de Build basé sur le template standard
Renommer le fichier template en DatabaseCI_Template.xaml par exemple puis valider
Cliquer sur l'hyperlien permettant d'accèder au Source Control dans le dossier des Build Templates puis lancer la commande Get Latest Version pour récupérer ce fichier dans notre Workspace courant :
Passer le fichier en Check out pour pouvoir le modifier puis ouvrir ce template simplement en double cliquant dessus
Le workflow de ce build apparait sur la surface de design XAML de Visual Studio 2010.
Cliquer sur le bouton Collapse All en haut à droit de la surface de design pour masquer les détails du processus de build standard.
Dans le cadre de l'intégration continue, le déploiement doit s'effectuer en fin de processus de build à la condition ou le processus de build ait réussi
Nous allons afficher la boite à Outils (Ctrl Alt X). On constate que Visual Studio vient en standard avec une collection impressionnante d'activités dédiées à Team Build en plus des activités de base Workflow Foundation 4.0
L'étape suivante va consister à glisser une activité Sequence située dans la catégorie Control Flow de la boite à outils, juste au dessous de la séquence Check in Gated Changes To, puis renommer le titre de la séquence en Deploy Database
Il suffit ensuite de glisser le bloc If à l'intérieur de la séquence pour gérer les préconditions d'exécution du déploiement
Double cliquer sur le bloc If pour afficher le détails de ses propriétés
Tant que les paramètres ne sont pas complets ou incorrect, un icone de warning apparaît en haut à droite du bloc concerné.
Nous allons entrer la condition du bloc If, pour cela appuyer sur F4 pour afficher la fenêtre de propriétés et cliquer sur le bouton à droite de la propriété Condition. Dans la boite, entrer la condition suivante :
BuildDetail.CompilationStatus = BuildPhaseStatus.Succeeded And (BuildDetail.TestStatus = BuildPhaseStatus.Succeeded Or BuildDetail.TestStatus = BuildPhaseStatus.Unknown)
Au passage on renommera également le bloc If en If Build and Tests Succeeded
Le lancement de l'utilitaire VSDBCMD se fera grace à l'activité InvokeProcess. Cette activité fait partie de la rubrique Team Foundation Build Activities.
Glisser l'activité InvokeProcess dans le bloc Then du Bloc If comme démontré ci dessous :
Double cliquer sur le bloc InvokeProcess pour afficher son détail puis presser la touche F4 pour afficher la fenêtre de propriétés.
Editer la zone Display Name et entrer "InvokeVSDBCMD"
Editre la zone Arguments et entrer la valeur : "/a:Deploy /dd+ /dsp:Sql /manifest: AdvDatabase.deploymanifest"
Attention : AdvDatabase représente le nom de votre projet de base de données
Editer la zone FileName et entrer la valeur : "C:\Program Files\Microsoft Visual Studio 10.0\VSTSDB\Deploy\VSDBCMD.EXE" (Attention à bien vérifier que ce chemin existe sur le serveur de build. Si le chemin est différent, modifier ce paramètre en conséquence. Vsdbcmd est installé avec Visual Studio 2010, il est d'ailleurs toujours conseillé de l'installer sur le serveur de build pour debugger plus facilement les erreurs de Builds)
Editer la zone Working Directory et entrer la valeur : BuildDetail.DropLocation
Nous terminerons par les messages d'output de l'activité Invoke Process, Glisser au dessous du bloc Standard Output l'activité WriteBuildMessage
Afficher la fenêtre de propriétés et configurer le Display Name à VSDBCMD Output, Configurer l'importance à : Microsoft.TeamFoundation.Build.Client.BuildMessageImportance.High. et enfin le message avec stdOutput comme indiqué ci dessous :
Glisser ensuite l'activité WriteMessageError au dessous du bloc Handle Error Output, et configurer le Display Name en VSDBCMD Error, et le message à errOutput.
A ce stade, le bloc se présente comme suit :
On se repositionne sur le bloc If et nous allons gérer le bloc Else. Simplement Glisser une activité WriteBuildWarning. Configurer le Display Name à Deployment Skipped et le message à : "The deployment was skipped"

Pour terminer l'implémentation, enregistrer le Template de Build, puis procéder au Check In.
Le template apparaitra maintenant dans la liste des templates, il suffit simplement de créer un nouveau Build et consommer ce template, en fin de build, la dernière version de la base de données sera déployée sur le serveur cible.
Conclusion
Au travers de cet article, nous avons démontré la facilité d'utilisation de WF 4.0 couplé à Team Build pour automatiser le déploiement de projets de bases de données. Sur des projets réels, ce type de déploiement sera adapté à l'aide des technologies de déploiemnet Web Setup Deployement pour des sites Webs ou encore Click Once afin de globaliser le déploiement d'une application complète incluant binaires et base de données.
A noter la possibilité de variabiliser les arguments du déploiement par exemple le nom du serveur SQL cible ainsi que le nom de la base de données en utilisant l'argument Metadata (au bas du designer WF), confèrant encore plus de flexibilité.