Sobre .NET CoreAbout .NET Core

.NET Core tiene las siguientes características:.NET Core has the following characteristics:

  • Multiplataforma: se ejecuta en los sistemas operativos Windows, macOS y Linux.Cross-platform: Runs on Windows, macOS, and Linux operating systems.
  • Coherente entre arquitecturas: el código se ejecuta con el mismo comportamiento en varias arquitecturas, como x64, x86 y ARM.Consistent across architectures: Runs your code with the same behavior on multiple architectures, including x64, x86, and ARM.
  • Herramientas de línea de comandos: incluye herramientas de línea de comandos sencillas que se pueden usar para el desarrollo local y en escenarios de integración continua.Command-line tools: Includes easy-to-use command-line tools that can be used for local development and in continuous-integration scenarios.
  • Implementación flexible: Se pueden incluir en la aplicación o se pueden instalar de forma paralela (instalaciones a nivel de usuario o de sistema).Flexible deployment: Can be included in your app or installed side-by-side (user-wide or system-wide installations). Se puede usar con contenedores de Docker.Can be used with Docker containers.
  • Compatible: .NET Core es compatible con .NET Framework, Xamarin y Mono mediante .NET Standard.Compatible: .NET Core is compatible with .NET Framework, Xamarin, and Mono, via .NET Standard.
  • Código abierto: la plataforma .NET Core es de código abierto, con licencias de MIT y Apache 2.Open source: The .NET Core platform is open source, using MIT and Apache 2 licenses. .NET Core es un proyecto de .NET Foundation..NET Core is a .NET Foundation project.
  • Compatible con Microsoft: .NET Core incluye compatibilidad con Microsoft, como se indica en .NET Core Support (Compatibilidad de .NET Core).Supported by Microsoft: .NET Core is supported by Microsoft, per .NET Core Support.

LenguajesLanguages

Los lenguajes C#, Visual Basic y F# pueden usarse para escribir aplicaciones y bibliotecas para .NET Core.C#, Visual Basic, and F# languages can be used to write applications and libraries for .NET Core. Puede usar estos idiomas en su editor de texto o en su entorno de desarrollo integrado (IDE) favorito, incluidos:These languages can be used in your favorite text editor or Integrated Development Environment (IDE), including:

Esta integración la proporcionan, en parte, los colaboradores de los proyectos OmniSharp e Ionide.This integration is provided, in part, by the contributors of the OmniSharp and Ionide projects.

APIAPIs

.NET Core expone las API de muchos escenarios. A continuación se muestran algunos de estos escenarios:.NET Core exposes APIs for many scenarios, a few of which follow:

.NET Core proporciona compatibilidad con las API .NET Framework y Mono API implementando la especificación de .NET Standard..NET Core provides compatibility with .NET Framework and Mono APIs by implementing the .NET Standard specification.

Marcos de trabajoFrameworks

Se han creado varias plataformas en .NET Core:Multiple frameworks have been built on top of .NET Core:

ComposiciónComposition

.NET Core consta de las siguientes partes:.NET Core is composed of the following parts:

  • El runtime de .NET Core, que proporciona un sistema de tipos, la carga de ensamblados, un colector de elementos no usados, interoperabilidad nativa y otros servicios básicos.The .NET Core runtime, which provides a type system, assembly loading, a garbage collector, native interop, and other basic services. Las bibliotecas de .NET Core Framework proporcionan tipos de datos primitivos, tipos de composición de aplicaciones y utilidades fundamentales..NET Core framework libraries provide primitive data types, app composition types, and fundamental utilities.
  • El runtime de ASP.NET, el cual proporciona un marco para crear aplicaciones modernas conectadas a Internet y basadas en la nube, como aplicaciones web, aplicaciones de IoT y back-ends móviles.The ASP.NET runtime, which provides a framework for building modern cloud-based internet connected applications, such as web apps, IoT apps, and mobile backends.
  • Las herramientas de CLI de .NET Core y compiladores de lenguaje (Roslyn y F#) que habilitan la experiencia de desarrollador de .NET Core.The .NET Core CLI tools and language compilers (Roslyn and F#) that enable the .NET Core developer experience.
  • La herramienta dotnet, que se usa para iniciar aplicaciones .NET Core y herramientas de CLI.The dotnet tool, which is used to launch .NET Core apps and CLI tools. Selecciona el runtime y lo hospeda, proporciona una directiva de carga de ensamblados e inicia aplicaciones y herramientas.It selects the runtime and hosts the runtime, provides an assembly loading policy, and launches apps and tools.

Estos componentes se distribuyen de las formas siguientes:These components are distributed in the following ways:

  • Runtime de .NET Core: incluye el runtime y las bibliotecas de la plataforma de .NET Core..NET Core Runtime -- includes the .NET Core runtime and framework libraries.
  • Runtime de ASP.NET Core: incluye el runtime y las bibliotecas de la plataforma de ASP.NET Core y .NET Core.ASP.NET Core Runtime -- includes ASP.NET Core and .NET Core runtime and framework libraries.
  • SDK de .NET Core: incluye las herramientas de CLI de .NET, el runtime de ASP.NET Core y el runtime y la plataforma de .NET Core..NET Core SDK -- includes the .NET CLI Tools, ASP.NET Core runtime, and .NET Core runtime and framework.

Código AbiertoOpen source

.NET Core es código abierto (licencia MIT) y fue presentado a .NET Foundation por Microsoft en 2014..NET Core is open source (MIT license) and was contributed to the .NET Foundation by Microsoft in 2014. Ahora es uno de los proyectos más activos de .NET Foundation.It's now one of the most active .NET Foundation projects. Pueden usarlo todos los individuos y organizaciones con fines personales, académicos o comerciales.It can be used by individuals and companies, including for personal, academic, or commercial purposes. Varias empresas usan .NET Core como parte de aplicaciones, herramientas, nuevas plataformas y servicios de hospedaje.Multiple companies use .NET Core as part of apps, tools, new platforms, and hosting services. Algunas de estas empresas realizan contribuciones significativas a .NET Core en GitHub y proporcionan una guía sobre la dirección del producto como parte del Technical Steering Group de .NET Foundation.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.

Diseñado para adaptabilidadDesigned for adaptability

.NET Core se ha creado como un producto muy similar, pero único, en comparación con otros productos .NET..NET Core has been built as a very similar but unique product compared to other .NET products. Se ha diseñado para permitir una amplia adaptabilidad a nuevas plataformas y cargas de trabajo, y tiene varios puertos de CPU y sistemas operativos disponibles (y se puede portar a muchos más).It was designed to enable broad adaptability to new platforms and workloads and it has several OS and CPU ports available (and it may be ported to many more).

El producto se divide en varias partes, lo que permite que las distintas partes se adapten a nuevas plataformas en horas diferentes.The product is broken into several pieces, enabling the various parts to be adapted to new platforms at different times. El entorno de tiempo de ejecución y las bibliotecas fundamentales específicas de la plataforma se deben portar como una unidad.The runtime and platform-specific foundational libraries must be ported as a unit. Las bibliotecas independientes de la plataforma deben funcionar, por diseño, en todas las plataformas, tal y como están.Platform-agnostic libraries should work as-is on all platforms, by construction. Hay una tendencia del proyecto a reducir las implementaciones específicas de la plataforma con el fin de aumentar la eficiencia del desarrollador, donde se prefiere el código C# independiente de la plataforma siempre que se pueda implementar completa o parcialmente un algoritmo o una API de esa forma.There's a project bias towards 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.

Le gente se pregunta cómo se implementa .NET Core para que se admita en varios sistemas operativos.People commonly ask how .NET Core is implemented in order to support multiple operating systems. Normalmente preguntan si hay otras implementaciones o si se usa compilación condicional.They typically ask if there are separate implementations or if conditional compilation is used. Son las dos cosas, con una fuerte tendencia hacia la compilación condicional.It's both, with a strong bias towards conditional compilation.

En el gráfico siguiente puede ver que la gran mayoría de CoreFX es código independiente de la plataforma que se comparte en todas las plataformas.You can see in the following chart that the vast majority of CoreFX is platform-neutral code that is shared across all platforms. El código independiente de la plataforma se puede implementar como un solo ensamblado portátil que se usa en todas las plataformas.Platform-neutral code can be implemented as a single portable assembly that is used on all platforms.

CoreFX: líneas de código por plataforma

Las implementaciones de Windows y Unix son de tamaño similar.Windows and Unix implementations are similar in size. Windows tiene una implementación mayor, ya que CoreFX implementa algunas características que son exclusivas de Windows, como Microsoft.Win32.Registry, pero aún no implementa muchos conceptos exclusivos de Unix.Windows has a larger implementation since CoreFX implements some Windows-only features, such as Microsoft.Win32.Registry but doesn't yet implement many Unix-only concepts. También verá que la mayoría de las implementaciones de Linux y macOS se comparten en una implementación de Unix, mientras que las implementaciones específicas de macOS y Linux son bastante similares en tamaño.You'll 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.

Hay una mezcla de bibliotecas específicas de la plataforma e independientes de la plataforma en .NET Core.There's a mix of platform-specific and platform-neutral libraries in .NET Core. Puede ver el patrón en algunos ejemplos:You can see the pattern in a few examples:

Comparación con otras implementaciones de .NETComparisons to other .NET implementations

Puede resultar más fácil comprender la naturaleza de .NET Core si se compara con las implementaciones de .NET existentes.It's probably easier to understand the size and shape of .NET Core by comparing it to existing .NET implementations.

Comparación con .NET FrameworkComparison with .NET Framework

Microsoft presentó la plataforma .NET en el año 2000, y a partir de ese momento ha ido evolucionando..NET was first announced by Microsoft in 2000 and then evolved from there. .NET Framework ha sido la principal implementación de .NET producida por Microsoft durante ese periodo de casi dos décadas.The .NET Framework has been the primary .NET implementation produced by Microsoft during that nearly two decade period.

Las principales diferencias entre .NET Core y .NET Framework son:The major differences between .NET Core and the .NET Framework:

  • Modelos de aplicación: .NET Core no es compatible con todos los modelos de aplicación de .NET Framework.App-models -- .NET Core doesn't support all the .NET Framework app-models. En concreto, no es compatible con los formularios Web Forms ASP.NET ni ASP.NET MVC, pero sí con ASP.NET Core MVC.In particular, it doesn't support ASP.NET Web Forms and ASP.NET MVC, but it supports ASP.NET Core MVC. Además, a partir de .NET Core 3.0, .NET Core también es compatible con WPF y Windows Forms (solo en Windows).And starting with .NET Core 3.0, .NET Core also supports WPF and Windows Forms on Windows only.
  • API: .NET Core contiene un amplio subconjunto de bibliotecas de clases base de .NET Framework con una factorización distinta (los nombres de ensamblado son distintos y los miembros expuestos en los tipos difieren en los casos clave).APIs -- .NET Core contains a large subset of .NET Framework Base Class Library, with a different factoring (assembly names are different; members exposed on types differ in key cases). En algunos casos, estas diferencias requieren cambios en el origen del puerto de .NET Core.In some cases, these differences require changes to port source to .NET Core. Para obtener más información, vea Analizador de portabilidad de .NET.For more information, see The .NET Portability Analyzer. .NET Core implementa la especificación de la API .NET Standard..NET Core implements the .NET Standard API specification.
  • Subsistemas: .NET Core implementa un subconjunto de los subsistemas de .NET Framework, de cara a una implementación y un modelo de programación más sencillos.Subsystems -- .NET Core implements a subset of the subsystems in the .NET Framework, with the goal of a simpler implementation and programming model. Por ejemplo, no se admite seguridad de acceso del código (CAS), aunque se admite la reflexión.For example, Code Access Security (CAS) isn't supported, while reflection is supported.
  • Plataformas: .NET Framework admite Windows y Windows Server, mientras que .NET Core también es compatible con macOS y Linux.Platforms -- The .NET Framework supports Windows and Windows Server while .NET Core also supports macOS and Linux.
  • Código abierto: .NET Core es código abierto, mientras que un subconjunto de .NET Framework de solo lectura es código abierto.Open Source -- .NET Core is open source, while a read-only subset of the .NET Framework is open source.

Aunque .NET Core es única y tiene diferencias significativas con .NET Framework y otras implementaciones de .NET, permite compartir código fácilmente entre estas implementaciones mediante técnicas de uso compartido de origen o binarias.While .NET Core is unique and has significant differences to the .NET Framework and other .NET implementations, it's straightforward to share code between these implementations, using either source or binary sharing techniques.

Debido a que .NET Core admite la instalación en paralelo y el entorno de ejecución es completamente independiente de .NET Framework, puede instalarse en máquinas con .NET Framework instalado sin ningún problema.Because .NET Core supports side-by-side installation and its runtime is completely independent of the .NET Framework, it can be installed on machines with .NET Framework installed without any issues.

Comparación con MonoComparison with Mono

Mono es la multiplataforma original de .NET.Mono is the original cross-platform of .NET. Empezó como una alternativa de código abierto para .NET Framework y pasó a tener como objetivo los dispositivos móviles cuando los dispositivos iOS y Android se popularizaron.It started out as an open-source) alternative to .NET Framework and transitioned to targeting mobile devices as iOS and Android devices became popular. Se puede considerar un clon de la comunidad de .NET Framework.It can be thought of as a community clone of the .NET Framework. El equipo de proyecto de Mono se basó en los estándares de .NET abiertos (en particular, ECMA 335) publicados por Microsoft para proporcionar una implementación compatible.The Mono project team relied on the open .NET standards (notably ECMA 335) published by Microsoft to provide a compatible implementation.

Las principales diferencias entre .NET Core y Mono:The major differences between .NET Core and Mono:

  • Modelos de aplicación: Mono admite un subconjunto de los modelos de aplicación de .NET Framework (por ejemplo, Windows Forms) y algunos adicionales para el desarrollo móvil (por ejemplo, Xamarin.iOS) mediante el producto de Xamarin.App-models -- Mono supports a subset of the .NET Framework app-models (for example, Windows Forms) and some additional ones for mobile development (for example, Xamarin.iOS) through the Xamarin product. .NET Core no es compatible con Xamarin..NET Core doesn't support Xamarin.
  • API: Mono admite un gran subconjunto de las API de .NET Framework, con los mismos nombres de ensamblado y factorización.APIs -- Mono supports a large subset of the .NET Framework APIs, using the same assembly names and factoring.
  • PlataformasMono admite muchas plataformas y CPU.Platforms -- Mono supports many platforms and CPUs.
  • Código abiertoMono y .NET Core usan la licencia MIT y son proyectos de .NET Foundation.Open Source -- Mono and .NET Core both use the MIT license and are .NET Foundation projects.
  • Enfoque: el foco principal de Mono en los últimos años es plataformas móviles, aunque .NET Core se centra en las cargas de trabajo de la nube y de escritorio.Focus -- The primary focus of Mono in recent years is mobile platforms, while .NET Core is focused on cloud and desktop workloads.

El futuroThe future

Se anunció que .NET 5 será la próxima versión de .NET Core y representa una unificación de la plataforma.It was announced that .NET 5 will be the next release of .NET Core and represents a unification of the platform. El proyecto pretende mejorar .NET de varias maneras clave:The project aims to improve .NET in a few key ways:

  • Producir un único runtime y un marco de .NET que se pueda usar en todas partes y que tenga comportamientos de runtime y experiencias de desarrollador uniformes.Produce a single .NET runtime and framework that can be used everywhere and that has uniform runtime behaviors and developer experiences.
  • Ampliar las funcionalidades de .NET con las mejores características de .NET Core, .NET Framework, Xamarin y Mono.Expand the capabilities of .NET by taking the best of .NET Core, .NET Framework, Xamarin and Mono.
  • Desarrollar el producto a partir de un solo código base que mejore todos los escenarios, que los desarrolladores (Microsoft y la comunidad) puedan expandir y en el que puedan trabajar juntos.Build that product out of a single code-base that developers (Microsoft and the community) can work on and expand together and that improves all scenarios.

Para obtener más información sobre lo que está planeado para .NET 5, vea Presentación de .NET 5.For more details about what's being planned for .NET 5, see Introducing .NET 5.