La plupart des implémentations ILM/FIM nécessitent des extensions de code personnalisées, et le débogage de ces extensions est une partie importante du processus de développement. Lorsque vous développez des extensions de code pour ILM et FIM, l'une des options configurables consiste à exécuter votre code dans un processus distinct. Il s'agit d'une option pour les extensions de code ECMA, MA et MV.
L'exécution des extensions in-process signifie que le code de l'extension est chargé dans le processus du serveur de synchronisation (miisserver.exe). L'exécution d'une extension in-process est plus efficace que l'exécution out-of-process. L'inconvénient, cependant, est que si l'extension échoue, cela peut entraîner l'échec du processus du serveur de synchronisation.
L'exécution d'une extension en dehors du processus signifie que la défaillance de l'extension n'affectera pas le serveur de synchronisation ; cependant, cela entraîne une pénalité en termes de vitesse et de ressources. Le débogage d'un code d'extension exécuté hors processus est très difficile, car le processus qui charge l'extension ne se charge qu'en cas de besoin. Souvent, le temps que vous puissiez déterminer le processus en cours d'exécution et tenter de vous y connecter, l'événement que vous essayez de déboguer s'est déjà produit.
Il est généralement recommandé de tester et de déboguer les extensions en cours de traitement. Une fois l'extension testée, vous passez à l'exécution hors processus. Cependant, certains problèmes peuvent survenir uniquement lors de l'exécution hors processus.
Une méthode que vous pouvez utiliser pour déboguer votre code hors processus consiste à demander à votre code d'appeler le débogueur lui-même.
Vous trouverez ci-dessous un exemple d'utilisation d'un paramètre dans une dll de l'agent de gestion de la connectivité extensible (ECMA) pour lancer le débogueur. Il est conseillé de placer cette section au début du code de l'ECMA afin de pouvoir déboguer le plus grand nombre d'éléments possible.
Un code similaire peut être ajouté au code de synchronisation MA et d'extension MV, en utilisant un fichier de configuration pour activer et désactiver cette fonctionnalité. Cela se fait le plus souvent à l'aide d'un fichier XML utilisé pour stocker divers éléments de configuration utilisés dans le code d'extension MA et MV et chargés dans les méthodes d'initialisation. L'activation du débogueur à ce stade vous permettra de capturer le plus d'informations possible.
// Optional Debugger Launch configured as MA ‘Additional parameters’
essayer
{
launchDebugger = Convert.ToBoolean(configParameters["LaunchDebugger"].Value) ;
if (launchDebugger) Debugger.Launch() ;
}
catch (Exception)
{
// attribute is optional – continue
}
Cette option ne doit être utilisée que pour les tests, car jusqu'à ce que vous attachiez un débogueur et que vous continuiez à parcourir votre code, le serveur de synchronisation ILM/FIM est en pause.