Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Windows Store Apps : comprendre les templates

[new:15/11/2012]Les templates de projets Windows Store Apps offrent des structures de base pour débuter le développement d’applications. Connaître et comprendre l’architecture de ces projets est un préliminaire incontournable.

Les templates

Il existe plusieurs catégories d’applications et chacune propose un lot de templates, mais parmi ces derniers on en retrouve trois qui sont communs à toutes les catégories : “Blank App”, “Grid App” et “Split App” (comme toujours j’utilise uniquement des versions US, le lecteur saura j’en suis sûr retrouver la traduction de ces noms dans la VF).

Tour d’horizon

Les templates sont formatés pour un look tablette mais ils sont bien entendu utilisables pour des applications destinées aux PC tant qu’on reste, cela est évident, dans le cadre d’applications Windows Store.

Le modèle “Blank”

Blank TemplateCe modèle créée un projet ayant une seule page. Il n’a aucun contrôle prédéfinis ni aucune mise en page. Si vous exécutez le template “Blank” vous obtiendrez une page totalement vide sans aucune fonctionnalité.

 

 

Le modèle “Grid App”

Ce modèle créée un projet ayant trois pages dotées d’une navigation basée sur des groupes d’éléments arrangés sous forme de grille.

Grid Template

La page principale présente tous les éléments dans des groupes. Quand on clique sur un groupe l’application navigue vers une page de détail listant les éléments. Un clic sur l’un de ceux-ci navigue vers un niveau de détail encore plus fin, un seul item occupant tout l’espace. Des flèches de navigation sont affichées permettant à l’utilisateur de revenir en arrière facilement.

Le modèle “Split App”

Ce template créée un projet de deux pages qui permet lui aussi de naviguer dans un ensemble d’éléments. La première page permet de sélectionner un groupe d’éléments, la seconde affichant le détail du groupe sélectionné.

La structure des templates

Chaque template créée un projet possédant une structure légèrement différente même si l’essentiel reste semblable :

Windows Store Various Project Structure

Chaque projet possède deux répertoires : Assets et Common. Le second et le troisième type offrant un répertoire de plus “DataModel”. “Assets” est le répertoire de stockage des ressources de l’application, images, icones, etc, “Common” est conçu pour recevoir les fichiers communs utilisés par toute l’application. Le répertoire “DataModel” doit être vu comme une bibliothèque contenant les Modèles, les ViewModels et les données de test.

Tous ces projets sont dotés d’un App.xaml comme toutes les applications C# / Xaml et jouant le même rôle (avec les spécificités de WinRT comme le tombstoning). De même on trouve un fichier Package.appxmanifest qui stocke le manifeste de l’application (ses icones, les autorisations qu’elle réclame, les déclarations qu’elle fait, comme s’intégrer dans la charme de recherche).

Enfin, le fichier {nom appli}_TemporaryKey.pfx stocke la clé de signature.

Les autres fichiers sont des fichiers Xaml dont le nom et la fonction dépendent du type de projet.

Faut-il utiliser les templates ?

Voici une question plus intéressante… Faut-il utiliser ces templates pour créer de nouvelles applications ? Ce qui ouvre la voie à un autre questionnement “Ces templates sont-ils bien conçus ?”.

A la dernière question je peux répondre immédiatement “oui”. Oui, les templates sont bien conçus. Mais uniquement si on les regarde comme des exemples de mise en page et de navigation. Cette nuance permet de répondre à la première question : Non, je crois pas qu’il faille utiliser ces modèles comme des “starter kits”.

En dehors du modèle “Blank”, il y a fort peu de chance qu’une application un peu sérieuse puisse se satisfaire des modèles proposés. Il faudra par exemple ajouter un framework MVVM qui imposera sa structure propre le plus souvent.

Bref, les templates fournis sont intéressants à faire tourner et à étudier, ils peuvent faire de très bons “début de commencement” pour des applications très simples répondant strictement à la mise en page proposée.

Dans tous les autres cas vous aurez intérêt à partir des templates fournis avec le framework MVVM que vous choisirez (MVVM Light, Caliburn.Micro, Okra, MvvmCross, …).

L’intérêt des modèles se trouve dans ce que tout logiciel doit viser “la satisfaction immédiate” c’est à dire que Visual Studio, Expression Blend, se doivent comme tout logiciel de permettre en quelque clics de “faire quelque chose” de gratifiant. Les modèles jouent ce rôle. Au-delà il vous faudra penser une organisation adaptée à chaque projet.

Les autres templates

A côté des trois templates décrits ci-dessus, chaque catégorie offre d’autre templates spécialisés.

Dans les catégories Visual C# et Visual Basic il existe par exemple trois templates de plus “Class Library”, “Windows Runtime Component” et “Unit Test Library”.

Le modèle “'Class Library” permet de créer une bibliothèque de classes managée pour les Windows Store Apps. Le modèle “’Windows Runtime Component” est plus g��nérique car il permet de créer des composants utilisables par tous les langages WinRT. Vous pouvez ainsi créer en C# un composant qui sera réutilisable dans une application écrite en JavaScript/Html par exemple. Le troisième modèle permet de créer un projet de test unitaire.

Les projets C++

Hélas pour ceux qui avaient vu en C# un fantastique progrès offrant un moyen moderne de faire des applications Windows en échappant à cette horreur d’un autre âge qu’est C++, ce langage antédiluvien étant le seul que connaisse Sinosfky il redevient plus que jamais incontournable dès qu’il s’agit d’attaquer Windows à la racine…

Et encore, peut-être que dans Windows 9 il faudra écrire les services Windows en CSS avec des bouts de JavaScript dedans… Sait-on ce que ce diable d’homme risque de nous inventer !

Bref, pour l’instant, si vous voulez faire du Direct 2D, du Direct 3D, écrire une DLL, une bibliothèque “statique” pour Windows Store Apps, il n’y a que C++ qui le permet. D’un autre côté, en dehors des développeurs de jeux ou de drivers de périphériques C++ n’apporte pas grand chose et peu continuer à être ignoré.

Les projets JavaScript

Même si je ne conseille à personne d’écrire de tels projets, ils existent. Les templates diffèrent un peu et on ne peut, en plus des trois templates commun présentés plus haut, rien espérer de plus qu’un modèle “Fixed layout” et un autre appelé “Navigation” pour produire des applications Windows Store forcément pauvres et mal testées (pas de Unit testing, pas de librairie de composant, etc).

Ces applications JavaScript ont le sait sont là uniquement pour attirer des développeurs Web vers Windows 8. Microsoft, malgré un discours de type “ce n’est pas grave d’avoir peu d’applications sur le Store” rame intensément pour tenter de remplir le fameux Store qui, forcément, fait triste mine en nombre d’applis par rapport à ses concurrents.

Ces deux problèmes n’en sont pas.

Celui de la quantité est un faux problème. La qualité prime sur la quantité, et il suffit qu’il existe quelques bonnes applications sur le Windows Store pour concurrencer les 500 versions de la lampe de poche sous Android et IOS… C’est vrai. Utilisateur d’Android (et programmant aussi pour cet OS) je le sais bien, le Play Store est un fatras d’applis qui se copient les unes les autres dont la qualité est généralement très moyenne (même s’il y a de très bonnes applis aussi). Windows Store peut relever le défi avec de bonnes applis, c’est une carte à jouer. Et puis selon une formule popularisée par Mitterrand, il faut donner du temps au temps… Laissons au Windows Store le temps de se remplir.

Celui des développeurs Web n’est pas un gros souci non plus. Je leur dis même “bienvenue !”. Dot.Blog leur est grand ouvert et je serai heureux de leur faire découvrir que malgré tout, pour développer sous Windows 8, C# / Xaml, il n’y a rien de mieux !

Conclusion

Il est important de comprendre la raison d’être des templates (le principe de “gratification instantanée” que tout logiciel doit offrir pour séduire rapidement, VS ou Blend n’échappant pas à cet impératif vendeur).

Il est tout aussi important de savoir ce qu’on peut tirer (apprentissage, base pour faire des tests, etc).

De même il faut savoir qu’elles en sont les limitations (leur simplicité et leur généricité qui ne sont pas appropriées à des applications MVVM utilisant un framework par exemple).

Il faut aussi savoir ce qu’il est possible de faire en C# / Xaml et ce qui reste interdit à ce couple, notamment les applications 2D et 3D.

Il ne faut pas négliger la catégorie JavaScript car elle permettra (peut-être) d’attirer des développeurs Web de talent qui enrichiront par leur présence la qualité des applications du Windows Store autant que nous essayerons d’enrichir leur propre horizon technique en leur apprenant à comprendre C# et Xaml ! Pour ça, vous pouvez compter sur Dot.Blog pour leur faire oublier JavaScript :-)

Stay Tuned !

blog comments powered by Disqus