Introducción a ASP.NET CoreIntroduction to ASP.NET Core

Por Daniel Roth, Rick Anderson y Shaun LuttinBy Daniel Roth, Rick Anderson, and Shaun Luttin

ASP.NET Core es un marco multiplataforma de código abierto y de alto rendimiento que tiene como finalidad compilar modernas aplicaciones conectadas a Internet y basadas en la nube.ASP.NET Core is a cross-platform, high-performance, open-source framework for building modern, cloud-based, Internet-connected applications. Con ASP.NET Core puede hacer lo siguiente:With ASP.NET Core, you can:

  • Compilar servicios y aplicaciones web, aplicaciones de IoT y back-ends móviles.Build web apps and services, IoT apps, and mobile backends.
  • Usar sus herramientas de desarrollo favoritas en Windows, macOS y Linux.Use your favorite development tools on Windows, macOS, and Linux.
  • Efectuar implementaciones locales y en la nube.Deploy to the cloud or on-premises.
  • Ejecutarlo en .NET Core o en .NET Framework.Run on .NET Core or .NET Framework.

¿Por qué elegir ASP.NET Core?Why choose ASP.NET Core?

Millones de desarrolladores han usado ASP.NET 4.x (y siguen usándolo) para crear aplicaciones web.Millions of developers have used (and continue to use) ASP.NET 4.x to create web apps. ASP.NET Core es un nuevo diseño de ASP.NET 4.x que cuenta con cambios en la arquitectura que dan como resultado un marco más sencillo y modular.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 ofrece las siguientes ventajas:ASP.NET Core provides the following benefits:

  • Un caso unificado para crear API web y una interfaz de usuario web.A unified story for building web UI and web APIs.
  • Diseñado para la capacidad de prueba.Architected for testability.
  • Razor Pages hace que la codificación de escenarios centrados en páginas sean más sencillos y productivos.Razor Pages makes coding page-focused scenarios easier and more productive.
  • Blazor permite usar C# en el explorador, además de JavaScript.Blazor lets you use C# in the browser alongside JavaScript. Comparta la lógica de aplicación del lado cliente y servidor escrita toda con. NET.Share server-side and client-side app logic all written with .NET.
  • Capacidad para desarrollarse y ejecutarse en Windows, macOS y Linux.Ability to develop and run on Windows, macOS, and Linux.
  • De código abierto y centrado en la comunidad.Open-source and community-focused.
  • Integración de marcos del lado cliente modernos y flujos de trabajo de desarrollo.Integration of modern, client-side frameworks and development workflows.
  • Un sistema de configuración basado en el entorno y preparado para la nube.A cloud-ready, environment-based configuration system.
  • Inserción de dependencias integrada.Built-in dependency injection.
  • Una canalización de solicitudes HTTP ligera, modular y de alto rendimiento.A lightweight, high-performance, and modular HTTP request pipeline.
  • Capacidad de hospedarse en IIS, Nginx, Apache, Docker o de autohospedarse en su propio proceso.Ability to host on IIS, Nginx, Apache, Docker, or self-host in your own process.
  • Control de versiones de aplicaciones en paralelo con .NET Core como destino.Side-by-side app versioning when targeting .NET Core.
  • Herramientas que simplifican el desarrollo web moderno.Tooling that simplifies modern web development.

Creación de API web e interfaces de usuario web mediante ASP.NET Core MVCBuild web APIs and web UI using ASP.NET Core MVC

ASP.NET Core MVC proporciona características para crear API web y aplicaciones web:ASP.NET Core MVC provides features to build web APIs and web apps:

Desarrollo del lado del clienteClient-side development

ASP.NET Core se integra perfectamente con bibliotecas y marcos populares del lado cliente, que incluyen Blazor, Angular, React y Bootstrap.ASP.NET Core integrates seamlessly with popular client-side frameworks and libraries, including Blazor, Angular, React, and Bootstrap. Para más información, consulte Introducción a Blazor en ASP.NET Core y los temas relacionados en Client-side development (Desarrollo del lado cliente).For more information, see Introducción a Blazor en ASP.NET Core and related topics under Client-side development.

ASP.NET Core con .NET Framework como destinoASP.NET Core targeting .NET Framework

ASP.NET Core 2.x puede tener como destino .NET Core o .NET Framework.ASP.NET Core 2.x can target .NET Core or .NET Framework. Las aplicaciones de ASP.NET Core que tienen como destino .NET Framework no son multiplataforma, sino que solo se ejecutan en Windows.ASP.NET Core apps targeting .NET Framework aren't cross-platform—they run on Windows only. Por lo general, ASP.NET Core 2.x está formado por bibliotecas de .NET Standard.Generally, ASP.NET Core 2.x is made up of .NET Standard libraries. Las bibliotecas escritas con .NET Standard 2.0 se ejecutan en cualquier plataforma .NET que 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 se admite en las versiones de .NET Framework que implementan .NET Standard 2.0:ASP.NET Core 2.x is supported on .NET Framework versions that implement .NET Standard 2.0:

  • Se recomienda la versión más reciente de .NET Framework..NET Framework latest version is strongly recommended.
  • .NET Framework 4.6.1 y posterior..NET Framework 4.6.1 and later.

ASP.NET Core 3.0 y versiones posteriores solo se ejecutan en .NET Core.ASP.NET Core 3.0 and later will only run on .NET Core. Para obtener más información sobre este cambio, vea A first look at changes coming in ASP.NET Core 3.0 (Descripción general de los cambios que se aplicarán a ASP.NET Core 3.0).For more details regarding this change, see A first look at changes coming in ASP.NET Core 3.0.

El uso de .NET Core como destino cuenta con varias ventajas que van en aumento con cada versión.There are several advantages to targeting .NET Core, and these advantages increase with each release. Entre las ventajas del uso de .NET Core en vez de .NET Framework se incluyen las siguientes:Some advantages of .NET Core over .NET Framework include:

  • Multiplataforma.Cross-platform. Ejecución en macOS, Linux y Windows.Runs on macOS, Linux, and Windows.
  • Rendimiento mejoradoImproved performance
  • Control de versiones en paralelo.Side-by-side versioning
  • Nuevas API.New APIs
  • Código AbiertoOpen source

Estamos trabajando intensamente para cerrar la brecha de API entre .NET Framework y .NET Core.We're working hard to close the API gap from .NET Framework to .NET Core. El paquete de compatibilidad de Windows ha permitido que miles de API solo de Windows estén disponibles en .NET Core.The Windows Compatibility Pack made thousands of Windows-only APIs available in .NET Core. Estas API no estaban disponibles en .NET Core 1.x.These APIs weren't available in .NET Core 1.x.

Se recomienda la siguiente secuencia de tutoriales y artículos para obtener una introducción para desarrollar aplicaciones de ASP.NET Core:We recommend the following sequence of tutorials and articles for an introduction to developing ASP.NET Core apps:

  1. Siga un tutorial para el tipo de aplicación que quiere desarrollar o mantener:Follow a tutorial for the type of app you want to develop or maintain:

    Tipo de aplicaciónApp type EscenarioScenario TutorialTutorial
    Aplicación webWeb app Para un nuevo desarrolloFor new development Introducción a las páginas de RazorGet started with Razor Pages
    Aplicación webWeb app Para mantener una aplicación MVCFor maintaining an MVC app Introducción a MVCGet started with MVC
    Web APIWeb API Creación de una API web*Create a web API*
    Aplicación en tiempo realReal-time app Introducción a SignalRGet started with SignalR
  2. Siga un tutorial que muestra cómo realizar el acceso a datos básicos:Follow a tutorial that shows how to do basic data access:

    EscenarioScenario TutorialTutorial
    Para un nuevo desarrolloFor new development Razor Pages con Entity Framework CoreRazor Pages with Entity Framework Core
    Para mantener una aplicación MVCFor maintaining an MVC app MVC con Entity Framework CoreMVC with Entity Framework Core
  3. Lea una introducción a las características de ASP.NET Core que se aplican a todos los tipos de aplicaciones:Read an overview of ASP.NET Core features that apply to all app types:

  4. Examine la tabla de contenido para ver otros temas de interés.Browse the Table of Contents for other topics of interest.

* Hay un nuevo tutorial de API web que sigue completamente en el explorador, no es necesaria una instalación del IDE local.* There is a new web API tutorial that you follow entirely in the browser, no local IDE installation required. El código se ejecuta en un Azure Cloud Shell y se usa curl para realizar pruebas.The code runs in an Azure Cloud Shell, and curl is used for testing.

Cómo descargar un ejemploHow to download a sample

En muchos de los artículos y tutoriales se incluyen vínculos a código de ejemplo.Many of the articles and tutorials include links to sample code.

  1. Descargue el archivo ZIP del repositorio de ASP.NET.Download the ASP.NET repository zip file.
  2. Descomprima el archivo Docs-master.zip.Unzip the Docs-master.zip file.
  3. Use la dirección URL del vínculo de ejemplo para ir al directorio de ejemplo.Use the URL in the sample link to help you navigate to the sample directory.

Directivas de preprocesador en código de ejemploPreprocessor directives in sample code

Para mostrar varios escenarios, las aplicaciones de ejemplo usan las instrucciones #define y #if-#else/#elif-#endif de C# para compilar de forma selectiva y ejecutar secciones distintas de código de ejemplo.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. Para los ejemplos que usan este enfoque, establezca la instrucción #define en la parte superior de los archivos C# con el símbolo asociado con el escenario que quiera ejecutar.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. Algunos ejemplos requieren establecer el símbolo en la parte superior de varios archivos para ejecutar un escenario.Some samples require setting the symbol at the top of multiple files in order to run a scenario.

Por ejemplo, la siguiente lista de símbolos de #define indica que hay cuatro escenarios disponibles (un escenario por símbolo).For example, the following #define symbol list indicates that four scenarios are available (one scenario per symbol). La configuración de ejemplo actual ejecuta el escenario TemplateCode:The current sample configuration runs the TemplateCode scenario:

#define TemplateCode // or LogFromMain or ExpandDefault or FilterInCode

Para cambiar el ejemplo el escenario ExpandDefault, defina el símbolo ExpandDefault y deje los símbolos restantes comentados: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

Para obtener información sobre cómo usar directivas de preprocesador de C# para compilar selectivamente secciones de código, vea #define (Referencia de C#) e #if (Referencia de C#).For more information on using C# preprocessor directives to selectively compile sections of code, see #define (C# Reference) and #if (C# Reference).

Regiones en código de ejemploRegions in sample code

Algunas aplicaciones de ejemplo contienen secciones de código rodeadas de las instrucciones #region y #end-region de C#.Some sample apps contain sections of code surrounded by #region and #endregion C# statements. El sistema de creación de documentación inserta estas regiones en los temas de documentación representados.The documentation build system injects these regions into the rendered documentation topics.

Normalmente, los nombres de región contienen la palabra "snippet".Region names usually contain the word "snippet." En el ejemplo siguiente se muestra una región denominada 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

En el archivo Markdown del tema se hace referencia al fragmento de código de C# anterior con la siguiente línea: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)]

Puede ignorar sin problemas (o incluso quitar) las instrucciones #region y #endregion que rodean el código.You may safely ignore (or remove) the #region and #endregion statements that surround the code. No altere el código de estas instrucciones y tiene planeado ejecutar los escenarios de ejemplo descritos en el tema.Don't alter the code within these statements if you plan to run the sample scenarios described in the topic. Puede alterarlo si quiere experimentar con otros escenarios.Feel free to alter the code when experimenting with other scenarios.

Para obtener más información, consulte Contribute to the ASP.NET documentation: Code snippets (Contribución a la documentación de ASP.NET: fragmentos de código).For more information, see Contribute to the ASP.NET documentation: Code snippets.

Pasos siguientesNext steps

Para obtener más información, vea los siguientes recursos:For more information, see the following resources: