Desenvolvido por | Microsoft |
---|---|
Última versão | 4,8 (18 de abril de 2019) |
Meio Ambiente | Windows NT 4.0 , Windows 98 e superior |
Modelo | Plataforma |
Licença | MS-EULA , BCL sob licença de fonte compartilhada |
Local na rede Internet | www.microsoft.com/net |
Microsoft .NET (pronuncia-se "dot net") é o nome dado a uma coleção de produtos e tecnologias de computador da empresa Microsoft para tornar os aplicativos facilmente portáveis na Internet. O objetivo é fornecer um servidor web local para gerenciar serviços e evitar a terceirização de dados privados para um serviço web de armazenamento ou hospedagem na web de terceiros.
A plataforma .NET é baseada em várias tecnologias:
Versão | Número da versão | Versão C # | Data de lançamento | Estúdio visual | Padrão no Windows |
---|---|---|---|---|---|
1.0 | 1.0.3705.0 | C # 1.0 | 13 de fevereiro de 2002 | Visual Studio .NET 2002 | Versões do Windows XP Tablet e Media Center |
1,1 | 1.1.4322.573 | C # 1.1 | 24 de abril de 2003 | Visual Studio .NET 2003 | Windows Server 2003 |
2.0 | 2.0.50727.42 | C # 2.0 | 7 de novembro de 2005 | Visual Studio 2005 | Windows Server 2003 R2 |
3,0 | 3.0.4506.30 | C # 3.0 | 6 de novembro de 2006 | Windows Vista, Windows Server 2008 | |
3,5 | 3.5.21022.8 | C # 3.0 | 19 de novembro de 2007 | Visual Studio 2008 | Windows 7, Windows Server 2008 R2 |
4,0 | 4.0.30319.1 | C # 4.0 | 12 de abril de 2010 | Visual Studio 2010 | Windows Server 2008 R2 SP1 |
4,5 | 4,5 | C # 5.0 | 12 de setembro de 2012 | Visual Studio 2012 | Windows 8, Windows Server 2012 |
4.5.1 | 4.5.50938.18408 | C # 5.0 | 17 de outubro de 2013 | Visual Studio 2013 | Windows 8.1, Windows Server 2012R2 |
4,6 | 4.6.00081 | C # 6.0 | 20 de julho de 2015 | Visual Studio 2015 | Windows 10, Windows Server 2016 |
4.6.2 | C # 7.0 | março de 2017 | Visual Studio 2017 | Windows 10 | |
4,7 | C # 7.1 | agosto de 2017 | Visual Studio 2017 v15.3 | Windows 10 | |
4.7.1 | C # 7.2 | novembro de 2017 | Visual Studio 2017 v15.5 | Windows 10 | |
4.7.2 | C # 7.3 | Maio de 2018 | Visual Studio 2017 v15.7 | Windows 10 | |
4,8 | Maio de 2019 | Windows 10 |
A estrutura .Net é baseada na Common Language Infrastructure (ou CLI). Seu objetivo é fornecer uma linguagem independente de plataforma para desenvolvimento e execução. Inclui funções para tratamento de erros, coleta de lixo , segurança e interoperabilidade com objetos COM. A implementação da CLI é chamada de Microsoft Common Language Runtime (ou CLR).
Consulte também: Dynamic Language Runtime e High Level Virtual Machine .
CLR e segurançaA segurança é gerenciada por CAS ( Code Access Security ). O CAS é baseado em um sistema de evidências associado a uma determinada assembléia . A "prova" é a origem da montagem (instalação local, download da Internet ou de uma Intranet, etc.). O CAS usa essa evidência para determinar as permissões concedidas ao código. Um código pode solicitar autorização para o código que chama. O pedido de autorização sabe quando o CLR atravessa a pilha de chamadas: cada assembly de cada método na pilha é verificado. Se pelo menos um desses assemblies não tiver a permissão solicitada, uma exceção será lançada.
Quando um assembly é carregado, o CLR executa vários testes, incluindo validação e verificação. Durante a validação, o CLR verifica se o assembly contém código e metadados válidos. Em seguida, ele verifica se as tabelas internas estão corretas. A verificação verifica se o código não está fazendo nada perigoso. O código inseguro só será executado se o assembly tiver a permissão 'ignorar verificação' .
O .NET Framework usa appdomains (domínio de aplicativo) como um mecanismo para isolar o código de um processo. Um appdomainpode ser criado e o código carregado ou descarregado de um, appdomainindependentemente dos outros appdomain. Os appdomains também podem ser configurados independentemente com diferentes privilégios de segurança. Isso pode ajudar a melhorar a segurança de um aplicativo, separando o código potencialmente perigoso do resto. No entanto, o desenvolvedor deve separar o aplicativo em vários subdomínios, o que não é responsabilidade do CLR.
CLR e gerenciamento de memóriaO CLR cuida do gerenciamento de memória (alocação e liberação). A alocação de memória para instâncias de tipos .NET (objetos) é feita continuamente a partir do heap . Enquanto houver uma referência a um objeto (direta ou indireta por meio de um gráfico ), o objeto é considerado em uso pelo CLR. Assim que não houver mais referência a um objeto ( ou seja , ele não pode mais ser alcançado ou usado), o coletor de lixo em inglês : Garbage Collector , que é executado periodicamente em um processo leve diferente de um aplicativo, libera o objeto da memória.
A coleta de lixo do .NET não é determinística: ela só é executada após uma certa quantidade de memória ter sido alocada ou se houver uma falha de memória. Não há como determinar quando as condições para acionar o coletor de lixo são atendidas. Cada aplicativo .NET possui um conjunto de elementos raiz que são ponteiros mantidos pelo CLR e apontam para objetos no heap gerenciado. Isso inclui referências a objetos estáticos, àqueles definidos como variáveis locais, aos parâmetros definidos no escopo atual do código e, finalmente, aos registros do processador. Quando o coletor de lixo é executado, ele suspende o aplicativo e, para cada objeto referenciado na raiz, enumera recursivamente, usando metadados e reflexão .NET , todos os objetos que pode alcançar e as marcas. Em seguida, ele enumera todos os objetos no heap (que foram inicialmente alocados continuamente) usando reflexão; todos os objetos que não foram marcados são considerados resíduos. Esta é a fase de marcação. No entanto, esse processo deixa pedaços de memória livre entre os objetos ainda referenciados; esses objetos são compactados usando memcpy para tornar o espaço de memória usado contínuo novamente. Os endereços dos ponteiros são atualizados de acordo. Após essas operações, o aplicativo retoma sua execução.
Na realidade, o coletor de lixo é baseado em um sistema de geração . Cada objeto é atribuído a uma geração ; os objetos recém-criados pertencem à geração 0 . Os itens que permanecem após a primeira passagem da Coleta de Lixo são promovidos para a Geração 1 e os itens que permanecem após uma segunda passagem são promovidos para a Geração 2 (nível máximo). Objetos com alto nível de geração são examinados com menos frequência pelo coletor de lixo do que objetos com baixo nível de geração. Este algoritmo espera melhorar a eficiência do coletor de lixo, pois os itens antigos tendem a ter uma vida útil mais longa do que os itens mais novos.