Cohérence des transferts de fichiers
BITS garantit que la version du fichier qu’il transfère est cohérente en fonction de la taille du fichier et de l’horodatage, et non du contenu (BITS ne protège pas contre les attaques de l’intercepteur). Pour vérifier le contenu vous-même, vous pouvez utiliser la méthode IBackgroundCopyFile3::GetTemporaryName pour obtenir le nom du fichier qui contient le contenu téléchargé, vérifier le contenu à l’aide de votre propre mécanisme, puis appeler la méthode IBackgroundCopyFile3::SetValidationState pour indiquer à BITS si le contenu du fichier est valide. Si vous définissez l’état de validation sur FALSE et que le contenu provient du serveur d’origine, le travail passe à l’état d’erreur. Si le contenu provient d’un homologue, BITS télécharge le fichier à partir du serveur d’origine.
Pour les téléchargements, si la taille du fichier ou l’horodatage change pendant que BITS transfère le fichier, BITS redémarre le transfert de ce fichier uniquement. Par exemple, si le travail de téléchargement contient deux fichiers et que les fichiers sont mis à jour sur le serveur pendant que BITS transfère le deuxième fichier, BITS redémarre le transfert du deuxième fichier uniquement. Le premier fichier, qui a déjà été transféré avec succès, n’est pas mis à jour pour refléter les nouvelles modifications.
Notez que si vous êtes propriétaire du fichier en cours de téléchargement à partir du serveur, vous devez créer une URL pour chaque nouvelle version du fichier. Si vous utilisez la même URL pour les nouvelles versions du fichier, certains serveurs proxy peuvent servir des données obsolètes à partir de leur cache, car ils ne vérifient pas avec le serveur d’origine si le fichier est obsolète.
Pour les chargements, si la taille du fichier ou l’horodatage change pendant le transfert de fichier, BITS génère une erreur et le travail est placé dans l’état BG_JOB_STATE_ERROR.
BITS ne synchronise pas les demandes de transfert lorsqu’un ou plusieurs utilisateurs demandent que le même fichier soit transféré au même emplacement. BITS transfère le fichier pour chaque requête séparément.