Modifications de l’arrêt d’Outlook 2010

Synthèse : dans le cadre de l’objectif d’amélioration des performances, Microsoft Office Outlook 2007 Service Pack 2 (SP2) et Microsoft Outlook 2010 incluent des modifications significatives pour garantir qu’Outlook s’arrête correctement lorsque l’utilisateur tente de le fermer. Cet article décrit les modifications apportées à Outlook 2010.

Dernière modification : vendredi 4 novembre 2011

S’applique à : Office 2007 | Office 2010 | Outlook 2007 Service Pack 2 (SP2) | Outlook 2010

Dans cet article
Présentation
Modifications de l’arrêt des compléments dans Outlook 2010
Méthodes recommandées pour l’arrêt des compléments à l’intention des développeurs
Méthodes recommandées pour l’arrêt de compléments à l’intention des administrateurs informatiques
Conclusion
Ressources supplémentaires

S'applique à :  Microsoft Outlook 2010 | Microsoft Office Outlook 2007 Service Pack 2 (SP2)
Publié en :  novembre 2009 | Mis à jour en :  avril 2010
Fourni par :  Ryan Gregg, Microsoft Corporation

Sommaire

  • Présentation

  • Modifications de l’arrêt des compléments dans Outlook 2010

  • Méthodes recommandées pour l’arrêt des compléments à l’intention des développeurs

  • Méthodes recommandées pour l’arrêt de compléments à l’intention des administrateurs informatiques

  • Conclusion

  • Ressources supplémentaires

Présentation

Avant Outlook 2007 SP2, Outlook prenait plus de temps que prévu pour s’arrêter sur commande. L’objectif dans Outlook 2010 est de s’assurer qu’il s’arrête rapidement et de façon cohérente.

Dans Outlook 2007 SP2, Outlook empêchait des compléments COM externes de maintenir Outlook en fonctionnement après sa fermeture par l’utilisateur (pour plus d’informations, consultez Modifications de l’arrêt des applications dans Outlook 2007 SP2 (éventuellement en anglais)). Outlook 2007 SP2 a également recommandé une nouvelle conception aux fournisseurs MAPI pour empêcher la perte de données avant la fermeture d’Outlook. L’inconvénient était que tous les fournisseurs MAPI devaient adopter la conception et prendre en charge le nouveau comportement.

Dans Outlook 2010 Technical Preview, la conception a été modifiée de telle sorte que les fournisseurs MAPI mettent en œuvre l’interface IMAPIProviderShutdown : IUnknown pour exécuter en temps voulu les étapes nécessaires. Ces étapes permettent d’éviter la perte de données pouvant se produire lorsque le client déconnecte des références externes avant sa fermeture. Le mécanisme de mise à l’arrêt rapide est maintenant utilisé par défaut pour tous les fournisseurs MAPI à l’exception de ceux qui choisissent plutôt de renvoyer MAPI_E_NO_SUPPORT à la méthode IMAPIProviderShutdown::QueryFastShutdown. Même si un fournisseur MAPI ne met pas en œuvre l’interface IMAPIProviderShutdown, Outlook 2010 utilise quand même le mécanisme d’arrêt rapide. Pour plus d’informations sur le client MAPI et le mécanisme d’arrêt rapide du fournisseur , consultez Client Shutdown in MAPI.

Ces modifications pour compléments COM et fournisseurs MAPI externes ont largement contribué à s’assurer qu’Outlook s’arrête toujours, et le fait rapidement, comme s’y attend l’utilisateur. Cependant, certains compléments in-process Outlook exécutent des opérations et des E/S réseau sollicitant beaucoup le processeur pendant les événements de mise à l’arrêt. En raison de leur impact sur les performances perçues d’Outlook, Outlook 2010 inclut un modèle d’arrêt rapide pour les compléments in-process qui améliore le comportement d’arrêt d’Outlook.

Modifications de l’arrêt des compléments dans Outlook 2010

À partir d’Outlook 2010, Outlook, par défaut, ne signale pas aux compléments qu’il s’arrête. Spécifiquement, Outlook n’appelle plus les méthodes OnBeginShutdown et OnDisconnection de l’interface IDTExtensibility2 pendant l’arrêt rapide. De même, un complément Outlook écrit avec Microsoft Visual Studio Tools pour Office n’appelle plus la méthode ThisAddin_Shutdown lors de l’arrêt d’Outlook.

L’impact des modifications sur un complément dépend de l’activité du complément pendant ces événements. La plupart des compléments utilisent ces événements pour libérer des références aux objets Outlook COM et effacer la mémoire qui était affectée pendant la session. Dans ce cas, l’impact sur les compléments est minimal ; Outlook libère les autres références d’objets COM et s’arrête, et Windows récupère la mémoire à la fin du processus Outlook.

Pour certains compléments, les modifications ont plus d’impact. Si un complément utilise ces événements pour valider des données (par exemple, pour stocker des paramètres d’utilisateur ou pour signaler l’utilisation à un serveur Web), ces activités ne sont plus exécutées. Selon le scénario, cela pourrait avoir un impact visible par les utilisateurs. Pour remédier à la situation, le développeur de complément peut modifier le complément pour garantir sa compatibilité avec les modifications, ou un administrateur informatique peut employer la stratégie de groupe pour restaurer le comportement d’origine pour un complément spécifique.

Important

Les méthodes OnBeginShutdown et OnDisconnection peuvent toujours être appelées dans d’autres scénarios (par exemple, si le complément est manuellement déconnecté et si l’arrêt lent est activé par la stratégie de groupe pour revenir au comportement antérieur à Outlook 2007 SP2). Par conséquent, il est important que les développeurs continuent à mettre en œuvre ces méthodes.

Pourquoi apporter maintenant des modifications ?

Les développeurs d’Outlook comprennent que cette modification a un impact significatif, mais ont pris cette décision après une analyse attentive d’abondantes données de performances.

Par exemple, des données d’Outlook 2007 SP2 indiquaient que si l’utilisateur avait installé des compléments « ralentisseurs », le retard moyen de l’arrêt était de 13 secondes. Des données d’Outlook 2010 Technical Preview révélaient un retard moyen de 15 à 20 secondes.

D’autres tests qui ont été conçus pour montrer l’activité des compléments pendant leur mise à l’arrêt ou les événements de déconnexion ont révélé que bien qu’une majorité de compléments effectuent des tâches très simples telles que la libération de références, certains effectuent des appels de services Web ou d’autres opérations relativement longues pendant ces événements.

Avec cette modification, pour la majorité des compléments et des clients, Outlook fonctionnera beaucoup mieux que dans le passé lors de la mise à l’arrêt. La modification améliore la capacité d’Outlook de répondre à la demande de l’utilisateur et de se fermer rapidement pour permettre à l’utilisateur de passer à la tâche suivante ou d’arrêter l’ordinateur.

Méthodes recommandées pour l’arrêt des compléments à l’intention des développeurs

Pour les développeurs de compléments, le nouvel arrêt peut d’abord sembler un peu complexe. Il est important que les développeurs appliquent les méthodes recommandées pour l’arrêt des compléments afin de garantir que les utilisateurs continuent à bénéficier de l’expérience d’arrêt rapide et réactive d’Outlook.

Méthode 1 : continuer à libérer les références dans OnDisconnection

Il est important de continuer à écrire un code qui inclut OnDisconnection ou ThisAddin_Shutdown pour libérer toute référence COM active aux objets Outlook. Dans Outlook 2003 et Outlook 2007 avant SP2, ces références COM pouvaient empêcher Outlook de s’arrêter. Dans Outlook 2010, vous pouvez continuer à mettre en œuvre ces événements pour libérer des références et la mémoire affectée car il existe des scénarios dans lesquels les administrateurs peuvent revenir à l’arrêt lent par une stratégie de groupe, ou l’utilisateur peut manuellement déconnecter votre complément au moyen de la boîte de dialogue Compléments COM.

Méthode 2 : détection de l’arrêt d’Outlook

Pour détecter l’arrêt d’Outlook, vous pouvez utiliser l’événement Quit de l’objet Application dans le modèle objet Outlook pour recevoir une notification de la mise à l’arrêt du processus. Veillez à répondre rapidement à l’événement et à redonner le contrôle à Outlook le plus rapidement possible. Vos compléments ne doivent créer aucun retard perceptible par l’utilisateur lors de l’arrêt d’Outlook. Comparez la durée de l’arrêt d’Outlook lorsque seul votre complément s’exécute, et cette durée en l’absence de tout complément pour identifier toute différence significative.

Si votre complément doit effectuer de longues opérations lors l’arrêt, ou doit effectuer des opérations de longueur indéterminée à ce moment, il convient de se poser les questions suivantes :

  • Est-ce que chaque opération doit impérativement se produire lors de l’arrêt d’Outlook ?

  • Que se produit-il si Outlook se bloque et que le code de ces opérations n’est pas exécuté ?

  • L’opération peut-elle être effectuée avant la mise à l’arrêt (par exemple, validation des modifications lorsque les utilisateurs les apportent au lieu de différer l’opération) ?

  • L’opération peut-elle être effectuée sur une thread d’arrière-plan et non pendant un événement de fermeture ?

    Notes

    Vous ne pouvez pas effectuer des appels au modèle objet Outlook à partir d’une thread d’arrière-plan, mais vous pouvez utiliser MAPI directement si vous initialisez MAPI correctement dans votre complément. Pour plus d’informations, consultez Starting a MAPI Session.

Explicitement, n’exécutez pas d’opérations d’E/S réseau pendant tout événement de fermeture. Cela inclut l’enregistrement de données sur un partage réseau, l’écriture de données dans un stockage en ligne Outlook, ou l’appel de services Web pendant Application.Quit, OnBeginShutdown ou OnDisconnection.

Lorsque vous utilisez l’événement Application.Quit, n’effectuez pas de libération d’objets Outlook COM ou de mémoire affectée dans l’espace de traitement d’Outlook. Outlook et Windows s’en chargent lors de la fermeture de votre processus.

Conseil

Pendant des tests de compatibilité de compléments, un exemple de complément Outlook interne renvoyait des informations d’utilisation à un service Web pendant les événements d’arrêt. Au lieu de communiquer les données directement au service Web pendant l’arrêt, le développeur a modifié le complément de manière à enregistrer et à communiquer les informations d’utilisation de la session précédente sur une thread d’arrière-plan lors du démarrage d’Outlook suivant. De cette manière, les données sont toujours transférées, et l’opération ne bloque jamais Outlook, une technique qui s’avère donc très utile.

Si votre solution correspond à un autre fichier exécutable, envisagez de transférer certaines opérations du complément au fichier exécutable. De cette manière, les opérations s’exécutent qu’Outlook fonctionne ou non, et ne compromettent pas pour Outlook la possibilité de démarrer et de s’arrêter rapidement.

Méthode 3 : tester la mise à l’arrêt en utilisant les méthodes rapide et lente

En tant que développeur, vous devez vous assurer que votre complément entraîne un impact négligeable sur les performances pour les utilisateurs d’Outlook. Il convient au minimum de tester l’impact de votre complément lors du démarrage d’Outlook, lors de scénarios classiques (par exemple, composition d’un nouveau message, réponse à un message, changement de dossiers et envoi d’un message) et lors de l’arrêt d’Outlook. Plus spécifiquement, testez le temps d’arrêt d’Outlook sous différents paramètres de Registre Windows pour le complément afin de contrôler l’arrêt d’Outlook.

Méthodes recommandées pour l’arrêt de compléments à l’intention des administrateurs informatiques

Pour les administrateurs informatiques, si vous avez des compléments ou des solutions internes ne pouvant pas être mis à jour pour prendre en charge la nouvelle conception, il existe deux manières d’activer des notifications d’arrêt aux compléments Outlook dans Outlook 2010, et de revenir au comportement d’arrêt antérieur :

  • Sélectivement pour des compléments individuels (l’approche préférable)

    Les administrateurs informatiques peuvent activer des notifications d’arrêt vers des compléments Outlook individuels dans le cadre du déploiement des compléments. Bien que la stratégie de groupe ne permette pas de le faire, cela est utile si vous avez des impératifs de compatibilité en amont pour certains compléments.

  • Globalement pour tous les compléments

    Les administrateurs informatiques peuvent activer des notifications d’arrêt globalement pour tous les compléments au moyen de la stratégie de groupe. Cette solution est recommandée pour les organisations utilisant un grand nombre de solutions internes ou de stations de travail devant déployer cette configuration pour garantir la compatibilité lors d’un déploiement d’Outlook 2010.

Configuration de complément individuel

Avec cette configuration, Outlook fournit sélectivement des notifications d’arrêt au complément spécifié sans notifier tous les compléments. Ayez recours à cette configuration pour chaque complément par le biais de l’inscription du complément dans les ruches de Registre HKCU ou HKLM, en ajoutant une valeur supplémentaire à l’inscription du complément. Tapez le texte suivant sur une seule ligne.

HKCU\Software\Microsoft\Office\Outlook\Add-ins\<ProgID>[RequireShutdownNotification]=dword:0x1

La définition de cette valeur sur 0x1 permet aux compléments de recevoir des rappels bloqués pendant l’arrêt d’Outlook. Cela a un impact sur les performances d’arrêt d’Outlook et doit être évalué dans le cadre d’un déploiement. Ce paramètre doit être utilisé uniquement si un complément présente des problèmes de compatibilité significatifs avec le mécanisme d’arrêt. La définition de cette valeur sur 0x0 utilise le comportement par défaut d’Outlook 2010.

Paramètre global

Utilisez cette configuration pour changer le nouveau mécanisme d’arrêt afin qu’il corresponde à celui utilisé par Outlook 2007. Vous pouvez déployer cette configuration au moyen de la stratégie de groupe, par utilisateur ou par ordinateur. Tapez le texte suivant sur une seule ligne.

HKCU\Policies\Microsoft\Office\Outlook\14.0\Options\Shutdown[AddinFastShutdownBehavior]=dword:0x1

La définition de AddinFastShutdownBehavior sur 0x1 active des notifications d’arrêt pour tous les compléments. La définition de cette valeur sur 0x0 utilise le comportement par défaut d’Outlook 2010.

Ces deux paramètres donnent aux administrateurs un contrôle complet sur l’effet que produit ce nouveau comportement sur les solutions et les compléments personnalisés utilisés dans l’entreprise. Il est important que les organisations testent toutes solutions personnalisées utilisant des compléments Outlook pour s’assurer de la parfaite compatibilité avec cette modification.

Conclusion

Outlook 2010 fournit un nouveau mécanisme pour les compléments in-process Outlook pour garantir un arrêt sans incidence sur le comportement globalement perçu de l’arrêt d’Outlook. Cependant, bien que Outlook n’appelle plus les méthodes OnBeginShutdown et OnDisconnection de l’interface IDTExtensibility2, les compléments doivent toujours mettre en œuvre ces méthodes ou ThisAddin_Shutdown pour libérer des références et la mémoire affectée, car les administrateurs pourraient souhaiter revenir à l’arrêt lent par le biais d’une stratégie de groupe, ou l’utilisateur pourrait manuellement déconnecter votre complément dans la boîte de dialogue Compléments COM. Les développeurs de compléments doivent proactivement modifier leurs compléments pour garantir leur bon fonctionnement avec Outlook 2010, exécuter uniquement les tâches absolument indispensables lors de l’arrêt et évaluer les performances de leurs compléments dans divers scénarios et sous différents paramètres de Registre Windows qui contrôlent l’arrêt d’Outlook. Dans le cas où des compléments sont déjà déployés dans une entreprise et où les administrateurs informatiques ne peuvent pas procéder à une mise à niveau pour garantir la compatibilité avec ce nouveau mécanisme d’arrêt, les administrateurs informatiques peuvent réinitialiser certains nouveaux paramètres du Registre Windows pour rétablir l’ancien comportement d’arrêt lent.

Ressources supplémentaires

Pour plus d’informations, voir les ressources suivantes :

-
Modifications de l’arrêt d’applications dans Outlook 2007 SP2 (éventuellement en anglais)

-
Client Shutdown in MAPI