Qual é a diferença entre o .NET Core, o .NET Framework e o Xamarin?

362

A Microsoft agora possui o .NET Core, o .NET Framework e o Xamarin (Mono) em sua família .NET.

Parece haver muita sobreposição aqui. Qual é a diferença entre esses tipos de .NET? Quando devo optar por usar o .NET Core no meu projeto, em vez do .NET Framework ou Xamarin?

MeeChao
fonte
2
Boa pergunta! Aqui está um artigo complementar sobre a estrutura .net e o núcleo .net. pogsdotnet.blogspot.sg/2017/11/… Obrigado!
precisa

Respostas:

269

Você deve usar o .NET Core, em vez do .NET Framework ou Xamarin, nos 6 cenários típicos a seguir, de acordo com a documentação aqui .

1. Necessidades entre plataformas

Claramente, se seu objetivo é ter um aplicativo (web / serviço) capaz de rodar em plataformas (Windows, Linux e MacOS), a melhor opção no ecossistema .NET é usar o .NET Core como seu tempo de execução (CoreCLR ) e bibliotecas são multiplataforma. A outra opção é usar o Projeto Mono.

Ambas as opções são de código aberto, mas o .NET Core é direta e oficialmente suportado pela Microsoft e terá um investimento pesado no futuro.

Ao usar o .NET Core em plataformas, a melhor experiência de desenvolvimento existe no Windows com o Visual Studio IDE, que suporta muitos recursos de produtividade, incluindo gerenciamento de projetos, depuração, controle de origem, refatoração, edição avançada, incluindo Intellisense, testes e muito mais. Mas o desenvolvimento rico também é suportado usando o Visual Studio Code no Mac, Linux e Windows, incluindo intellisense e depuração. Até editores de terceiros, como Sublime, Emacs, VI e outros, funcionam bem e podem obter conhecimento do editor usando o projeto Omnisharp de código aberto.

2. Microsserviços

Ao criar um sistema orientado a microsserviços, composto por vários microsserviços independentes, escalonáveis ​​dinamicamente, com estado ou sem estado, a grande vantagem que você tem aqui é que você pode usar diferentes tecnologias / estruturas / idiomas em um nível de microsserviço. Isso permite que você use a melhor abordagem e tecnologia por microáreas em seu sistema; portanto, se você deseja criar microsserviços de alto desempenho e escalabilidade, use o .NET Core. Eventualmente, se você precisar usar qualquer biblioteca do .NET Framework que não seja compatível com o .NET Core, não há problema, poderá criar esse microsserviço com o .NET Framework e, no futuro, poderá substituí-lo pelo .NET Testemunho.

A plataforma de infraestrutura que você poderia usar é grande. Idealmente, para sistemas de microsserviço grandes e complexos, você deve usar o Azure Service Fabric. Mas para microsserviços sem estado, você também pode usar outros produtos, como o Serviço de Aplicativo do Azure ou o Azure Functions.

Observe que, a partir de junho de 2016, nem todas as tecnologias no Azure suportam o .NET Core, mas o suporte ao .NET Core no Azure aumentará drasticamente agora que o .NET Core for lançado no RTM.

3. Sistemas com melhor desempenho e escalabilidade

Quando o seu sistema precisa do melhor desempenho e escalabilidade possíveis para obter a melhor capacidade de resposta, não importa quantos usuários você tenha, é aí que o .NET Core e o ASP.NET Core realmente brilham. Quanto mais você puder fazer com a mesma quantidade de infraestrutura / hardware, mais rica será a experiência que terá para seus usuários finais - a um custo menor.

Os dias das melhorias no desempenho da lei de Moore para CPUs únicas não se aplicam mais; no entanto, você precisa fazer mais enquanto seu sistema está crescendo e precisa de maior escalabilidade e desempenho para os usuários mais exigentes do dia a dia, que estão crescendo exponencialmente em números. Você precisa se tornar mais eficiente, otimizar em qualquer lugar e escalar melhor entre os clusters de máquinas, VMs e núcleos de CPU. Não é apenas uma questão de satisfação do usuário; também pode fazer uma enorme diferença no custo / TCO. É por isso que é importante buscar desempenho e escalabilidade.

Como mencionado, se você pode isolar pequenos pedaços do seu sistema como microsserviços ou qualquer outra abordagem pouco acoplada, será melhor, pois você poderá não apenas evoluir cada pequeno pedaço / microsserviço de forma independente e ter um melhor desempenho a longo prazo. agilidade e manutenção, mas você também poderá usar qualquer outra tecnologia no nível de microsserviço se o que você precisar fazer não for compatível com o .NET Core. E, eventualmente, você poderá refatorá-lo e trazê-lo para o .NET Core sempre que possível.

4. Desenvolvimento de estilo de linha de comando para Mac, Linux ou Windows.

Essa abordagem é opcional ao usar o .NET Core. Você também pode usar o IDE do Visual Studio completo, é claro. Mas se você é um desenvolvedor que deseja desenvolver com editores leves e uso pesado da linha de comando, o .NET Core foi projetado para CLI. Ele fornece ferramentas simples de linha de comando disponíveis em todas as plataformas suportadas, permitindo que os desenvolvedores construam e testem aplicativos com uma instalação mínima em máquinas de desenvolvedor, laboratório ou produção. Editores como o Visual Studio Code usam as mesmas ferramentas de linha de comando para suas experiências de desenvolvimento. E os IDE, como o Visual Studio, usam as mesmas ferramentas da CLI, mas as escondem por trás de uma rica experiência em IDE. Agora, os desenvolvedores podem escolher o nível em que desejam interagir com a cadeia de ferramentas, da CLI ao editor e ao IDE.

5. Precisa lado a lado das versões do .NET por nível de aplicativo.

Se você quiser instalar aplicativos com dependências em diferentes versões de estruturas no .NET, precisará usar o .NET Core, que fornece 100% lado a lado, conforme explicado anteriormente neste documento.

6. Aplicativos do Windows 10 UWP .NET.

Além disso, você também pode querer ler:

  1. Quando NÃO devo usar o .NET Core?
  2. Quando ainda devo usar o .NET Framework 4.x, em vez do .NET Core?
  3. Quando devo usar o Xamarin, em vez do .NET Core?
Fiona Bi
fonte
17
Por que o asp.net Core é mais eficiente? Por que é melhor quando você está construindo microsserviços?
Juan Zamudio
4
Agora o Visual Studio para Mac também está disponível. Portanto, mais um ponto positivo em relação ao .NET Core. visualstudio.com/vs/visual-studio-mac
Husyn 11/17/17
8
Seus links estão quebrados
shaneparsons
2
As versões do framework @JuanZamudio são camadas monolíticas, cada uma dependente da versão imediatamente anterior, em uma cadeia de dependência da versão 2.0 que substituiu totalmente a 1.1. Como resultado, se você usar qualquer coisa do 4.5, implicitamente dependerá de tudo que voltará ao 2.0. A estrutura Core é mais sobre refatoração de dependências para eliminar bagagem irrelevante do que reescrever a API, que é praticamente inalterada, mas não totalmente. Algumas coisas também foram massivamente simplificadas, como o EF Core.
quer
Obrigado pela resposta descritiva
Tolga Kartal
171

É assim que a Microsoft explica:

.NET Framework, .NET Core, Xamarin

.NET Framework é o sabor "completo" ou "tradicional" do .NET distribuído com o Windows. Use isso quando estiver criando um aplicativo Windows ou UWP de área de trabalho ou trabalhando com o ASP.NET 4.6 ou superior.

O .NET Core é um .NET multiplataforma que roda no Windows, Mac e Linux. Use isso quando desejar criar aplicativos da Web ou de console que possam ser executados em qualquer plataforma, inclusive nos contêineres do Docker. No momento, isso não inclui aplicativos UWP / desktop.

O Xamarin é usado para criar aplicativos móveis que podem ser executados em dispositivos iOS, Android ou Windows Phone.

O Xamarin geralmente roda em cima do Mono , que é uma versão do .NET que foi criada para oferecer suporte a várias plataformas antes que a Microsoft decidisse oficialmente usar a plataforma cruzada com o .NET Core. Como o Xamarin, a plataforma Unity também roda em cima do Mono.


Um ponto comum de confusão é onde o ASP.NET Core se encaixa. O ASP.NET Core pode ser executado sobre o .NET Framework (Windows) ou o .NET Core (plataforma cruzada), conforme detalhado nesta resposta: Diferença entre o ASP. NET Core (.NET Core) e ASP.NET Core (.NET Framework)

Nate Barbettini
fonte
3
Sempre que alguém diz que o .NET Core é multiplataforma, um novo desenvolvedor fica confuso. O '.NET Core' suporta apenas UWP + ASP.NET Core e o ASP.NET Core é multiplataforma, o UWP não.
Hassan Tareq
@HassanTareq Isso não está correto. O .NET Core refere-se ao tempo de execução e às bibliotecas que podem ser executadas no Windows, Mac ou Linux. O ASP.NET Core é multiplataforma porque o .NET Core é multiplataforma.
Nate Barbettini
Seria útil para os novatos se você mencionar que, embora o núcleo .Net ( tempo de execução e bibliotecas ) seja multiplataforma, não podemos usar o aplicativo UWP no Mac / Linux. UWP não é multi-plataforma, que se espera ser UWP alternativa cruzada plataforma de WPF (Xamarin.Forms é)
Hassan Tareq
@HassanTareq Boa sugestão, editei minha resposta.
Nate Barbettini
11
O Xamarin Forms agora é executado em quase tudo, desde uma base de código. Área de trabalho UWP do Windows, área de trabalho WPF, MacOS, iOS, Android e Tizen (TVs). O padrão é direcionar o .NET Standard a partir da implementação do Core. Bons tempos!
Sean Anderson
35

Você pode consultar nesta linha - Diferença entre o ASP.NET Core (.NET Core) e o ASP.NET Core (.NET Framework)

.NET Framework, .NET Core, Xamarin

Xamarin não é um debate. Quando você deseja criar aplicativos móveis (iOS, Android e Windows Mobile) usando C #, o Xamarin é sua única opção.

O .NET Framework suporta aplicativos Windows e Web. Hoje, você pode usar o Windows Forms, WPF e UWP para criar aplicativos Windows no .NET Framework. O ASP.NET MVC é usado para criar aplicativos da Web no .NET Framework.

O .NET Core é a nova estrutura de código aberto e de plataforma cruzada para criar aplicativos para todos os sistemas operacionais, incluindo Windows, Mac e Linux. O .NET Core suporta apenas UWP e ASP.NET Core. O UWP é usado para criar o Windows 10 para Windows e aplicativos móveis. O ASP.NET Core é usado para criar aplicativos da Web baseados em navegador.

Para obter mais detalhes, consulte estes links
https://blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap/ https://docs.microsoft.com/en-us/dotnet/articles / padrão / escolhendo-núcleo-estrutura-servidor

logeshpalani98
fonte
12
  1. .NET é o ecossistema baseado na linguagem c #
  2. O .NET Standard é o padrão (em outras palavras, a especificação) do .NET Ecosystem.

.Net Core Class Library é construído sobre o .Net Standard . NET padrão você pode fazer único projeto de classe biblioteca que não pode ser executado independente e deve ser referenciado por outro .NET Núcleo ou .NET Framework project.If executável que você deseja implementar uma biblioteca que é portátil para o .Net Framework , .Net Core e Xamarin , escolha uma .Net Standard Library

  1. O .NET Framework é um framework baseado no .NET e suporta aplicativos Windows e Web

(Você pode criar um projeto executável (como aplicativo do console ou aplicativo ASP.NET) com o .NET Framework

  1. O ASP.NET é uma tecnologia de desenvolvimento de aplicativos da Web criada sobre o .NET Framework
  2. O .NET Core também é uma estrutura baseada no .NET .

É a nova estrutura de código aberto e de plataforma cruzada para criar aplicativos para todos os sistemas operacionais, incluindo Windows, Mac e Linux.

  1. O Xamarin é uma estrutura para desenvolver um aplicativo móvel de plataforma cruzada ( iOS, Android e Windows Mobile ) usando C #

Suporte à implementação do .NET Standard [azul] e plataforma mínima viável para suporte completo do .NET Standard (mais recente: [ https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation- suporte] )

Razib Hossain
fonte
Vote para baixo na tabela "Histórico de versões". Não é o "Histórico de versões" de .net / standard ou core que você reproduziu. São as versões mínimas viáveis ​​de plataforma que você pode usar se quiser corresponder a uma versão padrão específica do .Net. EG: se você quiser apoiar .NET padrão 1.4 na Full NET, a versão mais baixo que você pode usar é 4.6.1
shawty
Abaixo Vote removido, agora que você já atualizado e documentado a sua resposta corretamente :-)
shawty
Acho que vou apenas desenvolver na Apple ...
Richard Hammond
7

O .NET 5 será uma versão unificada de todas as variantes do .NET a partir de novembro de 2020, portanto, não será mais necessário escolher entre as variantes. insira a descrição da imagem aqui

yanlend
fonte
11
É mentira. O .NET Core não oferece suporte ao WPF / WinForms no Linux!
Vincent
Isso é verdade, mas outras variantes do .NET também não são compatíveis. A escolha de uma variante do .NET se foi, o que é uma coisa boa.
yanlend
1

O .NET Core é a versão atual do .NET que você deveria estar usando agora (mais recursos, bugs corrigidos etc.)

O Xamarin é uma plataforma que fornece soluções para problemas móveis entre plataformas codificados em C #, para que você não precise usar o Swift separadamente para o IOS e o mesmo para o Android.

Marto99
fonte
2
Eu diria que o .Net Core é o que você deve usar se precisar executar no Linux ou Linux e Windows. Mas você também pode defender o Mono, eu acho. Certamente não possui mais recursos. Por definição, são apenas os bits "principais", não possui nenhum dos bits somente do Windows, portanto, menos recursos. E eu estou supondo, mas parece improvável que o .Net Core tenha menos bugs. O .Net Framework está presente no mundo há quase duas décadas. Eu imagino que seja bastante duro nesse momento. Mas isso é apenas um palpite.
21819 Jason Boyd
Certamente tem mais recursos novos, eles adicionaram recentemente novas classes que não serão adicionadas ao .NET 4.8. Eles também portaram o WPF e o WinForms. Na verdade, parece que o .NET Core poderia substituir o .NET Framework. Parece ter mais desempenho também.
asdf
0

O Xamarin é usado para aplicativos de telefone (ambos IOS / Android). O .NET Core é usado para projetar aplicativos da Web que podem funcionar no Apache e no IIS.

Essa é a diferença em duas frases.

user10868910
fonte
Hmm ... além de perder a terceira opção (estrutura .net), não é totalmente verdade. O núcleo do .NET pode ser usado em praticamente tudo (Web, Desktop, Celular, Nuvem, Jogos, IoT etc). O .NET Framework é centrado no Windows e foi totalmente fechado. Mono era a versão de código-fonte aberto (orientada para a comunidade) do .NET Framework usada pelo Xamarin que colocava as ferramentas móveis de plataforma cruzada em cima do mono. O Xamarin será substituído, provavelmente por Blazor (atualmente pwa, mas híbrido e nativo fazem parte do roteiro).
shox
É verdade. Xamarin é para aplicativos móveis. Eu não acho que será substituído em breve. O ASMX ainda é usado para serviços da Web e incluído no Visual 2019.
user10868910
-1

atualizado em maio de 2019

você deve usar o .Net Core 3.0 e, posteriormente, atualizar para sua próxima versão .Net 5, tudo que você precisa é apenas uma plataforma unificada .Net5

Haverá apenas um .NET daqui para frente, e você poderá usá-lo para segmentar> Windows, Linux, macOS, iOS, Android, tvOS, watchOS e WebAssembly e muito mais. https://devblogs.microsoft.com/dotnet/introducing-net-5/

yangching
fonte
Esta resposta não faz sentido.
Kiril1512