Definição – o que significa domínio de aplicativo?
Um domínio de aplicativo é um limite de isolamento lógico criado em torno de aplicativos .NET para que os aplicativos não acessem ou afetem uns aos outros. É um processo leve, com seu próprio conjunto de códigos, dados e definições de configuração. Os domínios de aplicativo são criados pelos hosts de tempo de execução, que são chamados pelo common language runtime (CLR) para carregar os aplicativos que precisam ser executados.
Antes do .NET, o limite de isolamento entre os aplicativos eram os processos nos quais eles eram carregados. Cada processo tem sua própria memória virtual privada e não pode acessar a memória de outro processo diretamente. O domínio do aplicativo possui recursos semelhantes aos de um processo.
Os domínios de aplicativo têm os seguintes recursos:
- Utilização ideal dos recursos do sistema usando menos processos para executar vários aplicativos.
- Confiabilidade usando o isolamento de tarefas em situações onde os dados não podem ser compartilhados e para tarefas instáveis que precisam ser descarregadas sem afetar o processo.
- Melhor eficiência ao executar processos de longa duração que raramente usam grandes extensões com memória ideal.
- Segurança do aplicativo ao restringir o acesso direto ao código em execução em um aplicativo a partir do código ou dos recursos de outro aplicativo.
- Controle de segurança especificando detalhes de configuração para cada domínio de aplicativo.
Definirtec explica o domínio do aplicativo
O domínio do aplicativo difere na maneira como o CLR carrega e executa vários aplicativos .NET em um único processo. Não permite acesso direto à memória dos aplicativos carregados. É gerenciado pelo CLR do .NET Framework, enquanto um processo é gerenciado pelo sistema operacional. O CLR fornece isolamento de falhas entre domínios de aplicativos com menos sobrecarga do que processos, devido ao seu recurso inerente de segurança de tipo verificável de código gerenciado. Além disso, vários threads podem residir em um domínio de aplicativo, eles são livres para cruzar os limites do domínio de aplicativo.
Por exemplo, ASP.NET é um host de tempo de execução que cria vários domínios de aplicativo para cada usuário que acessa um site. Eles também podem ser criados e configurados para aplicativos que precisam isolar o código ou carregar extensões apenas durante o uso. Esse fato torna os domínios de aplicativo úteis em situações em que plug-ins e outros códigos não confiáveis são usados. Eles também são úteis para minimizar o conjunto de trabalho de aplicativos que usam DLLs grandes.
Para permitir a comunicação entre objetos em diferentes domínios de aplicativo, um dos três tipos de objetos a seguir é usado:
- Marshal-By-Value: Cópia completa do objeto passado para o domínio do aplicativo de chamada. Isso é usado quando o estado do objeto pode ser movido por motivos de desempenho.
- Marshal-By-Reference-Reference (MBR): Um proxy do objeto é passado para o cliente; usado quando o estado do objeto deve permanecer dentro do domínio do aplicativo.
- Vinculado ao contexto: objeto MBR usado em domínios ou no contexto de seu próprio domínio de aplicativo.
Esta definição foi escrita no contexto do .NET