Share via


Visão geral de hospedagem.

.Aplicativos do NET Framework automaticamente hospedam o common language runtime foram construídos. Se você compilar seu código gerenciado como um assembly. exe, o runtime é iniciado automaticamente pelo mscoree quando o arquivo. exe é executado. Também podem aproveitar os aplicativos não gerenciados que hospedam o common language runtime. O runtime fornece uma estrutura para estender os aplicativos, como o Internet Information Services (IIS) e o SQL Server 2005.

Ele é invocado automaticamente, como com os assemblies gerenciados. exe ou carregado usando a API de hospedagem não gerenciada, um.O aplicativo do NET Framework requer um trecho de código chamado um runtime host. O runtime host carrega o runtime em um processo, cria os domínios de aplicativo dentro do processo e carrega e executa o código do usuário dentro desses domínios de aplicativo.

A.NET Framework versão 2.0 permite que aplicativos que hospedam o CLR para controlar vários recursos do runtime. Você pode substituir alguns recursos, como, por exemplo, a alocação de memória e carregar, com implementações personalizadas do assembly. Controlar o comportamento de outros recursos, recebam notificações de eventos no runtime e gerenciar domínios de aplicativo.

O .NET Framework versão 4 consolida várias da versão 2.0, hospedagem de APIs. Além disso, .NET Framework 4 oferece suporte à ativação do host de tempo de execução lado a lado, processo e fornece outros aprimoramentos.

Esta visão geral contém as seções a seguir:

  • Inicializando e iniciando um Runtime hospedado

  • .Interfaces de gerenciamento de hospedagem do NET Framework versão 2.0

  • .Interfaces de gerenciamento de hospedagem do NET Framework versão 4

  • Gerentes de domínio de aplicativo

  • Tópicos relacionados

  • Referência

Inicializando e iniciando um Runtime hospedado

O .NET Framework 4 API de hospedagem oferece o CLRCreateInstance função, que pode retornar a ICLRMetaHost interface. Você pode então chamar o GetRuntime método nesta interface para obter um determinado ICLRRuntimeInfo interface, dada uma determinada versão do CLR. Esse procedimento substitui o CorBindToRuntimeEx o método usado pelo.NET Framework 2.0 API de hospedagem.

A.API de hospedagem do NET Framework versão 2.0 fornece a CorBindToRuntimeEx a função para inicializar o runtime. Você pode escolher qual versão do runtime para carregar, mas um processo pode hospedar apenas uma versão. Se a versão 2.0, 3.0 ou 3.5 é carregado, a função retorna o ICLRRuntimeHost interface, que é usado para iniciar o tempo de execução e a execução de código gerenciado.

A.NET Framework versão fornece a API de hospedagem de 1 a ICorRuntimeHost interface.

Iniciar o runtime é discutida Carregando o Common Language Runtime em um processo, e a execução de código gerenciado é discutido em Transição para hospedagem de código gerenciado.

Voltar ao topo

.Interfaces de gerenciamento de hospedagem do NET Framework 2.0

No.NET Framework 2.0, o CLR fornece hospedagem interfaces de gerenciamento para controlar vários recursos do runtime hospedado, permite que o aplicativo de host implementar outras interfaces de gerenciamento fornecidas pelo runtime e permite implementar suas próprias interfaces de gerenciamento de hospedagem.

Para fins de detecção, as interfaces de gerenciamento se encaixam em duas amplas categorias:

  • Interfaces de gerenciamento que implementa o host e o tempo de execução detecta através do IHostControl interface.

  • Interfaces de gerenciamento que o CLR fornece e o host descobre através do ICLRControl interface.

A tabela a seguir agrupa as interfaces pelo tipo de funcionalidade que eles fornecem. A interface mais importante dentro de cada grupo é listada primeiro.

Group

Função

Interfaces

Gerenciamento de carregamento de assembly

Permite que o host personalizar os locais dos quais assemblies são carregados, que as versões da maneira como são gerenciadas e os formatos a partir do qual os assemblies podem ser carregados. Por exemplo, assemblies podem ser carregados a partir de um banco de dados em vez de arquivos no disco rígido.

O CLR usa a IHostControl interface para descobrir se um host implementa este grupo de interfaces.

IHostAssemblyManager

IHostAssemblyStore

ICLRAssemblyReferenceList

ICLRAssemblyIdentityManager

Gerenciamento de diretiva

Permite que o host especificar que as falhas do programa de forma são manipuladas, para dar suporte aos requisitos de confiabilidade diferentes.

O host usa a ICLRControl interface para acessar o Gerenciador de tempo de execução e implementa IHostPolicyManager retornos de chamada para notificações de falha do tempo de execução.

ICLRPolicyManager

IHostPolicyManager

Gerenciamento de proteção de host

Permite que o host para impor seu próprio modelo de programação, evitando o uso de tipos especificados ou membros. Por exemplo, o host pode não permitir o uso de threading, primitivos de sincronização.

O host usa a ICLRControl interface para acessar o Gerenciador de tempo de execução.

ICLRHostProtectionManager

Gerenciamento de memória

Permite que o host a alocação de memória de controle, fornecendo substituições para as funções de sistema operacional que o CLR usa para alocar memória.

O CLR usa a IHostControl interface para descobrir se um host implementa este grupo de interfaces.

IHostMemoryManager

IHostMAlloc

ICLRMemoryNotificationCallback

Gerenciamento de coleta de lixo

Permite que o host de implementar métodos para receber notificação de início e fim da coleta de lixo. Permite que o host iniciar coletas, para coletar estatísticas e para especificar algumas características da coleção.

O host usa a ICLRControl interface para acessar o Gerenciador de tempo de execução. O CLR usa a IHostControl interface para descobrir se um host implementa este grupo de interfaces.

IHostGCManager

ICLRGCManager

Gerenciamento de depuração.

Permite que o host descobrir se um depurador anexado, para fornecer informações adicionais de depuração e personalizar as tarefas de depuração.

O host usa a ICLRControl interface para acessar o Gerenciador de tempo de execução.

ICLRDebugManager

Gerenciamento de eventos do CLR

Permite que um host registrar a notificação dos eventos enumerados pelo EClrEvent.

O host usa a ICLRControl interface para acessar o Gerenciador de tempo de execução e implementa seus manipuladores de eventos usando o IActionOnCLREvent interface.

ICLROnEventManager

IActionOnCLREvent

Gerenciamento de tarefas

Permite que o host ser notificado sempre que um segmento faz uma transição entre código gerenciado e. Permite que o host de controle de afinidade de segmento, quando as tarefas são iniciadas e interrompidas e como eles estão programados.

O CLR usa a IHostControl interface para descobrir se um host implementa este grupo de interfaces.

IHostTaskManager

ICLRTaskManager

IHostTask

ICLRTask

Gerenciamento do pool de threads

Permite que o host implementar seu próprio pool de segmentos para o tempo de execução usar.

O CLR usa a IHostControl interface para descobrir se um host implementa este grupo de interfaces.

IHostThreadPoolManager

Gerenciamento de sincronização

Permite que o host implementar seus próprio primitivos de sincronização para o runtime para usar. O host pode fornecer eventos, seções críticas e semáforos.

O CLR usa a IHostControl interface para descobrir se um host implementa este grupo de interfaces.

IHostSyncManager

ICLRSyncManager

IHostCrst

IHostManualEvent

IHostAutoEvent

IHostSemaphore

Gerenciamento de conclusão de e/S

Permite que o host implementar sua própria implementação de entrada/saída assíncrona.

O CLR usa a IHostControl interface para descobrir se um host implementa este grupo de interfaces.

IHostIoCompletionManager

Observação

As interfaces de hospedagem para versões anteriores do runtime são documentadas na .NET Framework 1.0 e 1.1 Interfaces hospedagem.

Voltar ao topo

.Interfaces de gerenciamento de hospedagem do NET Framework 4

O .NET Framework 4 consolida o 2.0 API de hospedagem dentro as seguintes interfaces:

  • ICLRMetaHost fornece métodos que retornam uma versão específica do CLR, listam todos os CLRs instalados, listam de todos os tempos de execução em processo, retornam a interface de ativação e descubram a versão do CLR usada para compilar um assembly.

  • ICLRMetaHostPolicy fornece a GetRequestedRuntime método que fornece uma interface CLR com base nos critérios de uma diretiva, gerenciado de arquivo do assembly, versão e configuração.

  • ICLRRuntimeInfo fornece métodos que retornam informações sobre um tempo de execução específico, incluindo a versão, o diretório e o status de carga.

  • ICLRStrongName versão 2.0 do CLR todos os grupos de strong naming globais funções estáticas que são exportados pelo mscoree (exceto StrongNameErrorInfo) em uma única interface. Todos os ICLRStrongName métodos retornam HRESULTS COM padrão.

Essas interfaces encapsular e substitui o.NET Framework 2.0 interfaces de hospedagem.

Voltar ao topo

Gerentes de domínio de aplicativo

Para programas que hospedam o common language runtime, domínios de aplicativo oferecem maior confiabilidade por assemblies isolando uns dos outros. Assemblies podem ser descarregados do processo pelo descarregamento de domínios de aplicativo.

Para gerenciar vários domínios de aplicativo, o.NET Framework fornece a AppDomainManager classe como uma classe base da qual você pode derivar seus próprios gerenciadores de domínio de aplicativo. O Gerenciador de domínio de aplicativos que você cria para o aplicativo de host é essencialmente uma extensão do host, no código gerenciado. Ele é carregado automaticamente em cada domínio de aplicativo criado no seu processo.

O Gerenciador de domínios de aplicativo pode melhorar o desempenho eliminando algumas transições entre código gerenciado e. Ele pode receber a notificação da criação de novos domínios de aplicativo e proporcionam a oportunidade de configurá-los. O Gerenciador de domínio do aplicativo também fornece uma maneira para um host não gerenciado chamar código gerenciado.

Voltar ao topo

Tópicos relacionados

Título

Descrição

Carregando o Common Language Runtime em um processo

Descreve como carregar o runtime em um processo, inicializá-lo e definir valores para especificar o seu comportamento.

Descarregamento de domínios e encerrando um processo.

Descreve como descarregar domínios de aplicativo e desligar um processo.

A definição de objetos e a diretiva de segurança baseada em função

Descreve como definir uma diretiva de segurança baseada em função.

A configuração de diretiva de segurança de nível de domínio de aplicativo

Descreve como definir uma diretiva de segurança de nível de domínio de aplicativo.

Carregar e executar o código do usuário

Descreve como carregar e executar o código do usuário.

Criando e configurando os domínios de aplicativo

Descreve como criar e configurar domínios de aplicativo no qual executar o código do usuário.

Determinar os limites de domínio de aplicativo

Descreve como determinar onde definir limites para um novo domínio de aplicativo.

Transição para hospedagem de código gerenciado

Descreve como fazer a transição do código não gerenciado para executar gerenciado que hospeda o código e o código do usuário.

Arquivos de configuração de ativação

Descreve como ativar uma versão do tempo de execução diferente daquele especificado no arquivo de configuração do aplicativo.

Hosts em tempo de execução

Descreve hosts que acompanham o.NET Framework.

Domínios de Aplicativo

Descreve as construções que hosts usam para isolar o código em execução dentro de um processo.

Execução Lado a Lado

Descreve como executar várias versões de um aplicativo, um componente ou o tempo de execução.

.NET Framework 4 Interfaces de hospedagem

Descreve as interfaces não gerenciadas para hospedar o runtime do.NET Framework versão 4.

.NET Framework 2.0 Interfaces de hospedagem

Descreve as interfaces não gerenciadas para hospedar o runtime do.NET Framework versão 2.0.

Voltar ao topo

Referência

System.AppDomainManager

Voltar ao topo