Carregar e executar o código de usuário
O motivo para escrever um host é configurar um ambiente de aplicativo para execução de código de usuário gerenciado.Nesse contexto, o código de usuário significa que qualquer código gerenciado que não seja especificamente uma parte do host.Por exemplo, para o host do Internet Explorer, o código do usuário é o controles gerenciado e um script que compõem as páginas HTML.Em um host de servidor de aplicativos, o código do usuário é o código que contém regras de negócio da empresa que o servidor da aplicação gerencia e executa.
Todo código gerenciado faz parte de um Assembly classe. sistema autônomo resultado, sistema autônomo métodos disponível para carregar e executar código gerenciado são todos baseados em assemblies.Por exemplo, a System.AppDomain, e System.Reflection.Assembly classes contêm métodos que permitem que um host para carregar um assembly. Carga métodos têm várias formas: Alguns tomam um nome de assembly, alguns tomem um caminho de sistema de arquivos completo para o arquivo que contém o manifesto do assembly e assim por diante.Esses métodos são usados para carregar módulos (assemblies) que foram criados anteriormente e salvos em disco.
Por exemplo, suponha que o host de servidor do aplicativo acabamos de descrever permite que os usuários gravar regras de negócio de código gerenciado para ser carregado no processo do servidor de aplicativos e executar.Quando uma solicitação para executar um método em uma regra comercial específico entra em servidor de aplicativos, o código de hospedagem do servidor em tempo de execução determina em qual domínio para executar o código, ou se um novo domínio deve ser criado.O tempo de execução do código de hospedagem, em seguida, usa um do assembly Carga métodos para carregar o assembly que contém os negócios de regra e usa reflexão para executar um método em que regra comercial.Para obter mais informações, consulte a documentação para o System.Reflection espaço para nome.
The System.Reflection.Emit namespace também fornece tipos para criar assemblies dinamicamente. Carregar assemblies desse modo é útil se o aplicativo está processando o código de script.
Por exemplo, um palavra-programa de processamento pode oferecer suporte a uma linguagem de macro com as quais os usuários podem personalizar o comportamento do aplicativo.Depois de carregar o tempo de execução e criar um domínio do aplicativo, o programa de processamento de texto pode compilar scripts de macro em código gerenciado e criar um assembly usando sistema.reflexão.Emit.O assembly criado pode ser carregados para o domínio do aplicativo e executar.Dependendo do cenário exato, o assembly pode existir apenas durante a tempo de vida do aplicativo (ou seja, nunca ser salvos em disco).