Exploitez simplement vos données ouvertes avec LightSwitch
A l’heure où la libération des données publiques devient un sujet omniprésent et où nombre de producteurs/projets de données publiques se font jour au sein des entités publiques, nous ne pouvons que constater que ce patrimoine informationnel de données ouvertes reste encore sous-exploité voir inutilisé au-delà de sa simple disponibilité. Ceci est dû, en particulier, à la complexité de traitement induite compte tenu des sources de données ouvertes, au coût de mise en place de solutions adaptées, etc. Il s’agit d’un sujet récurrent lié à la diffusion et à l’exploitation de ces données, et ce, même si des solutions, plus ou moins complexes, commencent à émerger, au-delà de la simple disponibilité d’API hétéroclites quand elles existent.
Dans un tel contexte, les lecteurs de ce blog partageront sans doute avec nous les avantages procurés par un protocole générique de mise en œuvre et d’usage faciles quel que soit son environnement source ou cible comme le protocole ouvert de données OData (Open Data Protocol) soumis à l’OASIS pour standardisation. Le protocole OData facilite l'accès aux données (ouvertes) et leur modification au moyen de verbes HTTP standard.
Si cette situation est dommageable pour les multiples destinataires externes de ces données, elle l’est également pour les entités publiques qui produisent et mettent à disposition ces données.
Le décloisonnement des données issues de diverses applications internes donne en effet à une entité publique l’opportunité d’agréger ses données diverses, d’en faire ressortir des informations pertinentes jusqu’à lors enfouies, et d’améliorer son fonctionnement et ses actions. Encore faut-il pouvoir créer simplement et à moindre coût les applications qui sauront tirer parti de la production de données publiques.
C’est ici qu’intervient Visual Studio LightSwitch. Désormais intégré dans Microsoft Visual Studio 2012, sa vocation est de fournir un environnement de développement simplifié, et accessible au plus grand nombre, permettant de créer facilement et rapidement des applications Web et de bureau. De plus, l’ajout du support du protocole OData apporte un nouvel élan à cet environnement et notamment au monde des données ouvertes.
En effet, LightSwitch constitue une nouvelle perspective permettant de répondre à un problème de cloisonnement et de mise en exergue des données en apportant un traitement automatisé et simplifié de celles-ci, et ce, sans aucune ligne de code.
Voyons dès à présent comment il est possible, via LightSwitch, de créer un flux de données OData s’appuyant sur une base données existante.
Nous souhaitons en effet illustrer ici la simplicité avec laquelle les données existantes d’une entité publique peuvent être publiées et exploitées via le protocole OData au travers de LightSwitch.
(Si vous disposez déjà d’un service de données OData comme celui proposé par le projet OGDI (Open Governement Data Initiative) DataLab sur la forge GitHub, vous pouvez également directement utiliser les flux de données (ouvertes) ainsi disponibles. L’un des intérêts de LightSwitch est de pouvoir agréger différents flux de données OData provenant de différentes sources de données externes (bases de données, services de données OData, etc.). LightSwitch permet d’exprimer et d’appliquer sur cette base des règles métier pour le traitement de ces données.)
Attention le reste de ce billet ne nécessite et ne contient aucune ligne de code :)
Pour tester Visual Studio LightSwitch et réaliser les étapes décrites dans ce billet, vous pouvez télécharger aujourd’hui gratuitement Visual Studio 2012 RC sur le site Microsoft France.
(Le lancement de Visual Studio 2012 a lieu le 12 septembre prochain. Retenez la date si vous souhaitez y assister.)
Ouvrez Microsoft Visual Studio 2012 puis créez un nouveau projet. Dans la fenêtre de création d’un nouveau projet, sélectionnez sous Templates le modèle LightSwitch puis le projet LightSwitch Application (en Visual Basic ou en Visual C# en fonction de votre préférence).
Vous arrivez sur votre nouveau projet LightSwitch vide. La première chose à faire est d’ajouter (au moins) une source de données externe.
Pour les besoins de ce billet, nous utiliserons la base de données SQL AdventureWorkLT2012 disponible ici qui constituera notre socle de départ pour l’exposition d’un flux OData.
Cliquez sur Attach to external Data Source au centre de la fenêtre.
Plusieurs choix s’offrent à vous. Sélectionnez Database dans notre contexte. (Pour exploiter les flux de données (ouvertes) d’un service de données OData comme OGDI DataLab, il convient de sélectionner simplement OData Service et de renseigner ensuite les propriétés associées.)
Saisissez à présent les identifiants de connexion à votre base de données.
LightSwitch récupère à présent les informations liées à votre base de données SQL et vous propose de choisir les tables que vous désirez exposer.
Nous choisirons, ici, les tables Product, ProductCategory et ProductModel dans le but de publier l’ensemble des produits disponibles. (Vous pouvez faire la transposition avec vos propres bases et tables afférentes). Enfin, le nom spécifié plus bas représente le nom du service de données qui sera publié. Dans notre cas, pour notre entité, nous choisissons ProductsCompanyData.
Une fois validé, vous obtenez un diagramme représentant les relations entre vos tables. Vous avez la possibilité depuis cette fenêtre :
- De changer le type d’une colonne,
- D’ajouter des relations entre les tables,
- Ou encore de créer des requêtes personnalisées.
Nous allons, dans cet exemple, simplement changer le type de la colonne ThumbNailPhoto de la table Products pour que celle-ci soit considérée comme une image par LightSwitch.
Pour cela, double-cliquez sur la table Products dans l’explorateur de solution.
Vous pouvez, à présent, observer la table Product ainsi que ses relations aux tables ProductCategory et ProductModel.
Cliquez sur la liste déroulante de la ligne ThumbNailPhoto et sélectionnez Image.
Nos tables sont à présent configurées et prêtes à l’emploi. Votre flux de données est, pour ainsi dire, fonctionnel. Il ne vous reste plus qu’à configurer votre application pour s’exécuter dans un environnement Web pour tester le flux.
Pour cela, faîtes un clic droit sur le projet, en l’occurrence BddToODataPublication, puis sélectionnez Properties. Dans l’onglet Application Type, cochez Web afin que l’application se lance dans un navigateur.
Compilez la solution pour tester (Debug -> Start New Instance ou appuyez sur la touche F5).
Votre navigateur s’ouvre et vous affiche un page blanche. Ce comportement est normale car LightSwitch créé par défaut une application Web afin d’exploiter les données. Cependant le flux OData correspondant est d’ores-et-déjà accessible.
Pour l’afficher, relevez le début de l’url du navigateur. Typiquement https://localhost:<numéro de port>/ puis ajoutez à la suite le nom du service de données précédemment créé suivi de .svc. L’extension .svc signifie que cette url est liée à un service Web créé lors du lancement de l’application.
Dans notre cas, le service Web se nomme ProductsCompanyData.svc soit au final https://localhost:57551/ProductsCompanyData.svc dans notre configuration.
Si nous nous rendons à cette url, nous obtenons bien un flux xml exposant nos 3 tables sélectionnées précédemment.
Enfin, si vous désirez tester votre nouveau service OData un peu plus en détail, vous pouvez naviguer dans le flux via l’url.
Dans notre cas de figure, voici quelques exemples de requêtes spécifiques à OData :
- https://localhost:57551/ProductsCompanyData.svc/Products retourne la liste des produits disponibles ;
- https://localhost:57551/ProductsCompanyData.svc/Products?$filter=Color eq 'Black' retourne l’ensemble des produits de couleur noire ;
- https://localhost:57551/ProductsCompanyData.svc/Products(680) retourne les détails du produit ayant l’id 680 ;
Pour les lecteurs de ce blog, rien de vraiment surprenant :)
Maintenant que nous avons un flux OData fonctionnel, il peut s’avérer intéressant de fournir une interface plus intuitive pour voir ces données de manière simple et efficace.
Pour cela, nous poursuivons notre exploration de LightSwitch afin de créer une application Web nous permettant de naviguer dans nos produits, de voir les détails de ceux-ci et d’effectuer une recherche dans ces produits.
Dans un premier temps, nous allons ajouter une page qui constituera notre point d’entrée dans l’application.
Toujours dans notre projet LightSwitch, faîtes un clic droit sur Screens puis Add screen…
Dans la nouvelle fenêtre, sélectionnez List and Details Screen, choisissez un nom pour la fenêtre et, dans la liste déroulante, sélectionnez la table Products.
Cliquez sur OK.
Vous voyez à présent apparaître un ensemble de lignes représentant les éléments qui seront affichés dans votre application Web.
Pour mieux comprendre le fonctionnement, compilez et lancez à nouveau l’application.
Vous pouvez voir toutes vos données à l’écran agrémenté d’une navigation fonctionnelle et d’une pagination.
De même, voici un schéma faisant le rapprochement entre les 2 vues :
Votre application est fonctionnelle cependant vous ne pouvez pas la publier telle quelle car les données sont modifiables par toute personne accédant au site Web.
La dernière étape consiste donc à mettre l’application en lecture seule.
Pour cela, supprimez tous les sous-éléments que contiennent les Command Bar. Dans un second temps, cliquez sur les petites icones à côté des noms de chaque colonne et sélectionnez Label.
Pour les dates, sélectionnez Date Time Viewer, pour les Auto Complete Box, choisissez Summary et, pour les images, Image Viewer.
Ce qui nous donne au final :
Compilez puis lancez l’application.
Cette fois, votre application est entièrement fonctionnelle et prête à être déployée. Libre à vous de l’améliorer en supprimant certaines colonnes, en améliorant le design ou en modifiant l’agencement des éléments.
Nous venons de voir, au cours de ce billet, comment publier facilement un flux OData à partir d’une base de données existante et comment créer une application Web basique.
Outre cet aspect de simplicité, nous pouvons dire que LightSwitch offre une possibilité d’exposition et de décloisonnement des données (ouvertes) qui n’étaient, auparavant, pas envisageable sans un gros travail en amont ou en développement.
Enfin, il est important de préciser que nous n’avons exploré ici qu’une infime partie des possibilités de LightSwitch. En effet, en plus d’apporter un système de sécurité fiable permettant une granularité fine d’authentification, LigthSwitch vous offre aussi une personnalisation des flux et applications beaucoup plus approfondie, cette fois-ci, en se plongeant un peu plus dans le code. Le code vous permettra également de préciser très simplement des règles métier.
Nous espérons vous avoir ainsi donné envie d’explorer un peu plus LightSwitch pour vos données (publiques).
Pour cela, nous vous invitons à consulter notamment l’article de Beth Massi sur l’amélioration des applications LightSwitch avec OData (en anglais). De nombreux billets sont aujourd’hui consacrés à LightSwitch et, en particulier, ceux-ci sur le weblog de l’équipe Visual Studio LighSwitch.
Pour plus d’information sur LightSwitch, vous pouvez également consulter les ressources du Centre de développement MSDN dédié.
Alors n’hésitez pas ! Lancez-vous et exploitez pleinement en toute simplicité vos données (publiques).