Partager via


Chargement et exécution du code utilisateur

L'écriture d'un hôte permet de définir un environnement d'application dans lequel exécuter le code utilisateur managé. Dans ce contexte, le code utilisateur désigne tout code managé ne faisant pas spécifiquement partie de l'hôte. Par exemple, pour l'hôte Internet Explorer, le code utilisateur correspond au script et aux contrôles managés qui comprennent les pages HTML. Pour un hôte de serveur d'applications, le code utilisateur correspond au code qui contient les business rules d'une entreprise que le serveur d'applications manage et exécute.

L'ensemble du code managé fait partie d'une classe Assembly. Par conséquent, les méthodes disponibles pour charger et exécuter le code managé reposent toutes sur des assemblys. Par exemple, le System.AppDomain, et les classes System.Reflection.Assembly contiennent des méthodes qui permettent à un hôte de charger un assembly. Les méthodes Load prennent différentes formes : certaines portent le nom d'un assembly, d'autres portent un chemin d'accès complet du système de fichiers vers le fichier contenant le manifeste d'assembly, etc. Ces méthodes permettent de charger des assemblys qui ont déjà été créés et qui sont enregistrés sur le disque.

Par exemple, supposons que l'hôte de serveur d'applications venant d'être décrit permette aux utilisateurs d'écrire des business rules en code managé à charger dans le processus du serveur d'applications et à exécuter. Lorsqu'une demande d'exécution d'une méthode sur une business rule particulière parvient au serveur d'applications, le code d'hébergement du runtime du serveur détermine le domaine dans lequel exécuter le code ou si un nouveau domaine doit être créé. Le code d'hébergement du runtime utilise ensuite une des méthodes Load de l'assembly pour charger l'assembly contenant la business rule et il utilise la réflexion pour exécuter une méthode sur cette business rule. Pour plus d'informations, consultez la documentation de l'espace de noms System.Reflection.

L'espace de noms System.Reflection.Emit propose également des types permettant de créer des assemblys dynamiquement. Le chargement des assemblys de cette manière est utile lorsque l'application est en train de traiter le code de script.

Par exemple, un programme de traitement de texte peut prendre en charge un langage de macro qui permet aux utilisateurs de personnaliser le comportement de l'application. Après avoir chargé le runtime et créé un domaine d'application, le programme de traitement de texte peut compiler des scripts de macro dans le code managé et créer un assembly à l'aide de System.Reflection.Emit. Puis l'assembly créé peut être chargé et exécuté dans le domaine d'application. En fonction du scénario, l'assembly peut n'exister que pendant la durée de vie de l'application (et par conséquent ne jamais être enregistré sur le disque).

Voir aussi

Référence

AppDomain

System.Reflection.Assembly

System.Reflection.Emit

Concepts

Vue d'ensemble de l'hébergement