Introduzione a ASP.NET CoreIntroduction to ASP.NET Core

Di Daniel Roth, Rick Anderson, e Shaun LuttinBy Daniel Roth, Rick Anderson, and Shaun Luttin

ASP.NET Core è un framework multipiattaforma, ad alte prestazioni, open source per la compilazione di moderne applicazioni basate sul cloud, connesse a Internet.ASP.NET Core is a cross-platform, high-performance, open-source framework for building modern, cloud-based, Internet-connected applications. Con ASP.NET Core, è possibile:With ASP.NET Core, you can:

  • Compilare app web e servizi, app IoT e back-end per dispositivi mobili.Build web apps and services, IoT apps, and mobile backends.
  • Usare gli strumenti di sviluppo preferiti in Windows, macOS e Linux.Use your favorite development tools on Windows, macOS, and Linux.
  • Distribuire nel cloud o in locale.Deploy to the cloud or on-premises.
  • Eseguire in .NET Core o .NET Framework.Run on .NET Core or .NET Framework.

Perché scegliere ASP.NET Core?Why choose ASP.NET Core?

Milioni di sviluppatori hanno usato, e continuano a usare, ASP.NET 4.x per creare app Web.Millions of developers have used (and continue to use) ASP.NET 4.x to create web apps. ASP.NET Core è una riprogettazione di ASP.NET 4.x, con modifiche a livello di architettura che comportano un framework più efficiente e modulare.ASP.NET Core is a redesign of ASP.NET 4.x, with architectural changes that result in a leaner, more modular framework.

ASP.NET Core offre i vantaggi seguenti:ASP.NET Core provides the following benefits:

  • Una storia unificata per la compilazione dell'interfaccia utente web e delle API web.A unified story for building web UI and web APIs.
  • Progettazione finalizzata alla testabilità.Architected for testability.
  • Razor Pages semplifica e rende più produttiva la scrittura di codice in scenari che si basano sulle pagine.Razor Pages makes coding page-focused scenarios easier and more productive.
  • Blazor consente di usare C# nel browser insieme a JavaScript.Blazor lets you use C# in the browser alongside JavaScript. Condividere la logica dell'app, interamente scritta con .NET, sul lato client e sul lato server.Share server-side and client-side app logic all written with .NET.
  • Possibilità di sviluppo ed esecuzione in Windows, macOS e Linux.Ability to develop and run on Windows, macOS, and Linux.
  • Open-source e incentrato sulle community.Open-source and community-focused.
  • Integrazione di moderni framework lato client e di flussi di lavoro di sviluppo.Integration of modern, client-side frameworks and development workflows.
  • Un sistema di configurazione basato sull'ambiente, pronto per il cloud.A cloud-ready, environment-based configuration system.
  • Inserimento delle dipendenze incorporato.Built-in dependency injection.
  • Una pipeline di richieste HTTP leggera, ad alte prestazioni e modulare.A lightweight, high-performance, and modular HTTP request pipeline.
  • Possibilità di gestire l'hosting in IIS, Nginx, Apache e Docker o di testare internamente i processi personalizzati.Ability to host on IIS, Nginx, Apache, Docker, or self-host in your own process.
  • Controllo delle versioni delle app affiancato quando la destinazione è .NET Core.Side-by-side app versioning when targeting .NET Core.
  • Gli strumenti che semplificano lo sviluppo del web moderno.Tooling that simplifies modern web development.

Compilare API web e interfaccia utente web tramite ASP.NET Core MVCBuild web APIs and web UI using ASP.NET Core MVC

ASP.NET Core MVC offre funzionalità per la compilazione di API Web e app Web:ASP.NET Core MVC provides features to build web APIs and web apps:

Sviluppo lato clientClient-side development

ASP.NET Core si integra perfettamente con popolari framework e librerie sul lato client, inclusi Blazor, Angular, React e Bootstrap.ASP.NET Core integrates seamlessly with popular client-side frameworks and libraries, including Blazor, Angular, React, and Bootstrap. Per altre informazioni, vedere Introduzione a Blazor in ASP.NET Core e gli argomenti correlati in Sviluppo lato client.For more information, see Introduzione a Blazor in ASP.NET Core and related topics under Client-side development.

ASP.NET Core per .NET FrameworkASP.NET Core targeting .NET Framework

ASP.NET Core 2.x può avere come destinazione .NET Core o .NET Framework.ASP.NET Core 2.x can target .NET Core or .NET Framework. Le app ASP.NET Core destinate a .NET Framework non sono multipiattaforma, ma funzionano solo in Windows.ASP.NET Core apps targeting .NET Framework aren't cross-platform—they run on Windows only. ASP.NET Core 2.x è costituito a livello generale da librerie .NET Standard.Generally, ASP.NET Core 2.x is made up of .NET Standard libraries. Le librerie scritte con .NET Standard 2.0 supportano l'esecuzione su qualsiasi piattaforma .NET che implementa .NET Standard 2.0.Libraries written with .NET Standard 2.0 run on any .NET platform that implements .NET Standard 2.0.

ASP.NET Core 2.x è supportato nelle versioni di .NET Framework che implementano .NET Standard 2.0:ASP.NET Core 2.x is supported on .NET Framework versions that implement .NET Standard 2.0:

  • È caldamente consigliata la versione più recente di .NET Framework..NET Framework latest version is strongly recommended.
  • .NET Framework 4.6.1 e versioni successive..NET Framework 4.6.1 and later.

L'esecuzione di ASP.NET Core 3.0 e versioni successive sarà consentita solo in .NET Core.ASP.NET Core 3.0 and later will only run on .NET Core. Per altri dettagli riguardanti questa modifica, vedere A first look at changes coming in ASP.NET Core 3.0 (Una prima occhiata alle modifiche previste per ASP.NET Core 3.0).For more details regarding this change, see A first look at changes coming in ASP.NET Core 3.0.

Usare .NET Core come destinazione offre diversi vantaggi, che aumentano con ogni versione.There are several advantages to targeting .NET Core, and these advantages increase with each release. Alcuni vantaggi di .NET Core in .NET Framework sono:Some advantages of .NET Core over .NET Framework include:

  • Funzionamento multipiattaforma.Cross-platform. Esecuzione con macOS, Linux e Windows.Runs on macOS, Linux, and Windows.
  • Miglioramento delle prestazioniImproved performance
  • Controllo delle versioni side-by-sideSide-by-side versioning
  • Nuove APINew APIs
  • Open sourceOpen source

È in corso un'intensa attività volta a colmare il divario da .NET Framework a .NET Core relativo alle API.We're working hard to close the API gap from .NET Framework to .NET Core. Windows Compatibility Pack ha reso disponibili in .NET Core migliaia di API solo per Windows.The Windows Compatibility Pack made thousands of Windows-only APIs available in .NET Core. Queste API non erano disponibili in .NET Core 1. x.These APIs weren't available in .NET Core 1.x.

Per un'introduzione allo sviluppo delle app ASP.NET Core, è consigliabile eseguire la sequenza di esercitazioni e articoli seguente:We recommend the following sequence of tutorials and articles for an introduction to developing ASP.NET Core apps:

  1. Eseguire un'esercitazione relativa al tipo di app che si vuole sviluppare o gestire:Follow a tutorial for the type of app you want to develop or maintain:

    Tipo di appApp type ScenarioScenario EsercitazioneTutorial
    App WebWeb app Per un nuovo sviluppoFor new development Introduzione a Razor PagesGet started with Razor Pages
    App WebWeb app Per gestire un'app MVCFor maintaining an MVC app Introduzione a MVCGet started with MVC
    API WebWeb API Creare un'API Web*Create a web API*
    App in tempo realeReal-time app Introduzione a SignalRGet started with SignalR
  2. Eseguire un'esercitazione che illustra la procedura di accesso ai dati di base:Follow a tutorial that shows how to do basic data access:

    ScenarioScenario EsercitazioneTutorial
    Per un nuovo sviluppoFor new development Razor Pages con Entity Framework CoreRazor Pages with Entity Framework Core
    Per gestire un'app MVCFor maintaining an MVC app MVC con Entity Framework CoreMVC with Entity Framework Core
  3. Leggere una panoramica delle funzionalità di ASP.NET Core applicabili a tutti i tipi di app:Read an overview of ASP.NET Core features that apply to all app types:

  4. Esplorare il Sommario per cercare altri argomenti di interesse.Browse the Table of Contents for other topics of interest.

* È disponibile una nuova esercitazione sulle API Web da eseguire interamente nel browser che non richiede alcuna installazione nell'IDE locale.* There is a new web API tutorial that you follow entirely in the browser, no local IDE installation required. Il codice viene eseguito in un'Azure Cloud Shell e per il testing viene usato curl.The code runs in an Azure Cloud Shell, and curl is used for testing.

Come scaricare un esempioHow to download a sample

Molti articoli ed esercitazioni includono collegamenti al codice di esempio.Many of the articles and tutorials include links to sample code.

  1. Scaricare il file ZIP del repository ASP.NET.Download the ASP.NET repository zip file.
  2. Decomprimere il file Docs-master.zip.Unzip the Docs-master.zip file.
  3. Usare l'URL nel collegamento di esempio per passare alla directory di esempio.Use the URL in the sample link to help you navigate to the sample directory.

Direttive per il preprocessore nel codice di esempioPreprocessor directives in sample code

Per illustrare più scenari, le app di esempio usano le istruzioni C# #define e #if-#else/#elif-#endif per compilare in modo selettivo ed eseguire sezioni diverse del codice di esempio.To demonstrate multiple scenarios, sample apps use the #define and #if-#else/#elif-#endif C# statements to selectively compile and run different sections of sample code. Per gli esempi che usano questo approccio, impostare l'istruzione #define nella parte superiore dei file C# sul simbolo associato allo scenario che si vuole eseguire.For those samples that make use of this approach, set the #define statement at the top of the C# files to the symbol associated with the scenario that you want to run. Alcuni esempi richiedono l'impostazione del simbolo nella parte superiore di più file per eseguire uno scenario.Some samples require setting the symbol at the top of multiple files in order to run a scenario.

Ad esempio, l'elenco di simboli #define seguente indica che sono disponibili quattro scenari, ovvero uno scenario per simbolo.For example, the following #define symbol list indicates that four scenarios are available (one scenario per symbol). La configurazione di esempio corrente esegue lo scenario TemplateCode:The current sample configuration runs the TemplateCode scenario:

#define TemplateCode // or LogFromMain or ExpandDefault or FilterInCode

Per modificare l'esempio in modo che venga eseguito lo scenario ExpandDefault, definire il simbolo ExpandDefault e lasciare i simboli rimanenti con commento:To change the sample to run the ExpandDefault scenario, define the ExpandDefault symbol and leave the remaining symbols commented-out:

#define ExpandDefault // TemplateCode or LogFromMain or FilterInCode

Per altre informazioni sull'uso delle direttive del preprocessore C# per compilare in modo selettivo le sezioni di codice, vedere #define (Riferimenti per C#) e #if (Riferimenti per C#).For more information on using C# preprocessor directives to selectively compile sections of code, see #define (C# Reference) and #if (C# Reference).

Aree del codice di esempioRegions in sample code

Alcune app di esempio contengono sezioni di codice racchiuse tra le istruzioni C# #region e #endregion.Some sample apps contain sections of code surrounded by #region and #endregion C# statements. Il sistema di compilazione della documentazione inserisce queste aree negli argomenti della documentazione visualizzabile.The documentation build system injects these regions into the rendered documentation topics.

I nomi delle aree in genere contengono la parola "frammento".Region names usually contain the word "snippet." L'esempio seguente mostra un'area denominata snippet_FilterInCode:The following example shows a region named snippet_FilterInCode:

#region snippet_FilterInCode
WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .ConfigureLogging(logging =>
        logging.AddFilter("System", LogLevel.Debug)
            .AddFilter<DebugLoggerProvider>("Microsoft", LogLevel.Trace))
            .Build();
#endregion

Il file markdown dell'argomento fa riferimento al frammento di codice C# precedente con la riga seguente:The preceding C# code snippet is referenced in the topic's markdown file with the following line:

[!code-csharp[](sample/SampleApp/Program.cs?name=snippet_FilterInCode)]

È possibile ignorare o rimuovere le istruzioni #region e #endregion che racchiudono il codice.You may safely ignore (or remove) the #region and #endregion statements that surround the code. Non modificare il codice all'interno di queste istruzioni se si prevede di eseguire gli scenari di esempio descritti nell'argomento.Don't alter the code within these statements if you plan to run the sample scenarios described in the topic. È possibile modificare il codice durante la sperimentazione con altri scenari.Feel free to alter the code when experimenting with other scenarios.

Per altre informazioni, vedere Contribuire alla documentazione ASP.NET: Frammenti di codice.For more information, see Contribute to the ASP.NET documentation: Code snippets.

Passaggi successiviNext steps

Per altre informazioni, vedere le seguenti risorse:For more information, see the following resources: