Carregar e executar o código do usuário

O motivo para escrever um host é configurar um ambiente de aplicativo no qual executar o código de usuário gerenciado. Nesse contexto, o código de usuário significa que qualquer código gerenciado, não é uma parte específica do host. Por exemplo, para o host do Internet Explorer, o código do usuário é o script que compõem as páginas HTML e controles gerenciados. Em um host de servidor de aplicativo, o código do usuário é o código que contém as regras de negócios da empresa que o servidor da aplicação gerencia e executa.

Todo código gerenciado é parte de um Assembly classe. Como resultado, os métodos disponíveis para carregar e executar código gerenciado são todos baseados em assemblies. Por exemplo, o System.AppDomain, e System.Reflection.Assembly classes contêm métodos que permitem que um host carregar um assembly. Carga métodos vêm de várias formas: Alguns levam um nome de assembly, alguns levar a um caminho de sistema de arquivo completo para o arquivo que contém o manifesto do assembly e assim por diante. Esses métodos são usados para carregar assemblies que criou anteriormente e são salvos em disco.

Por exemplo, suponha que o host do servidor de aplicativo acabamos permite que os usuários escrever as regras de negócios de código gerenciado para ser carregado no processo do servidor de aplicativo e executar. Quando uma solicitação para executar um método em uma determinada regra comercial no servidor de aplicativos, o código de hospedagem do servidor em tempo de execução determina qual domínio para executar o código, ou se um novo domínio deve ser criado. Tempo de execução do código de hospedagem, em seguida, usa um assembly carregar métodos para carregar o assembly que contém a regra de negócio e a usa reflexão para executar um método em que regra de negócio. Para obter mais informações, consulte a documentação para o System.Reflection namespace.

O System.Reflection.Emit namespace também fornece tipos para criar dinamicamente assemblies. Carregar assemblies dessa maneira é útil se o aplicativo está processando o código de script.

Por exemplo, um programa de processamento de texto pode oferecer suporte a uma linguagem de macro com o qual os usuários podem personalizar o comportamento do aplicativo. Após carregar o tempo de execução e criação de um domínio de aplicativo, o programa de processamento de texto pode compilar os scripts de macro em código gerenciado e criar um assembly usando System.Reflection.Emit. O assembly criado pode ser carregado em um domínio do aplicativo e executar. Dependendo do cenário exato, o assembly só pode existir para o tempo de vida do aplicativo (ou seja, nunca ser salvos em disco).

Consulte também

Referência

AppDomain

System.Reflection.Assembly

System.Reflection.Emit

Conceitos

Visão geral de hospedagem.