Comienza la cuenta atrás para Keyfactor Tech Days | ¡Asegura tu plaza hoy mismo!

  • Inicio
  • Blog
  • Cómo depurar código de extensión ILM/FIM que se ejecuta fuera de proceso

Cómo depurar código de extensión ILM/FIM que se ejecuta fuera de proceso

La mayoría de las implementaciones de ILM/FIM requieren algunas extensiones de código personalizadas, y la depuración de estas extensiones es una parte importante del proceso de desarrollo. Al desarrollar extensiones de código para ILM y FIM, una de las opciones configurables es ejecutar su código en un proceso separado. Esta es una opción para las extensiones de código ECMA, MA y MV.

Ejecutar las extensiones en proceso significa que el código de la extensión se carga en el proceso del servidor de sincronización (miisserver.exe). Ejecutar una extensión en proceso es más eficiente que ejecutarla fuera de proceso. El inconveniente, sin embargo, es que si la extensión falla, puede causar que el proceso del servidor de sincronización falle.

Ejecutar una extensión fuera de proceso significa que el fallo de la extensión no afectará al servidor de sincronización; sin embargo, hacerlo supone una penalización de velocidad y recursos. Depurar el código de una extensión que se ejecuta fuera de proceso es muy difícil porque el proceso que carga la extensión sólo se carga cuando es necesario. A menudo, para cuando se puede determinar el proceso en ejecución e intentar conectarse a él, el evento que se intenta depurar puede haber ocurrido ya.

Se suele recomendar que las extensiones se prueben y depuren en proceso. Una vez probada la extensión, se cambia a fuera de proceso. Sin embargo, puede haber problemas que sólo ocurran cuando se ejecuta fuera de proceso.

Un método que puedes utilizar para depurar tu código fuera de proceso es hacer que tu código llame al propio depurador.

A continuación se muestra un ejemplo de uso de un parámetro en una dll de Agente de Gestión de Conectividad Extensible (ECMA) para lanzar el depurador. Debe colocar esta sección al principio del código ECMA para que se pueda depurar el máximo número de elementos.

Se puede añadir un código similar a la Sincronización MA y al código de Extensión MV, utilizando un archivo de configuración para activar y desactivar esta función. Esto se hace más a menudo con un archivo XML utilizado para almacenar varios elementos de configuración utilizados en el código de extensión MA y MV y cargados en los métodos Initialize. Invocar el depurador en este punto le permitirá capturar la mayor cantidad de información.

// Optional Debugger Launch configured as MA ‘Additional parameters’

pruebe

{

launchDebugger = Convert.ToBoolean(configParameters["LaunchDebugger"].Value);

if (launchDebugger) Debugger.Launch();

}

catch (Excepción)

{

// attribute is optional – continue

}

Esta opción sólo debe utilizarse para realizar pruebas, ya que hasta que no se conecte un depurador y se siga avanzando por el código, el servidor de sincronización ILM/FIM estará en pausa.