.NET Core vs ASP.NET Core

171

Qual é exatamente a diferença entre o .NET Core e o ASP.NET Core?

Eles são mutuamente exclusivos? Ouvi dizer que o ASP.NET Core é baseado no .NET Core, mas também pode ser construído na estrutura completa do .NET.

Então, o que exatamente é o ASP.NET Core?

blubberbo
fonte

Respostas:

209

Atualização 2020 : Observe que o ASP.NET Core 3 e superior agora dependem do .NET Core e não podem mais ser usados ​​no .NET Framework. A descrição abaixo é para o ASP.NET Core 1.x-2.x; a separação de camada ainda é verdadeira para o ASP.NET Core 3.0, mas a camada do ASP.NET Core não pode mais ser usada na parte superior do .NET Framework no 3.0+.

O .NET Core é um tempo de execução. Ele pode executar aplicativos criados para isso.

O ASP.NET Core é uma coleção de bibliotecas que formam um Framework para a criação de aplicativos Web. As bibliotecas do ASP.NET Core podem ser usadas no .NET Core e no "Full .NET Framework" (que acompanha o Windows há muitos anos).

A parte confusa é que um aplicativo que usa as bibliotecas e ferramentas do ASP.NET Core é geralmente chamado de "ASP.NET Core Application", que em teoria não diz se foi criado para o .NET Core ou .NET Framework. Portanto, um "aplicativo principal do ASP.NET" também é ".NET Core Application" ou ".NET Framework Application".

Esta imagem mostra a relação das tecnologias envolvidas (retirada desta postagem do blog ) Tecnologias de aplicativos da Web .NET

Aqui você pode ver que o ASP.NET Core é construído "sobre" o .NET Framework e o .NET Core, enquanto o "ASP.NET" (agora conhecido como "ASP.NET clássico") é apenas o .NET Framework.

Martin Ullrich
fonte
22
Então, o que chamamos de ASP clássico? "ASP antigo"? : p
Dan Schnau
1
por isso, se o aplicativo é desenvolvido usando ASP.NET Core , em seguida, no servidor web que precisamos para instalar .NET Core Runtimee ASP.NET Core runtimeou apenas ASP.NET Core runtimeé suficiente
LP13
Depende da versão, a 2.1 será dividida um pouco, mas contanto que você instale os "pacotes de hospedagem" nos servidores, você estará bem. Se você desenvolver para ASP.NET Núcleo em .NET Framework, você ainda precisa do pacote hospedagem para o módulo IIS necessário
Martin Ullrich
3
@DanSchnau, temos "Classic ASP", AKA "ASP.NET Classic" "ASP.NET" e "ASP.NET Core", de modo nenhum conflito em todos os :)
Gouda
@ LP13: Não há "ASP.NET Core Runtime", é apenas um monte de pacotes que não podem ser executados por si só (sem o .NET Core pré-instalado ou enviado como aplicativo independente)
Tseng
43

ASP.NET Core usando .NET Core - todas as dependências são independentes, podem usar a maioria dos pacotes NuGet, não podem usar pacotes específicos do Windows, podem executar no Windows, Linux e Mac.

ASP.NET Core usando o .NET Framework - a maioria das dependências é independente, é executada apenas no Windows, terá acesso a pacotes NuGet específicos do Windows, precisa da versão do .NET Framework direcionada instalada na máquina.

Nathan Alard
fonte
8
Quem nomeia essas coisas? Isso é super confuso.
Nick
1
@ Nick: marketing da Microsoft. Eles têm uma longa história disso. Eles ainda não descobriram a Web - usando substantivos comuns para produtos (não é bom em um mundo de mecanismos de pesquisa em que palavras menos comuns mais específicas são melhores, de preferência palavras únicas que não estão no dicionário).
Peter Mortensen
23

O ASP.NET Core é uma das cargas de trabalho suportadas pelo .NET Core.

De guia .NET Core :

Por si só, o .NET Core inclui um único modelo de aplicativo - aplicativos de console - que é útil para ferramentas, serviços locais e jogos baseados em texto. Modelos de aplicativos adicionais foram criados sobre o .NET Core para estender sua funcionalidade, como:

  • ASP.NET Core
  • Plataforma Universal do Windows do Windows 10 (UWP)
  • Xamarin.Forms
v-andrew
fonte
Esta é uma resposta mais relevante para mim. .Net Core para aplicativo de console, ASP.Net Core para aplicativo da web.
Shawn Zhang
5

O .NET Framework está em sua última versão. Não haverá outro após o 4.8. A Microsoft continuará com o .NET Core. A partir desse momento, você deve preferir o .NET Core em seus projetos.

Sinan Bozkuş
fonte
2

Além disso, gostaria de acrescentar que pode ajudar alguém.

Há algo chamado injeção de middleware no pipeline de solicitação do .NET Core. Se implementado corretamente, isso é muito útil, pois pode interceptar exceções de aplicativos automaticamente e facilita muito o log em um local, em vez de todos os métodos.

rahul
fonte
Você pode adicionar uma ou mais referências / links à sua resposta?
Peter Mortensen