Microsoft har nå .NET Core, .NET Framework og Xamarin (Mono) i sin .NET-familie.
Det ser ut til å være mye overlapping her. Hva er forskjellen mellom disse typene .NET? Når bør jeg velge å bruke .NET Core i prosjektet mitt i stedet for .NET Framework eller Xamarin?
Du bør bruke .NET Core, i stedet for .NET Framework eller Xamarin, i følgende 6 typiske scenarier i henhold til dokumentasjonen [her][1].
1. Behov på tvers av plattformer
Det er klart at hvis målet ditt er å ha en applikasjon (web / tjeneste) som skal kunne kjøres på tvers av plattformer (Windows, Linux og MacOS), er det beste valget i .NET-økosystemet å bruke .NET Core som kjøretid (CoreCLR) og biblioteker er plattformoverskridende. Det andre valget er å bruke Mono-prosjektet. Begge valgene er åpen kildekode, men .NET Core støttes direkte og offisielt av Microsoft og vil ha en tung investering fremover. Når du bruker .NET Core på tvers av plattformer, finnes den beste utviklingsopplevelsen på Windows med Visual Studio IDE som støtter mange produktivitetsfunksjoner, inkludert prosjektstyring, feilsøking, kildekontroll, refactoring, rik redigering inkludert Intellisense, testing og mye mer. Men rik utvikling støttes også ved hjelp av Visual Studio Code på Mac, Linux og Windows, inkludert intellisense og feilsøking. Selv tredjepartsredaktører som Sublime, Emacs, VI og mer fungerer bra og kan få redaktør intellisense ved hjelp av open source Omnisharp-prosjektet.
2. Mikrotjenester
Når du bygger et mikrotjenesteorientert system som består av flere uavhengige, dynamisk skalerbare, tilstandsfulle eller tilstandsløse mikrotjenester, er den store fordelen du har her at du kan bruke forskjellige teknologier / rammeverk / språk på mikrotjenestenivå. Det gjør at du kan bruke den beste tilnærmingen og teknologien per mikroområde i systemet ditt, så hvis du vil bygge svært effektive og skalerbare mikrotjenester, bør du bruke .NET Core. Til slutt, hvis du trenger å bruke et .NET Framework-bibliotek som ikke er kompatibelt med .NET Core, er det ikke noe problem, du kan bygge den mikrotjenesten med .NET Framework, og i fremtiden kan du kanskje erstatte den med .NET Core. Infrastrukturplattformen du kan bruke er mange. Ideelt sett bør du bruke Azure Service Fabric for store og komplekse mikrotjenestesystemer. Men for tilstandsløse mikrotjenester kan du også bruke andre produkter som Azure App Service eller Azure Functions. Merk at fra og med juni 2016 støtter ikke alle teknologier i Azure .NET Core, men .NET Core-støtte i Azure vil øke dramatisk nå som .NET Core er RTM utgitt.
3. Best ytelse og skalerbare systemer
Når systemet ditt trenger best mulig ytelse og skalerbarhet, slik at du får den beste responsen uansett hvor mange brukere du har, er det der .NET Core og ASP.NET Core virkelig skinner. Jo mer du kan gjøre med samme mengde infrastruktur/maskinvare, jo rikere opplevelse får du for sluttbrukerne dine - til en lavere kostnad. Dagene med Moore's lov ytelsesforbedringer for enkelt CPUer gjelder ikke lenger; likevel må du gjøre mer mens systemet ditt vokser og trenger høyere skalerbarhet og ytelse for hverdagens mer krevende brukere som vokser eksponentielt i antall. Du må bli mer effektiv, optimalisere overalt og skalere bedre på tvers av klynger av maskiner, VM-er og CPU-kjerner, til syvende og sist. Det er ikke bare et spørsmål om brukertilfredshet; det kan også utgjøre en stor forskjell i kostnad/TCO. Derfor er det viktig å etterstrebe ytelse og skalerbarhet. Som nevnt, hvis du kan isolere små deler av systemet ditt som mikrotjenester eller en annen løst koblet tilnærming, vil det være bedre, ettersom du ikke bare kan utvikle hver liten del / mikrotjeneste uavhengig og ha bedre langsiktig smidighet og vedlikehold, men du vil også kunne bruke hvilken som helst annen teknologi på mikrotjenestenivå hvis det du trenger å gjøre ikke er kompatibelt med .NET Core. Og til slutt vil du kunne refaktorere den og bringe den til .NET Core når det er mulig.
4. Kommandolinjestilutvikling for Mac, Linux eller Windows.
Denne tilnærmingen er valgfri når du bruker .NET Core. Du kan selvfølgelig også bruke hele Visual Studio IDE. Men hvis du er en utvikler som ønsker å utvikle med lette redaktører og tung bruk av kommandolinjen, er .NET Core designet for CLI. Det gir enkle kommandolinjeverktøy tilgjengelig på alle støttede plattformer, slik at utviklere kan bygge og teste applikasjoner med en minimal installasjon på utvikler-, laboratorie- eller produksjonsmaskiner. Redaktører som Visual Studio Code bruker de samme kommandolinjeverktøyene for sine utviklingsopplevelser. Og IDE-er som Visual Studio bruker de samme CLI-verktøyene, men skjuler dem bak en rik IDE-opplevelse. Utviklere kan nå velge nivået de vil samhandle med verktøykjeden fra CLI til redaktør til IDE.
5. Trenger side om side av .NET-versjoner per applikasjonsnivå.
Hvis du vil kunne installere applikasjoner med avhengigheter av forskjellige versjoner av rammeverk i .NET, må du bruke .NET Core som gir 100% side om side som forklart tidligere i dette dokumentet.
6. Windows 10 UWP .NET-apper.
I tillegg kan det være lurt å lese dette:
Slik forklarer Microsoft det:
.NET Framework er den "fulle" eller "tradisjonelle" versjonen av .NET som distribueres med Windows. Bruk dette når du bygger en Windows- eller UWP-app på skrivebordet, eller arbeider med eldre ASP.NET 4.6+.
.NET Core er .NET på tvers av plattformer som kjører på Windows, Mac og Linux. Bruk dette når du vil bygge konsoll- eller nettapper som kan kjøres på alle plattformer, inkludert i Docker-containere. Dette inkluderer for øyeblikket ikke UWP/skrivebordsapper.
Xamarin brukes til å bygge mobilapper som kan kjøres på iOS-, Android- eller Windows Phone-enheter.
Xamarin kjører vanligvis på toppen av Mono, som er en versjon av .NET som ble bygget for støtte på tvers av plattformer før Microsoft bestemte seg for å offisielt gå på tvers av plattformer med .NET Core. I likhet med Xamarin kjører også Unity-plattformen på toppen av Mono.
Et vanlig forvirringspunkt er hvor ASP.NET Core passer inn. ASP.NET Core kan kjøres på toppen av enten .NET Framework (Windows) eller .NET Core (kryssplattform), som beskrevet i dette svaret: Forskjellen mellom ASP.NET Core (.NET Core) og ASP.NET Core (.NET Framework)
Du kan henvise i denne linjen - https://stackoverflow.com/questions/37684508/difference-between-asp-net-core-net-core-and-asp-net-core-net-framework/37684644#37684644
Xamarin er ikke en debatt i det hele tatt. Når du vil bygge mobilapper (iOS, Android og Windows Mobile) ved hjelp av C#, er Xamarin ditt eneste valg.
.NET Framework støtter Windows- og webapplikasjoner. I dag kan du bruke Windows Forms, WPF og UWP til å bygge Windows-applikasjoner i .NET Framework. ASP.NET MVC brukes til å bygge webapplikasjoner i .NET Framework.
.NET Core er det nye rammeverket med åpen kildekode og på tvers av plattformer for å bygge applikasjoner for alle operativsystemer, inkludert Windows, Mac og Linux. .NET Core støtter kun UWP og ASP.NET Core. UWP brukes til å bygge Windows 10-målrettede Windows- og mobilapplikasjoner. ASP.NET Core brukes til å bygge nettleserbaserte webapplikasjoner.
Hvis du vil ha mer informasjon, se disse lenkene https://blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap/ https://docs.microsoft.com/en-us/dotnet/articles/standard/choosing-core-framework-server