Qual è la differenza tra .NET Core, .NET Framework e Xamarin?


362

Microsoft ha ora .NET Core, .NET Framework e Xamarin (Mono) nella sua famiglia .NET.

Sembra che ci siano molte sovrapposizioni qui. Qual è la differenza tra questi tipi di .NET? Quando dovrei scegliere di utilizzare .NET Core nel mio progetto, anziché .NET Framework o Xamarin?


2
Bella domanda! Ecco un articolo supplementare su .net framework e .net core. pogsdotnet.blogspot.sg/2017/11/… Grazie!
Allan Chua,

Risposte:


269

È necessario utilizzare .NET Core, anziché .NET Framework o Xamarin, nei seguenti 6 scenari tipici in base alla documentazione qui .

1. Esigenze multipiattaforma

Chiaramente, se il tuo obiettivo è avere un'applicazione (web / servizio) che dovrebbe essere in grado di funzionare su piattaforme (Windows, Linux e MacOS), la scelta migliore nell'ecosistema .NET è quella di utilizzare .NET Core come runtime (CoreCLR ) e le librerie sono multipiattaforma. L'altra scelta è quella di utilizzare il Mono Project.

Entrambe le scelte sono open source, ma .NET Core è direttamente e ufficialmente supportato da Microsoft e avrà un investimento pesante in avanti.

Quando si utilizza .NET Core su più piattaforme, la migliore esperienza di sviluppo esiste su Windows con l'IDE di Visual Studio che supporta molte funzionalità di produttività tra cui gestione dei progetti, debug, controllo del codice sorgente, refactoring, editing avanzato tra cui Intellisense, test e molto altro. Ma il ricco sviluppo è supportato anche usando Visual Studio Code su Mac, Linux e Windows, inclusi intellisense e debugging. Anche editor di terze parti come Sublime, Emacs, VI e altri funzionano bene e possono ottenere l'editor intellisense usando il progetto open source Omnisharp.

2. Microservizi

Quando si crea un sistema orientato ai microservizi composto da più microservizi indipendenti, dinamicamente scalabili, con stato o stateless, il grande vantaggio che si ha qui è che è possibile utilizzare diverse tecnologie / framework / linguaggi a livello di microservizi. Ciò consente di utilizzare l'approccio e la tecnologia migliori per le micro aree del sistema, quindi se si desidera creare microservizi altamente performanti e scalabili, è necessario utilizzare .NET Core. Alla fine, se hai bisogno di usare una libreria .NET Framework non compatibile con .NET Core, non c'è problema, puoi creare quel microservizio con .NET Framework e in futuro potresti essere in grado di sostituirlo con .NET Nucleo.

La piattaforma di infrastruttura che potresti usare è molte. Idealmente, per sistemi di microservizi grandi e complessi, è necessario usare Azure Service Fabric. Ma per i microservizi senza stato è anche possibile usare altri prodotti come il Servizio app di Azure o Funzioni di Azure.

Da giugno 2016, non tutte le tecnologie di Azure supportano .NET Core, ma il supporto di .NET Core in Azure aumenterà notevolmente ora che .NET Core è stato rilasciato.

3. I sistemi più performanti e scalabili

Quando il tuo sistema ha bisogno delle migliori prestazioni e scalabilità possibili in modo da ottenere la migliore reattività, indipendentemente da quanti utenti hai, allora è dove .NET Core e ASP.NET Core brillano davvero. Quanto più puoi fare con la stessa quantità di infrastruttura / hardware, tanto più ricca sarà l'esperienza che avrai per i tuoi utenti finali, a un costo inferiore.

I giorni dei miglioramenti delle prestazioni di legge di Moore per le singole CPU non si applicano più; tuttavia devi fare di più mentre il tuo sistema sta crescendo e hai bisogno di maggiori scalabilità e prestazioni per gli utenti più esigenti di tutti i giorni che stanno crescendo esponenzialmente in numero. In definitiva, è necessario essere più efficienti, ottimizzare ovunque e ridimensionare meglio tra cluster di macchine, VM e core di CPU. Non è solo una questione di soddisfazione dell'utente; può anche fare un'enorme differenza in termini di costo / TCO. Ecco perché è importante lottare per prestazioni e scalabilità.

Come accennato, se puoi isolare piccoli pezzi del tuo sistema come microservizi o qualsiasi altro approccio debolmente accoppiato, sarà meglio in quanto non sarai in grado di evolvere indipendentemente ogni piccolo pezzo / microservizio in modo indipendente e avere un migliore a lungo termine agilità e manutenzione, ma sarai anche in grado di utilizzare qualsiasi altra tecnologia a livello di microservizio se ciò che devi fare non è compatibile con .NET Core. E alla fine saresti in grado di riformattarlo e portarlo a .NET Core quando possibile.

4. Sviluppo stile riga di comando per Mac, Linux o Windows.

Questo approccio è facoltativo quando si utilizza .NET Core. Ovviamente puoi anche utilizzare l'IDE completo di Visual Studio. Ma se sei uno sviluppatore che desidera sviluppare con editor leggeri e un uso intenso della riga di comando, .NET Core è progettato per l'interfaccia della riga di comando. Fornisce semplici strumenti da riga di comando disponibili su tutte le piattaforme supportate, consentendo agli sviluppatori di creare e testare applicazioni con un'installazione minima su macchine sviluppatore, di laboratorio o di produzione. Editor come Visual Studio Code utilizzano gli stessi strumenti da riga di comando per le loro esperienze di sviluppo. E gli IDE come Visual Studio usano gli stessi strumenti CLI ma li nascondono dietro una ricca esperienza IDE. Gli sviluppatori possono ora scegliere il livello che desiderano interagire con la catena di strumenti dalla CLI all'editor all'IDE.

5. Necessità fianco a fianco delle versioni .NET per livello di applicazione.

Se si desidera poter installare applicazioni con dipendenze su diverse versioni di framework in .NET, è necessario utilizzare .NET Core che fornisce il 100% fianco a fianco, come spiegato in precedenza in questo documento.

6. App Windows 10 UWP .NET.

Inoltre, potresti anche voler leggere:

  1. Quando NON dovrei usare .NET Core?
  2. Quando dovrei ancora usare .NET Framework 4.x, anziché .NET Core?
  3. Quando dovrei usare Xamarin, anziché .NET Core?

17
Perché asp.net Core è più performante? Perché è meglio quando si creano microservizi?
Juan Zamudio,

4
Ora è disponibile anche Visual Studio per Mac. Quindi un altro punto positivo verso .NET Core. visualstudio.com/vs/visual-studio-mac
Husyn,

8
I tuoi collegamenti sono rotti
shaneparsons

2
@JuanZamudio Le versioni del framework sono layer monolitici, ciascuno dipendente dalla versione immediatamente precedente, in una catena di dipendenze che risale alla versione 2.0 che ha completamente sostituito 1.1. Di conseguenza, se usi qualcosa dalla 4.5, dipendi implicitamente da tutto ciò che risale alla 2.0. Il framework Core riguarda più il refactoring delle dipendenze per eliminare il bagaglio irrilevante che la riscrittura dell'API, che è per lo più ma non del tutto invariata. Alcune cose sono state anche notevolmente semplificate, come EF Core.
Peter Wone,

Grazie per la risposta descrittiva
Tolga Kartal

171

Ecco come lo spiega Microsoft:

.NET Framework, .NET Core, Xamarin

.NET Framework è il sapore "completo" o "tradizionale" di .NET distribuito con Windows. Utilizzalo quando crei un'app desktop Windows o UWP o lavori con ASP.NET 4.6+ precedente.

.NET Core è .NET multipiattaforma che funziona su Windows, Mac e Linux. Utilizzalo quando vuoi creare console o app Web che possano essere eseguite su qualsiasi piattaforma, inclusi i contenitori Docker. Questo non include attualmente le app UWP / desktop.

Xamarin viene utilizzato per la creazione di app mobili che possono essere eseguite su dispositivi iOS, Android o Windows Phone.

Xamarin di solito funziona su Mono , che è una versione di .NET creata per il supporto multipiattaforma prima che Microsoft decidesse di diventare ufficialmente multipiattaforma con .NET Core. Come Xamarin, anche la piattaforma Unity funziona su Mono.


Un punto comune di confusione è dove si inserisce ASP.NET Core. ASP.NET Core può essere eseguito su .NET Framework (Windows) o .NET Core (multipiattaforma), come dettagliato in questa risposta: Differenza tra ASP. NET Core (.NET Core) e ASP.NET Core (.NET Framework)


3
Ogni volta che qualcuno afferma che .NET Core è multipiattaforma, un nuovo sviluppatore viene confuso. '.NET Core' supporta solo UWP + ASP.NET Core e ASP.NET Core è multipiattaforma, UWP no.
Hassan Tareq il

@HassanTareq Non è del tutto corretto. .NET Core si riferisce al runtime e alle librerie che possono essere eseguite su Windows, Mac o Linux. ASP.NET Core è multipiattaforma perché .NET Core è multipiattaforma.
Nate Barbettini,

Quindi sarebbe utile per i greenhorn se dici che Sebbene il core .Net ( runtime e librerie ) sia multipiattaforma, non possiamo usare l'app UWP in Mac / Linux. UWP non è multipiattaforma, mi aspettavo che UWP fosse un'alternativa multipiattaforma di WPF (Xamarin.Forms is)
Hassan Tareq,

@HassanTareq Ottimo suggerimento, ho modificato la mia risposta.
Nate Barbettini,

1
Xamarin Forms ora funziona su quasi tutto da un'unica base di codice. Desktop UWP di Windows, desktop WPF, MacOS, iOS, Android e Tizen (TV). L'impostazione predefinita è come destinazione .NET Standard dall'implementazione Core. Bei tempi!
Sean Anderson,

35

È possibile fare riferimento in questa riga - Differenza tra ASP.NET Core (.NET Core) e ASP.NET Core (.NET Framework)

.NET Framework, .NET Core, Xamarin

Xamarin non è affatto un dibattito. Quando vuoi creare app mobili (iOS, Android e Windows Mobile) usando C #, Xamarin è la tua unica scelta.

.NET Framework supporta applicazioni Windows e Web. Oggi è possibile utilizzare Windows Form, WPF e UWP per creare applicazioni Windows in .NET Framework. ASP.NET MVC viene utilizzato per creare applicazioni Web in .NET Framework.

.NET Core è il nuovo framework open source e multipiattaforma per creare applicazioni per tutti i sistemi operativi, inclusi Windows, Mac e Linux. .NET Core supporta solo UWP e ASP.NET Core. UWP viene utilizzato per creare Windows 10 target Windows e applicazioni mobili. ASP.NET Core viene utilizzato per creare applicazioni Web basate su browser.

vuoi maggiori dettagli fai riferimento a questo link
https://blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap/ https://docs.microsoft.com/en-us/dotnet/articles / standard / scegliendo-core-framework server


12
  1. .NET è l'ecosistema basato sul linguaggio c #
  2. .NET Standard è Standard (in altre parole, specifica) di .NET Ecosystem.

.Net Core Class Library si basa sullo standard .Net . .NET Standard è possibile realizzare solo progetti di librerie di classi che non possono essere eseguiti autonomamente e devono essere referenziati da un altro progetto eseguibile .NET Core o .NET Framework . Se si desidera implementare una libreria portatile per .Net Framework , .Net Core e Xamarin , scegliere una libreria standard .Net

  1. .NET Framework è un framework basato su .NET e supporta applicazioni Windows e Web

(È possibile creare progetti eseguibili (come l'applicazione Console o l'applicazione ASP.NET) con .NET Framework

  1. ASP.NET è una tecnologia di sviluppo di applicazioni Web costruita su .NET Framework
  2. .NET Core è anche un framework basato su .NET .

È il nuovo framework open source e multipiattaforma per creare applicazioni per tutti i sistemi operativi, inclusi Windows, Mac e Linux.

  1. Xamarin è un framework per sviluppare un'applicazione mobile multipiattaforma ( iOS, Android e Windows Mobile ) usando C #

Supporto all'implementazione di .NET Standard [blu] e piattaforma minima realizzabile per il pieno supporto di .NET Standard (più recente: [ https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation- supporto] )


Voto negativo per la tabella "Cronologia versioni". Non è la "Cronologia delle versioni" di .net / standard o core che hai riprodotto. Sono le versioni minime della piattaforma praticabili che è possibile utilizzare se si desidera abbinare una versione standard .Net specifica. Ad esempio: se si desidera supportare .NET Standard 1.4 su Full .NET, la versione più bassa che è possibile utilizzare è 4.6.1
shawty

Giù voto rimosso, ora che hai aggiornato e documentato correttamente la tua risposta :-)
shawty

Penso che svilupperò semplicemente su Apple invece ...
Richard Hammond, il

7

.NET 5 sarà una versione unificata di tutte le varianti di .NET in arrivo a novembre 2020, quindi non sarà più necessario scegliere tra le varianti. inserisci qui la descrizione dell'immagine


1
È una bugia. .NET Core non supporta WPF / WinForms su Linux!
Vincent,

È vero, ma anche altre varianti di .NET non lo supportano. La scelta per una variante di .NET è andata, il che è una buona cosa.
yanlend,

1

.NET Core è la versione corrente di .NET che dovresti utilizzare in questo momento (più funzionalità, bug corretti, ecc.)

Xamarin è una piattaforma che fornisce soluzioni per problemi mobili multipiattaforma codificati in C #, quindi non è necessario utilizzare Swift separatamente per IOS e lo stesso vale per Android.


2
Direi. Net Core è quello che dovresti usare se devi eseguire su Linux o Linux e Windows. Ma potresti pensare anche a Mono, credo. Certamente non ha più funzionalità. Per definizione sono solo i bit "core", non ha nessuno dei bit solo Windows, quindi meno funzioni. E sto solo indovinando, ma sembra improbabile che .Net Core abbia meno bug. Il .Net Framework è uscito nel mondo da quasi due decenni. Immagino che a questo punto sia piuttosto indurito dalla battaglia. Ma quella è solo una congettura.
Jason Boyd,

Certamente ha più nuove funzionalità, hanno recentemente aggiunto nuove classi che non verranno aggiunte a .NET 4.8. Hanno anche portato WPF e WinForms. In realtà sembra che .NET Core potrebbe sostituire .NET Framework. Sembra essere anche più performante.
asdf

0

Xamarin è utilizzato per applicazioni telefoniche (sia IOS / Android). .NET Core viene utilizzato per la progettazione di applicazioni Web che possono funzionare sia su Apache che su IIS.

Questa è la differenza in due frasi.


Hmm .. beh, a parte la mancanza della terza opzione (framework .net) non è del tutto vero. .NET core può essere utilizzato praticamente su tutto (Web, Desktop, Mobile, Cloud, Gaming, IoT ecc.). .NET Framework è Windows Centric ed è stato interamente chiuso. Mono era la versione open source (basata sulla community) di .NET Framework utilizzata da Xamarin che metteva gli strumenti mobili multipiattaforma in cima a mono. Xamarin alla fine verrà sostituito, molto probabilmente da Blazor (attualmente pwa, ma ibrido quindi nativo fanno parte della road map).
shox,

È vero. Xamarin è per applicazioni mobili. Non penso che sarà sostituito presto. ASMX è ancora utilizzato per i servizi Web e incluso in Visual 2019.
user10868910

-1

aggiornato a maggio 2019

dovresti usare .Net Core 3.0 e versioni successive all'aggiornamento alla prossima versione .Net 5, tutto ciò che serve è solo una piattaforma unificata .Net5

In futuro ci sarà un solo .NET e sarai in grado di usarlo per target> Windows, Linux, macOS, iOS, Android, tvOS, watchOS e WebAssembly e altro. https://devblogs.microsoft.com/dotnet/introducing-net-5/


Questa risposta non ha senso.
Kiril1512,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.