modèle Data-Pull et modèle Data-Push

Un client d’un moniker asynchrone peut choisir entre un modèle data-pull et data-push pour piloter une opération IMoniker::BindToStorage asynchrone et recevoir des notifications asynchrones. Dans le modèle d’extraction de données, le client pilote l’opération de liaison et le moniker fournit des données au client uniquement à mesure qu’elles sont lues. En d’autres termes, après le premier appel à IBindStatusCallback::OnDataAvailable, le moniker ne fournit aucune donnée au client, sauf si le client a consommé toutes les données déjà disponibles.

Étant donné que les données sont téléchargées uniquement à mesure qu’elles sont demandées, les clients qui choisissent le modèle d’extraction de données doivent veiller à lire ces données en temps opportun. Dans le cas de téléchargements Internet avec des monikers d’URL, l’opération de liaison peut échouer si un client attend trop longtemps avant de demander plus de données.

Dans le modèle data-push, le moniker pilote l’opération de liaison asynchrone et avertit en permanence le client chaque fois que de nouvelles données sont disponibles. Le client peut choisir de lire les données à tout moment pendant l’opération de liaison, mais le moniker pilotera l’opération de liaison jusqu’à son terme.

En outre, vous devez vous rappeler de suivre les règles COM pour l’allocation de mémoire lors de l’utilisation de monikers asynchrones, en particulier les éléments suivants :

  • Chaque fois qu’une interface COM ou un appel de fonction renvoie une mémoire tampon (chaîne ou autre) à son client, le client est chargé de libérer la mémoire en appelant CoTaskMemFree.
  • Chaque fois qu’une interface ou une fonction COM nécessite une mémoire tampon de son client, le client doit allouer cette mémoire tampon à l’aide de CoTaskMemAlloc et l’appelé doit la libérer.

Veillez à suivre ces règles lors de l’allocation de chaînes ou de mémoires tampons passées à des monikers asynchrones, et n’oubliez pas de libérer la mémoire retournée par les monikers asynchrones. Pour plus d’informations, consultez Gestion de l’allocation de mémoire et rubriques associées.

Monikers asynchrones