Windows Phone 8 succinctement Introduction

Il y a un nouvel enfant en ville

Les smartphones et les tablettes sont, sans aucun doute, les rois du marché de la consommation. Les ordinateurs traditionnels ne disparaîtront pas de sitôt, en particulier dans le monde des affaires, mais dans de nombreux scénarios, les appareils mobiles ont remplacé l'ancienne approche «souris et clavier» par une approche plus moderne et intuitive, basée sur des interfaces tactiles et naturelles. Certes, l'iPhone d'Apple est le produit qui a obligé toutes les autres entreprises à repenser l'expérience mobile: d'abord avec un nouveau concept de téléphone, et ensuite avec l'idée d'applications et de magasins d'applications. Au moment de choisir un nouveau téléphone, l’un des éléments clés à prendre en compte est la disponibilité et la qualité des applications, et pas seulement les fonctionnalités offertes par la plate-forme. Les développeurs jouent un rôle important dans cette.

Microsoft a peut-être rejoint le parti un peu tard, mais il l'a fait avec une approche nouvelle et nouvelle. Microsoft développait Windows Mobile 7 lorsqu'il a compris que le téléphone ne constituerait pas un produit attrayant pour les consommateurs qui commençaient à s'habituer aux appareils iPhone ou Android. Ainsi, ses développeurs ont abandonné le projet et sont partis de zéro pour créer une plate-forme totalement nouvelle: Windows Phone 7. Le résultat était vraiment différent de celui des autres concurrents: une nouvelle interface utilisateur, basée sur un style de design plat appelé style Microsoft Design (autrefois appelé Métro); et une intégration profonde avec les réseaux sociaux et tous les services Microsoft, comme Office, SkyDrive et Xbox.

La version actuelle de la plate-forme (qui sera couverte dans cette série) est Windows Phone 8; au milieu, Microsoft a publié une mise à jour appelée Windows Phone 7.5 qui ajoutait de nombreuses nouvelles fonctionnalités grand public, mais surtout améliorait l'expérience des développeurs en ajoutant de nombreuses nouvelles API..

Windows Phone 8 représente un nouveau départ pour la plate-forme: Microsoft a abandonné l’ancienne pile de technologies utilisées dans Windows Phone 7 (le noyau Windows Mobile, Silverlight, XNA) pour adopter les nouvelles fonctionnalités introduites dans Windows 8, comme le nouveau noyau, le Windows Runtime et la prise en charge du code natif (C ++).

Pour cette raison, Windows Phone 8 n'est pas disponible en tant que mise à jour pour les anciens appareils Windows Phone 7. Pour aider les utilisateurs lors de la transition, Microsoft a publié une mise à jour intermédiaire appelée Windows Phone 7.8, qui a transféré certaines des nouvelles fonctionnalités de Windows Phone 8 (telles que les nouveaux formats de mosaïque) sur les anciens périphériques..

Depuis la publication de Windows Phone 8, Microsoft a publié trois mises à jour:

  • Mise à jour 1 (ou GDR1), qui a ajouté certaines améliorations d'Internet Explorer, de la connectivité Wi-Fi et de la messagerie
  • La mise à jour 2 (ou GDR2), qui améliore la prise en charge des comptes Google, Xbox Music et Skype, ajoute la prise en charge de la radio FM et étend la disponibilité de l'application Data Sense pour suivre le trafic de données.
  • Mise à jour 3 (ou GDR3), qui prend en charge une nouvelle résolution (1080p), le mode de conduite, l'orientation du verrouillage de l'écran et une meilleure gestion du stockage, et améliore la pile Bluetooth et Wi-Fi

Le matériel

Parler du matériel est important car il est étroitement lié à l'expérience de développement et aux fonctionnalités que vous pouvez utiliser lors du développement d'une application. Avec Windows Phone, Microsoft a introduit une approche hybride entre Apple et Google..

Comme Android, Windows Phone peut fonctionner sur une large gamme de périphériques, avec différents facteurs de forme et capacités matérielles. Toutefois, Microsoft a défini un ensemble de directives relatives au matériel que tous les fabricants doivent suivre pour créer un périphérique Windows Phone. En outre, les fournisseurs ne peuvent pas personnaliser l'interface utilisateur ou le système d'exploitation. tous les téléphones, quel que soit le fabricant, offrent la même expérience utilisateur familière.

Ainsi, Windows Phone peut tirer le meilleur parti des deux mondes: une large gamme d'appareils signifie plus d'opportunités, car Windows Phone peut bien fonctionner sur des appareils peu coûteux et de la même manière que sur des téléphones puissants à haute résolution. Un matériel mieux contrôlé facilite la vie des développeurs, car ils peuvent toujours compter sur des fonctionnalités telles que des capteurs ou le GPS..

Voici les principales caractéristiques d'un appareil Windows Phone 8:

  • prise en charge de processeurs multi-core (processeurs dual core et quad core)
  • au moins 512 Mo de RAM (généralement 1 Go ou 2 Go sur les appareils haut de gamme)
  • au moins 4 Go de stockage (pouvant être étendu avec un Micro SD)
  • caméra
  • capteurs de mouvement (accéléromètre, gyroscope, boussole), en option
  • capteur de proximité, en option
  • Wi-Fi et connexion 3G
  • GPS
  • quatre résolutions prises en charge: WVGA (480 × 800), WXGA (768 × 1280), 720p (720 × 1280), et 1080p (1080 × 1920)
  • trois boutons matériels: Retour, Démarrer et Rechercher

Le runtime de Windows

Windows Runtime est la nouvelle couche API introduite par Microsoft dans Windows 8 et constitue le fondement d'une nouvelle approche plus moderne du développement d'applications. En fait, contrairement au framework .NET, il s’agit d’une couche native, ce qui se traduit par de meilleures performances. De plus, il prend en charge un large éventail d’API couvrant de nombreux nouveaux scénarios introduits ces dernières années: géolocalisation, capteurs de mouvement, NFC, et bien plus encore. Au final, il convient parfaitement aux scénarios asynchrones et multi-threads, qui constituent l’une des conditions essentielles des applications mobiles; l'interface utilisateur doit être toujours réactive, quelle que soit l'opération exécutée par l'application.

Sous le capot du système d’exploitation, Microsoft a présenté le Runtime Windows Phone. Comparé au Windows Runtime d'origine, il manque certaines fonctionnalités (en particulier toutes les API qui n'ont pas beaucoup de sens sur un téléphone, telles que les API d'impression), mais il en ajoute plusieurs nouvelles spécifiques à la plate-forme (telles que l'intégration de hub, les contacts et rendez-vous, etc.).

Microsoft a relevé un défi lors du développement de Windows Phone 8: de nombreuses applications publiées sur le Windows Phone Store étaient déjà basées sur les «anciennes» technologies telles que Silverlight et XNA. Pour éviter d’obliger les développeurs à écrire leurs applications à partir de zéro, Microsoft a introduit trois fonctionnalités:

  • La pile XAML a été portée directement à partir de Windows Phone 7 au lieu de Windows 8. Cela signifie que le XAML est toujours géré et non natif, mais qu'il est complètement aligné sur le précédent, de sorte que, par exemple, des fonctionnalités telles que les comportements, pour lesquelles a été ajouté uniquement dans Windows 8.1, sont toujours disponibles). De cette façon, vous serez en mesure de réutiliser tout le code XAML écrit pour les applications Windows Phone 7 sans avoir à le modifier ou à le corriger..
  • Grâce à une fonctionnalité appelée Mode de quirks, Les applications écrites pour Windows Phone 7 peuvent s'exécuter sur des appareils Windows Phone 8 sans avoir à appliquer de modification dans la plupart des cas. Ce mode permet de traduire les appels de l'API Windows Phone 7 vers les appels Windows Runtime associés..
  • Windows Phone Runtime comprend une couche appelée .NET pour Windows Phone, qui est le sous-ensemble des API disponibles dans Windows Phone 7. Grâce à cette couche, vous pourrez utiliser les anciennes API dans une application Windows Phone 8, même si elles ont été remplacées par de nouvelles API dans Windows Runtime. . De cette façon, vous pourrez migrer vos anciennes applications vers la nouvelle plate-forme sans avoir à réécrire tout le code..

A l'instar du Windows Runtime complet, Windows Phone 8 intègre désormais la prise en charge de C++ comme langage de programmation, tandis que le Couche WinJS, qui est une bibliothèque qui permet aux développeurs de créer des applications du Windows Store en utilisant HTML et JavaScript, est manquant. Si vous souhaitez développer des applications Windows Phone utilisant les technologies Web, vous devrez vous appuyer sur Navigateur Web contrôle (qui intègre une vue Web dans l’application) et utilise les fonctionnalités fournies par des frameworks tels que PhoneGap.

Cette série couvrira le développement utilisant C # comme langage de programmation et XAML comme langage d’interface utilisateur. Nous ne parlerons pas de C ++ ou de VB.NET (les API disponibles sont les mêmes, il sera donc facile de réutiliser les connaissances acquises en lisant cette série). De plus, comme cette série concerne Windows Phone 8, je ne couvrirai que les API Windows Runtime. Dans les zones où les API sont dupliquées (c’est-à-dire qu’il existe des API Windows Runtime et .NET pour Windows Phone pour accomplir la même tâche, comme le stockage ou les capteurs), je ne couvrirai que celles de Windows Runtime..

Les outils de développement

La plate-forme officielle pour développer des applications Windows Phone est Visual Studio 2012, bien qu'un support ait également été ajouté aux versions commerciales de Visual Studio 2013. La principale différence est que, même si Visual Studio 2012 vous permet toujours d'ouvrir et de créer des projets Windows Phone 7, Visual Studio 2013 ne peut être utilisé que pour développer des applications Windows Phone 8..

Il n’existe aucune différence entre les deux versions lorsque l’on parle de développement sous Windows Phone: comme le SDK est identique, les mêmes fonctionnalités sont disponibles dans les deux environnements. Nous allons donc utiliser Visual Studio 2012 comme référence pour cette série..

Pour commencer, vous devez télécharger le SDK Windows Phone 8 à partir du portail officiel des développeurs. Ce téléchargement convient aux nouveaux développeurs et aux développeurs Microsoft qui disposent déjà d'une version commerciale de Visual Studio 2012. Si Visual Studio n'est pas déjà installé, le programme d'installation installera la version gratuite d'Express. sinon, le SDK et l'émulateur seront simplement installés et ajoutés à votre installation Visual Studio existante..

L'installation va également installer Mélanger pour Windows Phone, un outil conçu spécifiquement par Microsoft pour les concepteurs. C'est un éditeur visuel XAML qui facilite la création d'une interface utilisateur pour une application Windows Phone. Si vous êtes développeur, vous passerez probablement le plus clair de votre temps à écrire manuellement XAML dans l'éditeur Visual Studio, mais cela peut être un compagnon valable pour des tâches plus complexes telles que la création d'animations ou la gestion des états visuels d'un contrôle..

Pour installer le SDK Windows Phone 8, vous avez besoin d’un ordinateur avec Windows 8 Pro ou Windows 8 Entreprise 64 bits. Cela est nécessaire car l’émulateur est basé sur Hyper-V, qui est la technologie de virtualisation Microsoft disponible uniquement dans les versions professionnelles de Windows. En outre, il existe une configuration matérielle: votre CPU doit prendre en charge la traduction d’adresse de second niveau (SLAT), qui est une fonctionnalité du processeur nécessaire au bon fonctionnement de Hyper-V. Si vous avez un ordinateur plus récent, vous n'avez pas à vous inquiéter. essentiellement toutes les architectures de Intel i5 et le supporte. Sinon, vous pourrez toujours installer et utiliser le SDK, mais vous aurez besoin d'un vrai périphérique pour les tests et le débogage..

Vous pouvez utiliser un outil gratuit appelé Vérification de l'état de la machine SLAT pour savoir si votre CPU répond aux exigences de SLAT..

L'émulateur

Il est indispensable de tester et de déboguer une application Windows Phone sur un périphérique avant de la soumettre au Windows Phone Store. Ce n'est que sur un vrai téléphone que vous pourrez tester les performances réelles de l'application. Pendant le développement quotidien, l’utilisation de l’appareil peut vous ralentir. C'est à ce moment que l'émulateur est utile, en particulier parce que vous pourrez facilement tester différentes conditions (comme différentes résolutions, perte de connectivité, etc.)..

L'émulateur est une machine virtuelle optimisée par Hyper-V capable d'interagir avec le matériel de votre ordinateur. Si vous avez un moniteur tactile, vous pouvez simuler l’écran tactile du téléphone. si vous avez un microphone, vous pouvez simuler le microphone du téléphone, etc. De plus, l'émulateur est fourni avec un ensemble d'outils supplémentaires utiles pour tester certains scénarios nécessitant un périphérique physique, comme l'utilisation de l'accéléromètre ou du capteur GPS..

Vous pourrez lancer l'émulateur directement à partir de Visual Studio. Il existe différentes versions de l'émulateur correspondant aux différentes résolutions et tailles de mémoire disponibles sur le marché..

L'expérience du développeur

Les applications Windows Phone sont publiées sur le Windows Phone Store, qui est le moyen principal utilisé par les développeurs pour distribuer leurs applications. Cependant, il existe deux exceptions: les entreprises et les développeurs à des fins de test.

Pour commencer à publier des applications, vous devez disposer d'un compte développeur, que vous pouvez acheter sur le portail officiel. Les frais sont de 19 $ par an et vous permettent de publier un nombre illimité d'applications payantes et un maximum de 100 applications gratuites. Récemment, Microsoft a fusionné l'expérience de développeur pour ses deux plates-formes principales. Cela signifie qu'avec le compte de développeur, vous pourrez également publier des applications du Windows Store pour Windows 8 sur le Windows Store..

Le compte développeur est également connecté à testing. En fait, par défaut, les téléphones sont verrouillés et le seul moyen d'installer des applications tierces consiste à utiliser Windows Store. Tous les développeurs peuvent débloquer des téléphones gratuitement, même s'ils n'ont pas de compte payant. la différence est qu'avec un compte gratuit, un seul téléphone peut être déverrouillé et que deux applications seulement peuvent être chargées sur le téléphone. Avec un compte payant, les développeurs peuvent déverrouiller jusqu'à trois téléphones et charger jusqu'à 10 applications sur chaque.

Le déploiement de l'application peut être effectué directement à partir de Visual Studio ou à l'aide d'un outil installé avec le SDK appelé Déploiement d'applications.

Pour déverrouiller votre téléphone, vous aurez besoin d’un autre outil fourni avec le SDK, appelé Enregistrement de développeur Windows Phone. Vous devrez connecter votre téléphone à l'ordinateur et vous connecter avec le même compte Microsoft que celui que vous avez utilisé pour enregistrer le compte développeur..

L'application à publier sur le Windows Phone Store doit être certifiée. Le processus de certification (dans lequel des tests automatiques et manuels sont exécutés) garantit que votre application est acceptable du point de vue technique (l'application ne plante pas, l'expérience utilisateur n'est pas source de confusion, etc.) et le contenu (pas de pornographie, pas violence excessive) point de vue.

Nous couvrirons plus de détails sur le processus de publication dans le dernier article de cette série.

Aperçu pour les développeurs

Microsoft a introduit un nouveau programme permettant aux développeurs d’accorder un accès anticipé aux nouvelles mises à jour de Windows Phone. De cette façon, les développeurs peuvent tester leurs applications par rapport aux dernières versions du système d'exploitation avant leur distribution aux utilisateurs..

Pour vous abonner au programme, vous devez:

  • posséder un développeur débloqué téléphone
  • avoir un compte développeur payant ou un compte gratuit sur App Studio, l'outil Web créé par Microsoft pour créer facilement des applications Windows Phone sans connaissances en programmation

Une fois ces conditions remplies, vous pouvez télécharger l’application Preview for Developers à partir du magasin..

Après l'avoir installé, vous devrez l'exécuter et activer le programme de prévisualisation en acceptant les termes et conditions. Une fois le processus terminé, les mises à jour d’aperçu vous seront fournies comme des mises à jour régulières: vous devrez aller à la Mises à jour section de la Réglages page et vérifiez les nouvelles mises à jour. Au moment de la rédaction de cet article, Microsoft fournit GDR3 avec ce programme de prévisualisation..

N'oubliez pas qu'en fonction du fabricant, l'installation d'une version de prévisualisation peut annuler la garantie du téléphone. C'est une procédure sûre, mais en cas de problème, votre fabricant pourrait ne pas être en mesure de vous aider..

Le premier projet

Le point de départ de chaque application Windows Phone est Visual Studio 2012. Voyons comment créer un projet et comment il est structuré..

La première étape consiste à ouvrir Visual Studio 2012 et à cliquer sur Nouveau projet. Dans les modèles installés disponibles, vous trouverez le Téléphone Windows section contenant tous les modèles liés au développement Windows Phone.

Nous allons utiliser le plus simple, App Windows Phone, qui ne contient qu'une page de départ. Donnez-lui un nom et cliquez D'accord. On vous demandera quelle plate-forme vous allez supporter. Puisque nous couvrons le développement de Windows Phone 8, choisissez Windows Phone 8.0. Le concepteur chargera automatiquement la page de démarrage et, dans le Explorateur de solution fenêtre, vous verrez la structure du projet. Regardons cela en détail:

App.xaml

le App.xaml Le fichier est le point de départ de chaque application Windows Phone: il s’occupe de l’initialisation de l’application et du cadre qui contiendra les pages. De plus, depuis une instance du App classe (qui est définie dans le App.xaml.cs fichier) est toujours maintenu en vie lors de l'exécution de l'application, il est également utilisé pour définir tous les paramètres globaux. Par exemple, vous pouvez intercepter l'événement de cycle de vie que nous couvrirons plus loin dans cette série ou définir des styles et des ressources XAML globaux qui seront utilisés dans l'application..

MainPage.xaml

Il s'agit de la page principale de l'application lancée après son initialisation. C'est celui par défaut inclus dans un projet, mais vous pouvez ajouter autant de pages que vous le souhaitez dans votre projet. Chaque page a la même structure: elle est composée d'un fichier avec l'extension .xaml, qui définit l'interface utilisateur et un fichier avec l'extension .cs, qui est le code derrière qui définit la logique d'interaction avec l'interface utilisateur. Chaque page hérite d'une classe appelée PhoneApplicationPage qui offre une prise en charge intégrée des propriétés et des événements liés au cycle de vie de la page, tels que les événements de navigation, l'orientation, la gestion de la barre d'état système, etc..

Les atouts

le Les atouts dossier contient les actifs graphiques de l'application. Le projet standard comprend des icônes et des images par défaut pour les différentes tailles et modèles de mosaïque..

Ressources

le Ressources Le dossier contient tous les fichiers nécessaires à la gestion de la localisation. Par défaut, vous ne trouverez qu’un seul fichier appelé AppResources.resx, qui contient la langue de base (généralement l’anglais, mais vous pouvez en choisir une autre). Toutes les autres langues seront prises en charge en ajoutant un nouveau fichier AppResources. le LocalizedStrings.cs Le fichier est ajouté par défaut à la racine du projet et c'est la classe que nous allons utiliser pour gérer la localisation. Nous couvrirons cela plus profondément plus tard dans cette série.

Le fichier manifeste

À l'intérieur de Propriétés dossier, vous trouverez un fichier appelé WMAppManifest.xml. C'est un fichier très important. Il s'appelle manifeste car il est utilisé pour déclarer toutes les fonctionnalités de l'application. Son rôle est crucial lors du processus de certification. Grâce à ce fichier, le processus automatique est capable d'extraire toutes les informations nécessaires sur l'application, telles que son titre, les résolutions prises en charge, les fonctionnalités utilisées, etc..

Visual Studio 2012 fournit un éditeur visuel pour le fichier manifeste. Il suffit de double-cliquer sur le fichier pour l'ouvrir. Il est important de noter que tous les scénarios de cas d'utilisation ne sont pas pris en charge par l'éditeur visuel. Parfois, nous devons éditer manuellement le XML pour étendre notre application.

L'éditeur est divisé en quatre sections différentes:

  • Interface utilisateur de l'application: Contient toutes les informations sur l'apparence de l'application une fois qu'elle est installée sur le téléphone, comme le titre, les résolutions prises en charge, les modèles et les images standard à utiliser comme mosaïque principale..
  • Les capacités: Répertorie toutes les fonctionnalités matérielles et logicielles que l'application peut utiliser, telles que l'appareil photo, les services de géolocalisation, la mise en réseau, etc. Dans la plupart des cas, l'utilisation d'une fonctionnalité pour laquelle les fonctionnalités spécifiques n'ont pas été déclarées provoquera une exception lors de l'exécution de l'application. . Dans cette série, je noterai chaque fois que nous utilisons une fonctionnalité nécessitant une capacité spécifique.
  • Exigences: Répertorie les fonctionnalités matérielles spécifiques utilisables par votre application, telles que l'appareil photo ou le NFC. Si vous définissez des exigences, les personnes possédant des téléphones sans ces caractéristiques matérielles spécifiques ne pourront pas télécharger l'application..
  • Emballage: Définit les fonctionnalités du package qui seront publiées dans la boutique, telles que l'auteur, l'éditeur, la langue par défaut et les langues prises en charge.

L'écran de démarrage

Si vous avez déjà développé des applications pour Windows Phone 7, vous devez être familiarisé avec l'écran de démarrage. C'est une image statique qui est immédiatement affichée à l'ouverture de l'application et disparaît lorsque l'application est complètement chargée et prête à être utilisée..

L'écran de démarrage faisait partie du modèle Visual Studio standard pour les projets Windows Phone 7, mais il a été supprimé dans les projets Windows Phone 8. En raison des améliorations de performances introduites dans Windows Runtime, les applications démarrent maintenant beaucoup plus rapidement, de sorte qu'un écran de démarrage n'est généralement pas nécessaire..

Si vous avez besoin d’un écran de démarrage, vous devez l’ajouter manuellement au projet en respectant une convention de dénomination particulière: il doit être au format JPG, le nom du fichier doit être SplashScreenImage.jpg, et la résolution requise est 768 × 1280. De cette façon, l'image sera automatiquement adaptée à la résolution de l'appareil. Si vous souhaitez un contrôle total sur la résolution du périphérique, vous pouvez ajouter trois images différentes, une pour chaque résolution prise en charge. Dans ce cas, la convention de dénomination à suivre est la suivante:

  • SplashScreenImage.screen-WVGA.jpg pour 480 × 800 appareils.
  • SplashScreenImage.screen-WXGA.jpg pour 768 × 1280 appareils.
  • SplashScreenImage.screen-720p.jpg pour les appareils 720 × 1280.

La résolution 1080p, du point de vue du rapport de format, se comporte comme le 720p: si votre application est lancée sur un périphérique 1080p, l’écran de démarrage 720p sera utilisé s’il en existe un..

Test de l'application

Lorsque vous êtes prêt à tester votre application, vous pouvez la déployer sur un périphérique ou dans l'émulateur directement à partir de Visual Studio. Dans la barre d’outils, vous trouverez ce qui ressemble à un bouton de lecture, ainsi qu’une description de la cible de déploiement. Vous pouvez choisir entre cinq cibles différentes: un périphérique réel, deux versions de l'émulateur WVGA (une avec 512 Mo de RAM et une avec 1 Go de RAM), un émulateur WXGA et un émulateur 720p. De temps en temps, la liste peut être plus longue car Microsoft publie régulièrement des mises à jour du SDK pour ajouter de nouveaux émulateurs correspondant à la nouvelle version du système d'exploitation. Par exemple, Microsoft a déjà publié une mise à jour du SDK qui ajoute les images d'émulateur alignées sur la version GDR2..

Lorsque l'application s'exécute en mode débogage, deux fonctionnalités sont automatiquement activées pour vous aider à travailler:

  • Le côté droit de l'écran affiche des compteurs de performances tels que le nombre d'images par seconde ou l'utilisation de la mémoire. Ils vous aideront à identifier les problèmes de performances potentiels avec votre application (voir l'image ci-dessous pour plus d'informations).
  • Le téléphone ou l'émulateur ne sera jamais suspendu. La fonctionnalité de «verrouillage automatique» qui éteint l'écran après utilisation, est généralement activée sur les appareils, mais en mode débogage, cette fonctionnalité est désactivée..

Une récapitulation rapide

Dans ce premier article, nous commençons à nous familiariser avec certains concepts importants que tout développeur Windows Phone devrait connaître:

  • Nous avons appris les principales fonctionnalités logicielles et matérielles de la plate-forme dont les développeurs peuvent tirer parti..
  • Nous avons discuté du Windows Runtime, qui est au cœur des dernières technologies Microsoft, telles que Windows 8 et Windows Phone 8..
  • Nous avons vu comment commencer à travailler avec Windows Phone: quels outils télécharger et installer, comment créer le premier projet et la structure d'une application Windows Phone.

Ce tutoriel représente un chapitre de Windows Phone 8 Succinctly, un eBook gratuit de l’équipe de Syncfusion.