Die meisten ILM/FIM-Implementierungen erfordern einige benutzerdefinierte Code-Erweiterungen, und das Debuggen dieser Erweiterungen ist ein wichtiger Teil des Entwicklungsprozesses. Bei der Entwicklung von Code-Erweiterungen für ILM und FIM besteht eine der konfigurierbaren Optionen darin, Ihren Code in einem separaten Prozess auszuführen. Dies ist eine Option für ECMA-, MA- und MV-Codeerweiterungen.
Die prozessinterne Ausführung der Erweiterungen bedeutet, dass der Code der Erweiterung in den Prozess des Synchronisationsservers (miisserver.exe) geladen wird. Die prozessinterne Ausführung einer Erweiterung ist effizienter als die prozessferne Ausführung. Der Nachteil ist jedoch, dass bei einem Ausfall der Erweiterung der Prozess des Synchronisierungsservers ausfallen kann.
Die Ausführung einer Erweiterung außerhalb des Prozesses bedeutet, dass der Ausfall der Erweiterung keine Auswirkungen auf den Synchronisationsserver hat; dies führt jedoch zu einem Geschwindigkeits- und Ressourcenverlust. Das Debuggen eines Erweiterungscodes, der außerhalb des Prozesses ausgeführt wird, ist sehr schwierig, da der Prozess, der die Erweiterung lädt, nur bei Bedarf geladen wird. Wenn Sie den laufenden Prozess ermitteln und versuchen können, eine Verbindung zu ihm herzustellen, ist das Ereignis, das Sie zu debuggen versuchen, oft schon eingetreten.
Es wird allgemein empfohlen, Erweiterungen prozessintern zu testen und zu debuggen. Sobald die Erweiterung getestet wurde, wechseln Sie zu Out-of-Process. Es kann jedoch Probleme geben, die nur bei der Ausführung außerhalb des Prozesses auftreten.
Eine Methode, die Sie zum Debuggen Ihres prozessfremden Codes verwenden können, besteht darin, dass Ihr Code den Debugger selbst aufruft.
Nachfolgend finden Sie ein Beispiel für die Verwendung eines Parameters in einer Extensible Connectivity Management Agent (ECMA)-Dll zum Starten des Debuggers. Sie sollten diesen Abschnitt früh in den ECMA-Code einfügen, damit die maximale Anzahl von Elementen debuggt werden kann.
Ein ähnlicher Code kann zum MA-Synchronisations- und MV-Erweiterungscode hinzugefügt werden, wobei eine Konfigurationsdatei zum Ein- und Ausschalten dieser Funktion verwendet wird. Dies geschieht meist mit einer XML-Datei, in der verschiedene Konfigurationselemente gespeichert werden, die im MA- und MV-Erweiterungscode verwendet und in den Initialisierungsmethoden geladen werden. Wenn Sie den Debugger an diesem Punkt aufrufen, können Sie die meisten Informationen erfassen.
// Optional Debugger Launch configured as MA ‘Additional parameters’
Versuchen Sie
{
launchDebugger = Convert.ToBoolean(configParameters["LaunchDebugger"].Value);
if (launchDebugger) Debugger.Launch();
}
catch (Exception)
{
// attribute is optional – continue
}
Diese Option sollte nur zum Testen verwendet werden, da der ILM/FIM-Synchronisationsserver angehalten wird, bis Sie einen Debugger anschließen und Ihren Code weiter durchlaufen.