Guida a .NET Core.NET Core Guide

Per imparare a creare una semplice applicazione .NET Core, consultare le esercitazioni introduttive.Check out the "Getting Started" tutorials to learn how to create a simple .NET Core application. Sono necessari pochi minuti per realizzare ed eseguire la prima app.It only takes a few minutes to get your first app up and running.

.NET Core è una piattaforma di sviluppo generale gestita da Microsoft e dalla community .NET su GitHub..NET Core is a general purpose development platform maintained by Microsoft and the .NET community on GitHub. È multipiattaforma, supporta Windows, macOS e Linux e può essere usata su dispositivi, ambienti cloud e scenari IoT/incorporati.It is cross-platform, supporting Windows, macOS and Linux, and can be used in device, cloud, and embedded/IoT scenarios.

Di seguito sono elencate le principali caratteristiche di .NET Core:The following characteristics best define .NET Core:

  • Distribuzione flessibile: può essere incluso nell'app o installato side-by-side a livello di computer o di utente.Flexible deployment: Can be included in your app or installed side-by-side user- or machine-wide.
  • Multipiattaforma: viene eseguito in Windows, macOS e Linux e può essere portato in altri sistemi operativi.Cross-platform: Runs on Windows, macOS and Linux; can be ported to other operating systems. Le CPU, gli scenari applicativi e i sistemi operativi supportati aumenteranno nel tempo e saranno rilasciati da Microsoft, altre società e singoli utenti.The supported Operating Systems (OS), CPUs and application scenarios will grow over time, provided by Microsoft, other companies, and individuals.
  • Strumenti da riga di comando: tutti gli scenari di prodotto possono essere usati dalla riga di comando.Command-line tools: All product scenarios can be exercised at the command-line.
  • Compatibile: .NET Core è compatibile con .NET Framework, Xamarin e Mono, attraverso .NET Standard.Compatible: .NET Core is compatible with .NET Framework, Xamarin and Mono, via the .NET Standard.
  • Open source: la piattaforma .NET Core è open source e usa le licenze MIT e Apache 2.Open source: The .NET Core platform is open source, using MIT and Apache 2 licenses. La documentazione è concessa in licenza da CC-BY.Documentation is licensed under CC-BY. .NET Core è un progetto .NET Foundation..NET Core is a .NET Foundation project.
  • Supportato da Microsoft: .NET Core è supportato da Microsoft, in base al supporto di .NET Core.Supported by Microsoft: .NET Core is supported by Microsoft, per .NET Core Support

ComposizioneComposition

.NET Core è costituito dalle parti seguenti:.NET Core is composed of the following parts:

  • Un runtime .NET, che fornisce un sistema di tipi, il caricamento dell'assembly, un garbage collector, l'interoperabilità nativa e altri servizi di base.A .NET runtime, which provides a type system, assembly loading, a garbage collector, native interop and other basic services.
  • Un set di librerie framework, che fornisce tipi di dati primitivi, tipi di composizione app e utilità fondamentali.A set of framework libraries, which provide primitive data types, app composition types and fundamental utilities.
  • Un set di strumenti SDK e compilatori di linguaggio per un'esperienza di sviluppo di base, disponibile in .NET Core SDK.A set of SDK tools and language compilers that enable the base developer experience, available in the .NET Core SDK.
  • L'host di app 'dotnet', che viene usato per avviare le app .NET Core.The 'dotnet' app host, which is used to launch .NET Core apps. Tale host seleziona e ospita il runtime, fornisce criteri di caricamento di assembly e avvia l'app.It selects the runtime and hosts the runtime, provides an assembly loading policy and launches the app. Lo stesso host viene anche usato per avviare gli strumenti SDK in modo analogo.The same host is also used to launch SDK tools in much the same way.

LinguaggiLanguages

È possibile usare i linguaggi C#, Visual Basic ed F# per scrivere librerie e applicazioni per .NET Core.The C#, Visual Basic, and F# languages can be used to write applications and libraries for .NET Core. I compilatori vengono eseguiti su .NET Core, che consente di sviluppare per .NET Core in qualsiasi ambiente di esecuzione.The compilers run on .NET Core, enabling you to develop for .NET Core anywhere it runs. In generale, i compilatori non verranno usati direttamente, ma tramite gli strumenti SDK.In general, you will not use the compilers directly, but indirectly using the SDK tools.

I compilatori C#, Visual Basic ed F# e gli strumenti .NET Core sono o possono essere integrati in diversi editor di testo e ambienti di sviluppo integrati, tra cui Visual Studio, Visual Studio Code, Sublime Text e Vim, in modo da rendere lo sviluppo .NET Core un'opzione utile nel sistema operativo e nell'ambiente di sviluppo preferito.The C#, Visual Basic, and F# compilers and the .NET Core tools are or can be integrated into several text editors and IDEs, including Visual Studio, Visual Studio Code, Sublime Text and Vim, making .NET Core development an option in your favorite coding environment and OS. Questa integrazione è resa in parte possibile dal progetto OmniSharp.This integration is provided, in part, by the good folks of the OmniSharp project.

API .NET e compatibilità.NET APIs and Compatibility

.NET Core può essere considerato come una versione multipiattaforma di .NET Framework, a livello delle librerie di classi base di.NET Framework ..NET Core can be thought of as a cross-platform version of the .NET Framework, at the layer of the .NET Framework Base Class Libraries (BCL). Implementa le specifiche di .NET Standard.It implements the .NET Standard specification. .NET Core fornisce un sottoinsieme delle API disponibili in .NET Framework o Mono/Xamarin..NET Core provides a subset of the APIs that are available in the .NET Framework or Mono/Xamarin. In alcuni casi, i tipi non sono completamente implementati (alcuni membri non sono disponibili o sono stati spostati).In some cases, types are not fully implemented (some members are not available or have been moved).

Per altre informazioni sulla guida di orientamento alle API di .NET Core, consultare la .NET Core Roadmap (Guida di orientamento di .NET Core).Look at the .NET Core roadmap to learn more about the .NET Core API roadmap.

Relazione con .NET StandardRelationship to .NET Standard

.NET Standard è una specifica API che descrive il set coerente di API .NET che gli sviluppatori possono aspettarsi in ogni implementazione di .NET.The .NET Standard is an API spec that describes the consistent set of .NET APIs that developers can expect in each .NET implementation. Le implementazioni di .NET devono implementare questa specifica per essere conformi alla libreria .NET Standard e supportare le librerie che hanno come destinazione .NET Standard..NET implementations need to implement this spec in order to be considered .NET Standard-compliant and to support libraries that target .NET Standard.

.NET Core implementa .NET Standard e pertanto supporta le librerie .NET Standard..NET Core implements .NET Standard, and therefore supports .NET Standard libraries.

Carichi di lavoroWorkloads

Di per sé .NET Core include un singolo modello di applicazione - app console - che risulta utile per gli strumenti, i servizi locali e i giochi basati su testo.By itself, .NET Core includes a single application model -- console apps -- which is useful for tools, local services and text-based games. Modelli di applicazioni aggiuntivi sono stati integrati in .NET Core per estenderne le funzionalità, ad esempio:Additional application models have been built on top of .NET Core to extend its functionality, such as:

Open sourceOpen Source

.NET Core è open source (licenza MIT) ed è stato fornito a .NET Foundation da Microsoft nel 2014..NET Core is open source (MIT license) and was contributed to the .NET Foundation by Microsoft in 2014. Attualmente è uno dei progetti .NET Foundation più attivi.It is now one of the most active .NET Foundation projects. Può essere adottato liberamente da singoli utenti e società, anche a scopo commerciale, accademico o personale.It can be freely adopted by individuals and companies, including for personal, academic or commercial purposes. Numerose società usano .NET Core come parte di app, strumenti, nuove piattaforme e servizi di hosting.Multiple companies use .NET Core as part of apps, tools, new platforms and hosting services. Alcune di queste società apportano contributi significativi a .NET Core su GitHub e forniscono indicazioni sull'uso del prodotto come parte del gruppo .NET Foundation Technical Steering Group.Some of these companies make significant contributions to .NET Core on GitHub and provide guidance on the product direction as part of the .NET Foundation Technical Steering Group.

AcquisizioneAcquisition

.NET Core viene distribuito in due modi, come pacchetti in NuGet.org e come distribuzioni autonome..NET Core is distributed in two main ways, as packages on NuGet.org and as standalone distributions.

DistribuzioniDistributions

È possibile scaricare .NET Core nella pagina .NET Core Getting Started (Introduzione a .NET Core).You can download .NET Core at the .NET Core Getting Started page.

  • La distribuzione Microsoft .NET Core include il runtime di CoreCLR, librerie associate, un host di applicazioni console e l'utilità di avvio app dotnet.The Microsoft .NET Core distribution includes the CoreCLR runtime, associated libraries, a console application host and the dotnet app launcher. Viene descritta nel metapacchetto Microsoft.NETCore.App.It is described by the Microsoft.NETCore.App metapackage.
  • La distribuzione Microsoft .NET Core SDK include .NET Core e un set di strumenti per il ripristino di pacchetti NuGet e la compilazione e creazione di app.The Microsoft .NET Core SDK distribution includes .NET Core and a set of tools for restoring NuGet packages and compiling and building apps.

Per iniziare con lo sviluppo di .NET Core, viene innanzitutto installato .NET Core SDK.Typically, you will first install the .NET Core SDK to get started with .NET Core development. È possibile scegliere di installare altre compilazioni (probabilmente in versione provvisoria) di .NET Core.You may choose to install additional .NET Core (perhaps pre-release) builds.

PacchettiPackages

ArchitetturaArchitecture

.NET Core è un'implementazione .NET multipiattaforma..NET Core is a cross-platform .NET implementation. La principale preoccupazione architetturale univoca di .NET Core è correlata a fornire implementazioni specifiche della piattaforma per le piattaforme supportate.The primary architectural concerns unique to .NET Core are related to providing platform-specific implementations for supported platforms.

AmbientiEnvironments

.NET Core è supportato da Microsoft in Windows, macOS e Linux..NET Core is supported by Microsoft on Windows, macOS and Linux. In Linux, Microsoft supporta principalmente .NET Core in esecuzione nelle famiglie di distribuzione Red Hat Enterprise Linux (RHEL) e Debian.On Linux, Microsoft primarily supports .NET Core running on Red Hat Enterprise Linux (RHEL) and Debian distribution families.

.NET Core attualmente supporta CPU X64..NET Core currently supports X64 CPUs. In Windows, è supportata anche X86 eOn Windows, X86 is also supported. ARM64 e ARM32 lo saranno a breve.ARM64 and ARM32 are in progress.

L'articolo .NET Core Roadmap (Guida di orientamento di .NET Core) fornisce informazioni più dettagliate su carico di lavoro, piani e supporto dell'ambiente del sistema operativo e della CPU.The .NET Core Roadmap provides more detailed information on workload and OS and CPU environment support and plans.

Altre società o i gruppi possono supportare .NET Core per altri tipi di app e ambienti.Other companies or groups may support .NET Core for other app types and environment.

Progettato per l'adattabilitàDesigned for Adaptability

.NET Core è stato progettato come prodotto molto simile, ma allo stesso tempo unico rispetto ad altri prodotti .NET..NET Core has been built as a very similar but unique product relative to other .NET products. È stato progettato per consentire una maggiore adattabilità alle nuove piattaforme, per nuovi carichi di lavoro e con nuove toolchain del compilatore.It has been designed to enable broad adaptability to new platforms, for new workloads and with new compiler toolchains. Dispone di numerose porte del sistema operativo e della CPU attive e può essere trasferito a molte altre.It has several OS and CPU ports in progress and may be ported to many more. Un esempio è il progetto LLILC, ovvero un prototipo iniziale della compilazione nativa di .NET Core tramite il compilatore LLVM.An example is the LLILC project, which is an early prototype of native compilation for .NET Core via the LLVM compiler.

Il prodotto è suddiviso in più parti, in modo che ognuna possa adattarsi alla nuova piattaforma in diverse pianificazioni.The product is broken into several pieces, enabling the various parts to be adapted to new platforms on different schedules. Il runtime e le librerie di base specifiche della piattaforma devono essere trasferite come elementi univoci.The runtime and platform-specific foundational libraries must be ported as a unit. Le librerie indipendenti dalla piattaforma dovrebbero funzionare in modo indipendente su tutte le piattaforme, per costruzione.Platform-agnostic libraries should work as-is on all platforms, by construction. Esiste una propensione del progetto alla riduzione delle implementazioni specifiche della piattaforma al fine di aumentare l'efficienza dello sviluppatore, preferendo il codice C# indipendente dalla piattaforma ogni volta che un algoritmo o un'API può essere implementata completamente o in parte in questo modo.There is a project bias to reducing platform-specific implementations to increase developer efficiency, preferring platform-neutral C# code whenever an algorithm or API can be implemented in-full or in-part that way.

In genere, viene richiesto come implementare .NET Core al fine di supportare più sistemi operativi ePeople commonly ask how .NET Core is implemented in order to support multiple operating systems. se sono disponibili implementazioni separate o viene usata la compilazione condizionale.They typically ask if there are separate implementations or if conditional compilation is used. Sono disponibili entrambe le opzioni, con una forte preferenza per la compilazione condizionale.It's both, with a strong bias towards conditional compilation.

Nel grafico seguente si può notare che la maggior parte del codice CoreFX è indipendente dalla piattaforma ed è condiviso tra tutte le piattaforme.You can see in the chart below that the vast majority of CoreFX is platform-neutral code that is shared across all platforms. Il codice indipendente dalla piattaforma può essere implementato come assembly portabile individuale usato su tutte le piattaforme.Platform-neutral code can be implemented as a single portable assembly that is used on all platforms.

CoreFX: righe di codice per ogni piattaforma

Le implementazioni Windows e Unix hanno dimensioni simili.Windows and Unix implementations are similar in size. Windows dispone di un'implementazione più vasta poiché CoreFX implementa alcune funzionalità esclusive di Windows, ad esempio Microsoft.Win32.Registry, ma non implementa i concetti esclusivi di Unix.Windows has a larger implementation since CoreFX implements some Windows-only features, such as Microsoft.Win32.Registry but does not yet implement any Unix-only concepts. Si può inoltre notare che la maggior parte delle implementazioni di Linux e macOS sono condivise con un'implementazione di Unix, mentre le implementazioni specifiche di Linux e macOS sono analoghe nella dimensione.You will also see that the majority of the Linux and macOS implementations are shared across a Unix implementation, while the Linux- and macOS-specific implementations are roughly similar in size.

In .NET Core è disponibile una combinazione di librerie specifiche della piattaforma e indipendenti dalla piattaforma.There are a mix of platform-specific and platform-neutral libraries in .NET Core. È possibile visualizzarne le caratteristiche in alcuni esempi:You can see the pattern in a few examples:

Confronto con altre implementazioni di .NETComparisons to other .NET implementations

Per semplificare la comprensione dell'importanza di .NET Core, può essere utile un confronto con altre implementazioni di .NET esistenti.It is perhaps easiest to understand the size and shape of .NET Core by comparing it to existing .NET implementations.

Confronto con .NET FrameworkComparison with .NET Framework

La piattaforma .NET è stata annunciata per la prima volta da Microsoft nel 2000 e da quel momento ha conosciuto una notevole evoluzione..NET was first announced by Microsoft in 2000 and then evolved from there. .NET Framework è stata l'implementazione di .NET principale prodotta da Microsoft durante oltre 15 anni.The .NET Framework has been the primary .NET implementation produced by Microsoft during that 15+ year span.

Differenze principali tra .NET Core e .NET Framework:The major differences between .NET Core and the .NET Framework:

  • Modelli di app: .NET Core non supporta tutti i modelli di app di .NET Framework, in parte perché molti di questi si basano sulle tecnologie Windows, ad esempio WPF (basato su DirectX).App-models -- .NET Core does not support all the .NET Framework app-models, in part because many of them are built on Windows technologies, such as WPF (built on top of DirectX). La console e i modelli di app ASP.NET Core sono supportati sia da .NET Core che da .NET Framework.The console and ASP.NET Core app-models are supported by both .NET Core and .NET Framework.
  • API: .NET Core contiene molte delle API di .NET Framework, ma in numero inferiore e con caratteristiche diverse (i nomi degli assembly sono diversi; il tipo è diverso nei casi principali).APIs -- .NET Core contains many of the same, but fewer, APIs as the .NET Framework, and with a different factoring (assembly names are different; type shape differs in key cases). Queste differenze attualmente richiedono modifiche all'origine della porta per .NET Core.These differences currently typically require changes to port source to .NET Core. .NET Core implementa l'API di .NET Standard, che nel tempo potrà includere un numero maggiore di API BCL di .NET Framework..NET Core implements the .NET Standard API, which will grow to include more of the .NET Framework BCL API over time.
  • Sottosistemi: .NET Core implementa un sottoinsieme dei sottosistemi di .NET Framework, al fine di ottenere un'implementazione più semplice e un modello di programmazione.Subsystems -- .NET Core implements a subset of the subsystems in the .NET Framework, with the goal of a simpler implementation and programming model. Ad esempio, la sicurezza dall'accesso di codice non è supportata, mentre la reflection lo è.For example, Code Access Security (CAS) is not supported, while reflection is supported.
  • Piattaforme: .NET Framework supporta Windows e Windows Server, mentre .NET Core supporta anche macOS e Linux.Platforms -- The .NET Framework supports Windows and Windows Server while .NET Core also supports macOS and Linux.
  • Open Source: .NET Core è open source, mentre in .NET Framework è open source un sottoinsieme di sola lettura.Open Source -- .NET Core is open source, while a read-only subset of the .NET Framework is open source.

.NET Core è univoco e presenta differenze significative rispetto a .NET Framework e altre implementazioni di .NET, ma consente di condividere il codice in modo molto semplice tramite le tecniche di condivisione del codice sorgente o di condivisione binaria.While .NET Core is unique and has significant differences to the .NET Framework and other .NET implementations, it is straightforward to share code, using either source or binary sharing techniques.

Confronto con MonoComparison with Mono

Mono è la multipiattaforma originale e open source dell'implementazione .NET, rilasciata nel 2004.Mono is the original cross-platform and open source .NET implementation, first shipping in 2004. Può essere considerato un duplicato della community di .NET Framework.It can be thought of as a community clone of the .NET Framework. Il team di progetto di Mono si basava sugli standard .NET open source (in particolare ECMA 335) pubblicati da Microsoft per fornire un'implementazione compatibile.The Mono project team relied on the open .NET standards (notably ECMA 335) published by Microsoft in order to provide a compatible implementation.

Le differenze principali tra .NET Core e Mono sono:The major differences between .NET Core and Mono:

  • Modelli di app: Mono supporta un sottoinsieme dei modelli di app di .NET Framework (ad esempio, Windows Form) e alcuni modelli aggiuntivi (ad esempio, Xamarin.IOS) attraverso il prodotto Xamarin.App-models -- Mono supports a subset of the .NET Framework app-models (for example, Windows Forms) and some additional ones (for example, Xamarin.iOS) through the Xamarin product. .NET Core non li supporta..NET Core doesn't support these.
  • API: Mono supporta un ampio sottoinsieme delle API di .NET Framework e usa gli stessi nomi di assembly e le stesse caratteristiche.APIs -- Mono supports a large subset of the .NET Framework APIs, using the same assembly names and factoring.
  • Piattaforme: Mono supporta molte piattaforme e CPU.Platforms -- Mono supports many platforms and CPUs.
  • Open source: Mono e .NET Core usano entrambi la licenza MIT e sono progetti di .NET Foundation.Open Source -- Mono and .NET Core both use the MIT license and are .NET Foundation projects.
  • Obiettivo: l'obiettivo principale di Mono negli ultimi anni sono le piattaforme per dispositivi mobili, mentre quello di .NET Core sono i carichi di lavoro cloud.Focus -- The primary focus of Mono in recent years is mobile platforms, while .NET Core is focused on cloud workloads.