Silverlight, application Web hors navigateur

Ce plugin de Microsoft pour la réalisation et la présentation d'applications Web riches est à la source d'une grande rancoeur des développeurs vis à vis de la firme. Il permet effectivement de réaliser des interfaces complètes éblouissantes mais tout ce que l'on a appris pour ce faire va devenir inutile.

Les plateformes supportées sont Windows depuis XP et le SP 2, Windows Phone, MacOS, et Linux partiellement avec Mono.

L'idée à l'origine du projet était de fournir une alternative à Flash. Mais peu à peu HTML 5 s'est imposé comme le standard de remplacement pour HTML 4 et il offre toutes les fonctions nécessaires pour les application Web, avec notamment Canvas et les balises multimédia, ce qui a amené Microsoft à revoir sa stratégie.

Le responsable du projet expliquait le blog de Microsoft qu'il voyait Silverlight comme une plateforme pour mobiles fonctionnant sous Windows Phone 7.

"Silverlight est notre plateforme de développement pour Windows Phone. Notre stratégie s'est décalée. HTML est la seule vraie plateforme portable pour toute chose, y compris iOS."

Puis la stratégie a encore été décalée.

L'avenir du développement sur Windows s'inscrit dans XAML. Et le savoir-faire acquis avec Silverlight restera valide avec les applications XAML + JavaScript.
Voir l'article Quel avenir pour Silverlight?

Dans un billet sur le blog Windows, Microsoft annonce en 2015 que Silverlight n'est pas supporté par Edge, le nouveau navigateur. Depuis cette date, Microsoft encourage les développeurs à remplacer Silverlight par HTML 5.

En 2021, une version indépendant de Silverlight apparaît sous le nom de OpenSilver, avec le soutien de Microsoft. On peut continuer à utiliser une bonne partie du code Silverlight avec ce runtime écrit en WebAssembly.

La magie de Silverlight

Silverlight vs Flash

Silverlight est plus rapide que Flash. Mais ce dernier est supporté par plus de systèmes, par tous les systèmes en fait tandis que Silverlight fonctionne parfaitement sur Windows et Windows mobile et partiellement sur Mac, Linux, et pas sur les systèmes pour mobiles autres que celui de Microsoft.
Les capacités vidéo sont supérieure sur Silverlight.
Il permet la programmation dans divers langages et non pas uniquement en ActionScript. Cependant les designers peu habitués aux outils de programmation trouvent Flash plus accessible.

Silverlight vs HTML 5

Microsoft a renoncé à positionner Silverlight comme alternative à HTML 5 qui devient une plateforme standard pour les applications immersives sur tablettes ou ordinateurs de bureau. Mais c'est un standard relatif dans la mesure on il est complété par des API d'interface au système qui sont spécifiques à chacun (voir Tizen, Enyo de WebOS, etc.).

Une part essentielle de Silverlight, le langage XAML reste une alternative à HTML 5, beaucoup plus riche en fait grâce à ses quantités de balises d'interfaces graphiques et elle perdure dans Metro. Le plugin lui-même restera opérationnel durant longtemps (support prévu jusqu'en 2021) mais son intérêt devient limité.

Outils de programmation Silverlight

Pour réaliser une application avec Silverlight Microsoft proposait un outil dédié, Expression, qui permettait de construire entièrement un projet et définir visuellement une interface, le code XAML étant généré automatiquement. Il n'est plus distribué.
Un projet Silverlight peut aussi être réalisé sur Visual Studio ou sur Web Developper (en version complètes ou Express).

Eclipse porpose une extension pour réaliser des applications Silverlight, Eclipse ESL. Cela comprend un éditeur XAML avec prévisualition de l'interface définie. Cet outil est passé en archives, il n'est plus développé.

Visual Studio 10 prend en compte dans son interface graphique les nouvelles fonctions.

Silverlight 4

Qu'y a t-il de nouveau dans la version 4 de Silverlight? La principale amélioration tient à la performance. Microsoft affirme qu'une application Silverlight 4 fonctionne trois fois plus vite que dans la version précédente.

Une fonction d'impression pour les applications Silverlight.

PrintDocument doc = new PrintDocument();  
doc.PrintPage += new EventHandler<PrintPageEventArgs>(doc_PrintPage);  
doc.Print();

Les webcams et les microphones s'ajoutent à la liste des périphériques controlables par une application Silverlight.
Il est possible d'enregistrer ou générer localement des vidéos ou des bandes son. A titre d'application, Microsoft cite la vidéo conférence permettant à des postes de communiquer sans utiliser le serveur.
La molette de la souris est maintenant mieux prise en compte et peut s'interfacer avec les documents ou les listes d'une application.
La valeur est assignée à l'attribut Delta.

protected override void OnMouseWheel(MouseWheelEventArgs e)
{
    x = e.Delta;
   // utiliser la valeur selon l'application
}

Le multi-touch maintenant supporté permet de créer une interface pour écran tactile.

Le framework est maintenant doté de 60 composants graphiques que l'on peut personnaliser. RichTextBox est un éditeur qui peut supporter les liens, inclure des images et des contrôles.
Le drag and drop fonctionne à l'intérieur d'une application entre les composants et aussi entre l'application et le bureau local.
On peut transférer des données dans l'application ou à partir de celle-ci.

On accède aux dossiers MyDocument, MyPictures et autre emplacements prédéfinis dans Windows pour y stocker des documents.
Microsoft affirme que cela fonctionne sur d'autres systèmes ayant des noms de dossiers différents.

Le bouton droit de la souris peut afficher un menu contextuel que l'on définit dans l'application.

Le code Silverlight une fois compilé peut aussi fonctionner dans une application de bureau.
Le "Managed Extensibility Framework" permet de combiner des codes objets écrits dans des langages différents.

Silverlight 5

Mis en ligne le 9 décembre 2011, il apporte des améliorations quand à la vidéo et au graphisme avec un accès aux fonctions système à travers la plateforme XNA de développement de jeux. On se rappelle que Microsoft s'est montré opposé à WebGL parcequ'il permet un tel accès au hardware.

Voir aussi...