Transfert de données en arrière-plan (HTML)

[ Cet article est destiné aux développeurs de Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]

Utilisez les API Windows.Networking.BackgroundTransfer fournies dans l’environnement Windows Runtime pour améliorer votre application grâce à des fonctionnalités de téléchargement de fichiers exécutées en arrière-plan pendant que l’application est suspendue, présenter la gestion de leur cycle de vie par opération, et les maintenir après l’arrêt de l’application. Cette fonctionnalité est idéale pour le téléchargement de fichiers volumineux et les opérations de chargement à l’aide des protocoles HTTP et HTTPS. Le protocole FTP est pris en charge, mais seulement dans le cadre d’opérations de téléchargement.

Le transfert en arrière-plan s’exécute séparément de l’application appelante et est principalement conçu pour des opérations de transfert à long terme pour des ressources telles que des vidéos, de la musique et des images volumineuses. Pour ces scénarios, l’utilisation du transfert en arrière-plan est essentielle, car les téléchargements se poursuivent même quand l’application est suspendue. Sur le téléphone, les transferts en arrière-plan se poursuivent même quand l’exécution de l’application est terminée. Pour plus d’informations sur le cycle de vie d’une application, voir la documentation Cycle de vie d’une application.

Remarque   Si vous téléchargez peu de ressources et si l’opération est censée se terminer rapidement, utilisez les API HttpClient à la place du transfert en arrière-plan.

 

Comment la fonctionnalité de transfert en arrière-plan fonctionne-t-elle ?

Quand une application utilise la fonctionnalité de transfert en arrière-plan pour lancer un transfert, la requête est configurée et initialisée à l’aide d’objets de classe BackgroundDownloader ou BackgroundUploader. Chaque opération de transfert est gérée individuellement par le système et séparément de l’application appelante. Les informations sur la progression sont disponibles si vous voulez indiquer un état à l’utilisateur dans l’interface utilisateur de votre application. En outre, l’exécution de votre application peut être suspendue, reprise, annulée ou même lue à partir des données pendant le transfert. La manière dont les transferts sont gérés par le système favorise une consommation d’énergie intelligente et évite les problèmes qui peuvent se produire lorsqu’une application connectée se heurte à des événements tels qu’une interruption ou un arrêt de l’application, ou encore des modifications soudaines de l’état du réseau.

Regardez cette courte vidéo pour obtenir une démonstration d’un téléchargement de fichier simple à l’aide de la fonctionnalité de transfert en arrière-plan.

Applications du Windows Phone Store : Mon application peut-elle recourir à la fonctionnalité de transfert en arrière-plan pour créer des demandes de fichiers authentifiés ?

La fonctionnalité de transfert en arrière-plan fournit des méthodes qui prennent en charge les informations d’authentification serveur et proxy de base, les cookies et l’utilisation d’en-têtes HTTP personnalisés (par l’intermédiaire de la méthode SetRequestHeader) pour chaque opération de transfert.

Comment cette fonctionnalité s’adapte-t-elle aux modifications de l’état du réseau ou aux arrêts inattendus ?

La fonctionnalité de transfert en arrière-plan garantit une démarche cohérente pour chaque opération de transfert en cas de modification de l’état du réseau. Pour cela, elle exploite intelligemment les informations sur l’état de la connectivité et du forfait données de l’opérateur fournies par la fonctionnalité Connectivité. Afin de définir un comportement pour des scénarios réseau différents, une application définit une stratégie de coût pour chaque opération de transfert à l’aide de valeurs définies par BackgroundTransferCostPolicy.

Par exemple, la stratégie de coût définie pour une opération peut indiquer que l’opération doit être automatiquement suspendue lorsque l’appareil exploite une connexion réseau limitée. Le transfert reprend (ou redémarre) automatiquement ensuite dès qu’une connexion à un réseau « non restreint » est établie. Pour plus d’informations sur le mode de définition par coût des réseaux, voir NetworkCostType.

Bien que la fonctionnalité de transfert en arrière-plan possède ses propres mécanismes pour gérer les modifications de l’état du réseau, d’autres considérations générales ayant trait à la connectivité des applications connectées au réseau sont à prendre en compte. Pour plus d’informations, voir Exploitation des informations de connexion réseau disponibles.

Remarque  

Les applications du Windows Phone Store disposent de fonctionnalités qui permettent à l’utilisateur de surveiller et de limiter la quantité de données transférées en fonction du type de connexion, de l’état de l’itinérance et du plan de données de l’utilisateur. C’est pourquoi les transferts en arrière-plan peuvent être suspendus sur le téléphone même quand BackgroundTransferCostPolicy indique que le transfert doit s’effectuer.

Le tableau suivant indique les moments où les transferts en arrière-plan sont autorisés sur le téléphone pour chaque valeur BackgroundTransferCostPolicy, en fonction de l’état actuel du téléphone. Vous pouvez utiliser la classe ConnectionCost pour déterminer l’état actuel du téléphone.

État du téléphone UnrestrictedOnly Default Always
Connecté au Wi-Fi Autoriser Autoriser Autoriser
Connexion limitée, pas d’itinérance, sous la limite de données, en bonne voie pour rester sous la limite Refuser Autoriser Autoriser
Connexion limitée, pas d’itinérance, sous la limite de données, en bonne voie pour dépasser la limite Refuser Refuser Autoriser
Connexion limitée, itinérance, sous la limite de données Refuser Refuser Autoriser
Connexion limitée, au-dessus de la limite de données. Cet état se produit uniquement quand l’utilisateur active la restriction des données en arrière-plan dans l’interface utilisateur Data Sense. Refuser Refuser Refuser

 

RequestUnconstrainedDownloadsAsync et RequestUnconstrainedUploadsAsync ne sont pas pris en charge sur le téléphone. Les appels de ces API sont compilés correctement mais échouent au moment de l’exécution avec l’exception E_NOT_IMPL.

Découvrez tout ce qu’il faut savoir sur la fonctionnalité de transfert en arrière-plan

Section Description
Transfert d’un fichier depuis une ressource réseau

Ajoutez la fonctionnalité pour télécharger et charger en toute sécurité des fichiers dans votre application du Windows Store.

Background Transfer API reference

Documentation API pour l’ensemble de l’espace de noms Windows Runtime de transfert en arrière-plan.

Exemple de transfert en arrière-plan

Cet exemple montre comment l’API de transfert en arrière-plan fonctionne de manière intelligente, souple et économique dans les applications du Windows Store.

 

Rubriques associées

Connexion à un serveur HTTP à l’aide de Windows.Web.Http