Fermer

septembre 26, 2020

Quitter Silverlight: conversion vers le Web


Si vous migrez à partir de Silverlight, la dernière récolte de technologies signifie qu'accéder au Web pourrait être votre meilleur choix.

Vous avez décidé de recréer vos applications Silverlight dans une technologie avec un avenir qui ne se terminer en octobre 2021. Vous pourriez passer à WPF, mais mettre votre application sur le Web n'est pas seulement le choix le plus intelligent, cela pourrait être moins de travail que vous ne le pensez.

Remarque: Ce message fait partie d'une série sur les options pour quitter Silverlight à l'approche de sa fin de vie. Consultez ces articles pour en savoir plus:

Si vous vous éloignez de Silverlight, vos deux meilleures options sont de recréer votre fonctionnalité Silverlight dans WPF ou dans l'environnement Web. Certes, WPF est le choix évident, mais il n’a jamais été une solution à coût nul . Plus critique encore, WPF vous limite à la plate-forme Windows au moment même où .NET Core élargit vos horizons vers Mac, iOS, Android et Linux. Passer au Web n'est pas seulement une solution multiplateforme, les applications basées sur le navigateur côté client conviennent également à Silverlight: le modèle d'événement du modèle d'objet HTML / document est l'équivalent de celui de Silverlight et, avec CSS, vous avez quelque chose approche des objets Style de Silverlight.

Vous pouvez ignorer le déplacement de votre application Silverlight vers le Web en raison de l'effort impliqué dans la conversion de votre XAML en HTML et de votre C # en JavaScript. La bonne nouvelle ici est qu'il existe de l'aide / des conseils / des outils dont vous pouvez tirer parti pour réduire la douleur et la souffrance lors de la conversion de votre XAML et, si vous choisissez le bon ensemble de technologies ( Blazor ), vous pas besoin de convertir votre code C #.

En fait, si vous êtes prêt à regarder à la fine pointe de la technologie (et je ne fais aucune promesse ici), vous n'aurez peut-être pas non plus à convertir votre XAML en HTML.

XAML en HTML

Si, cependant, vous souhaitez vous en tenir à la boîte à outils Microsoft, la conversion de votre XAML en HTML est inévitable (en tout cas pour le moment). Et, oui, il est possible de convertir vous-même votre XAML en HTML. Il est également possible, si vous êtes coincé au pôle Sud, de supprimer votre propre appendice. Cependant, aucune des tâches ne sera ni facile ni amusante.

Prenons, par exemple, le Silverlight DataGrid: il y a une tonne de fonctionnalités dans ce composant. Vous pouvez, je suppose, créer vous-même une fonctionnalité équivalente en utilisant HTML, JavaScript et CSS. Et ce serait une excellente stratégie, si vous êtes payé à l’heure. En fait, en raison de l'énorme quantité de fonctionnalités intégrées même dans le composant Silverlight le plus simple (pensez à tout ce que fait le TextBlock, par exemple), je ne pense pas que la conversion de XAML en HTML «pur» soit vraiment une option.

Le seul conseil que je vous donnerais dans ce domaine est de migrer vers des contrôles HTML tiers qui dupliquent la fonctionnalité des composants XAML que vous utilisez. Si vous avez utilisé des commandes tierces dans vos applications Silverlight, c'est dans cette entreprise que vous devriez rechercher en premier les composants Web, mais rien ne vous empêche de mélanger des composants HTML provenant de plusieurs sources.

Par exemple, Progress propose des packages de composants Telerik pour plusieurs environnements Web et tous ces packages incluent plusieurs remplacements de zone de texte. Vous pouvez choisir celui qui se rapproche le plus de la manière dont vous utilisez le TextBlock dans une fenêtre Silverlight particulière. Si vous avez utilisé les contrôles Telerik dans votre application Silverlight, je regarderais d'abord les packages de contrôle Telerik par exemple.

L'option Blazor

Bien sûr, aller sur le Web implique également que vous Vous devrez convertir votre code C # en JavaScript… sauf si vous recréez votre application dans Blazor. Blazor ne vous permettra pas seulement de conserver votre code C #, il permettra également à vos utilisateurs d'installer votre application Silverlight comme une application de bureau .

Si vous avez utilisé le modèle MVVM, moins vous avez de code dans vos fichiers xaml.cs, plus une conversion vers Blazor sera facile (et il y a pionniers que vous pouvez suivre ). Si vous disposez de classes de modèle qui implémentent l'interface INotifyPropertyChanged, vous pouvez capturer les événements qu'elles déclenchent dans votre composant Blazor aussi facilement que vous le pouvez dans Silverlight, comme je l'ai expliqué ailleurs . Vous pouvez également recycler toutes les classes dont vous disposez qui implémentent l’interface ICommand dans Blazor, mais pas aussi proprement que vous l’avez fait dans Silverlight.

Blazor duplique également une partie de la prise en charge de la liaison de données par Silverlight pour le modèle MVVM via l’objet DataContext et EditForm. L'objet Blazor DataContext déclenche même un événement FieldChanged que vous pouvez utiliser comme l'événement Changed de DataContext. Par exemple, un code Blazor comme celui-ci crée un formulaire lié à un modèle (Customer) et une méthode liée à l'événement OnFieldChanged du formulaire:


   
   

    First Name: 
     Submit 

 ] privé EditContext econtext;
       client privé cust {get; ensemble; }

       Tâche async de remplacement protégé OnInitializedAsync ()
       {
          econtext = new EditContext (cust);
          econtext.OnFieldChanged + = ManageEdits;

Et je ne devrais pas suggérer que les applications qui n'utilisaient pas MVVM ne puissent pas être migrées vers Blazor: il est très facile de lier des propriétés aux champs et des méthodes aux événements dans Blazor.

L'option Bleeding-Edge: Keep Your XAML

Et vous n'aurez peut-être pas à convertir votre XAML en HTML. CSHTML5 (également appelé «C # / XAML pour HTML5») dispose d'un outil pour convertir votre XAML et C # en HTML et JavaScript tout en continuant à travailler dans votre code source XAML / C # d'origine. En mars 2019, le projet est devenu open source . Le projet compte en moyenne plus de 20 engagements par mois, jusqu'au mois d'août de cette année, avec plusieurs contributeurs.

J'avoue être sceptique, surtout quand il s'agit de convertir du code C # en JavaScript (malgré l'existence du transpileur Bridge.NET dont CSHTML5 s'appuie). J'étais donc heureux lorsque CSHTML5 a publié un aperçu de la technologie au deuxième trimestre de 2020 qui intègre WebAssembly, éliminant ainsi le besoin de convertir votre code C #. Cela dit, je dois noter que CSHTML5 s'engage uniquement à compiler «un grand sous-ensemble de code Silverlight et WPF en HTML et JavaScript».

Mais étant donné que le transpilateur Bridge.NET existe, il est possible que vous puissiez convertissez votre code C # existant en JavaScript. Une fois que vous avez fait cela, vous pouvez envisager de passer à d'autres frameworks client JavaScript que Blazor. Bridge.NET vous permet de continuer à travailler en C # tout en prenant en charge les «3 grands» frameworks actuels: React, Vue et Angular. Ces trois frameworks prennent en charge MVVM (Vue a été conçu avec MVVM à l'esprit; comme d'habitude avec React, il existe une extension pour MVVM; la liaison bidirectionnelle d'Angular fonctionne bien avec le modèle MVVM). Cependant, Bridge prend en charge de nombreuses autres bibliothèques JavaScript, y compris l'une de mes bibliothèques MVVM préférées, Knockout.

Une dernière option de pointe, puis je m'arrêterai: les liaisons expérimentales de Microsoft Mobile Blazor offrent également l'espoir que vous pouvez quitter Silverlight sans quitter XAML. Cependant, en plus d'avoir le mot «Expérimental» dans son nom (et, actuellement, uniquement en version 0.4), les modèles de projet ne ciblent actuellement que les plates-formes Android et iOS. Pourtant, il est difficile de trouver une raison pour limiter une version de XAML qui fonctionne avec Blazor aux seuls smartphones, donc l'avenir peut être plus prometteur.

Conclusion

Il y a deux points à retenir ici. Premièrement: WPF n'est pas seulement votre seul choix. Deux: ce n'est peut-être même pas votre meilleur.





Source link