.NET Core 2.2 lanzado. Que hay de nuevo (1 de 3)

El 4 de diciembre, se lanzó .NET Core 2.2. "¿Quién puede sorprenderse con las noticias hace una semana?" - preguntas y tendrás razón ... y por cierto, ¿ya te has actualizado? )


Ahora al caso. La nueva versión incluye mejoras de diagnóstico en tiempo de ejecución, soporte para ARM32 para Windows y soporte para Azure Active Directory para SQL Client. Las mayores mejoras a esta versión son ASP.NET Core.



ASP.NET Core 2.2 y Entity Framework Core 2.2 se lanzaron el mismo día.


.NET Core 2.2 para Windows, macOS y Linux ya te están esperando en los enlaces:



El soporte para .NET Core 2.2 está presente en Visual Studio 15.9 , Visual Studio para Mac y Visual Studio Code.


Los contenedores Docker están disponibles en microsoft / dotnet para .NET Core y ASP.NET Core.


La información más completa sobre esta versión se puede encontrar en las notas de la versión .NET Core 2.2 . Hay instrucciones adicionales, problemas conocidos y formas de solucionarlos. Por favor, háganos saber de cualquier falla encontrada en este documento en los comentarios en dotnet / core # 2098 .


Compilación escalonada


La compilación multinivel es una característica que permite que el tiempo de ejecución use el compilador JIT de manera más inteligente para lograr un mejor rendimiento tanto en la etapa de lanzamiento de la aplicación como en la etapa de maximizar el rendimiento durante su operación. La capacidad de hacer esto se agregó como una característica opcional en .NET Core 2.1 y posteriormente se activó de manera predeterminada en .NET Core 2.2 Preview 2. Pensamos y decidimos que aún no estábamos seguros del significado de su inclusión en la versión final de .NET Core 2.2, así que nuevamente lo hizo opcional, al igual que en .NET Core 2.1. Sin embargo, en .NET Core 3.0 vamos a cambiar por completo.


Eventos de tiempo de ejecución


Por lo general, tiene sentido supervisar los servicios de tiempo de ejecución, por ejemplo, GC, JIT o ThreadPool del proceso actual, para comprender cómo se comportan estos servicios durante la vida útil de la aplicación. En los sistemas Windows, esto generalmente se hace usando ETW y monitoreando eventos ETW para el proceso actual. Este método todavía funciona muy bien, pero usar ETW no siempre es posible, y cuando es posible puede ser difícil. Por ejemplo, está ejecutando en un entorno con privilegios insuficientes o en Linux / macOS.


Comenzando con .NET Core 2.2, los eventos CoreCLR pueden ser manejados por la clase EventListener . Estos eventos describen el comportamiento de GC, JIT, ThreadPool e interope. Estos son los mismos eventos que ahora están disponibles como parte del proveedor CoreCLR ETW para Windows. Este enfoque permite a las aplicaciones procesar eventos o utilizar mecanismos de transporte para enviar eventos al servicio de agregación de telemetría.


Así es como puede suscribirse a eventos:


 internal sealed class SimpleEventListener : EventListener { //     EventSource. protected override void OnEventSourceCreated(EventSource eventSource) { //   EventSource  .NET runtime     . if (eventSource.Name.Equals("Microsoft-Windows-DotNETRuntime")) { EnableEvents(eventSource, EventLevel.Verbose, (EventKeywords)(-1)); } } //     . protected override void OnEventWritten(EventWrittenEventArgs eventData) { //     . Console.WriteLine($"ThreadID = {eventData.OSThreadId} ID = {eventData.EventId} Name = {eventData.EventName}"); for (int i = 0; i < eventData.Payload.Count; i++) { string payloadString = eventData.Payload[i] != null ? eventData.Payload[i].ToString() : string.Empty; Console.WriteLine($"\tName = \"{eventData.PayloadNames[i]}\" Value = \"{payloadString}\""); } Console.WriteLine("\n"); } } 

Soporte de AccessToken en SqlConnection


El proveedor ADO.NET para SQL Server, SqlClient, ahora admite la configuración de la propiedad AccessToken, que permite la autenticación de conexiones a SQL Server mediante Azure Active Directory. Para comenzar a usar esta función, debe obtener el token de acceso mediante la Biblioteca de autenticación de Active Directory para .NET, que viene con el paquete NuGet de Microsoft.IdentityModel.Clients.ActiveDirectory.


Aquí se explica cómo autenticar las conexiones a SQL Server con Azure AD:


 //   ,  ADAL.NET var authContext = new AuthenticationContext(authority); var authResult = await authContext.AcquireTokenAsync(appUri, clientCredential); //   SQL Server var sqlConnection = new SqlConnection(connectionString); sqlConnection.AccessToken = authResult.AccessToken; await sqlConnection.OpenAsync(); 

Para obtener más información, consulte la documentación de ADAL.NET y Azure Active Directory .


Código de ejecución antes de Main


.NET Core ahora le permite incrustar código antes de iniciar el método principal, y esto se hace usando el gancho de inicio. Estos enlaces permiten que el host personalice el comportamiento de la aplicación después de que se haya implementado, sin tener que reconstruir o modificar el código.


Aquí, queremos decir que los proveedores de hosting crearán sus propias configuraciones y políticas, incluidas las configuraciones que podrían afectar el comportamiento de carga del punto de entrada principal a la aplicación, por ejemplo, AssemblyLoadContext. El enlace se puede usar para configurar el seguimiento o implementar telemetría, conectar devoluciones de llamada o cualquier otra configuración de comportamiento específica para un entorno de tiempo de ejecución particular. Los ganchos son una entidad completamente separada con respecto al punto de entrada y, por lo tanto, no requieren cambiar el código de la aplicación.


Una descripción más detallada se encuentra en la documentación .


Windows ARM32


Estamos agregando soporte para Windows ARM32, similar al que ya existe para Linux ARM32, comenzando con .NET Core 2.1. Windows ha sido compatible con WIN32 durante algún tiempo, gracias a Windows IoT Core . Como parte de la versión de Windows Server 2019, se ha agregado compatibilidad con ARM32 a Nanoserver. .NET Core ahora se puede usar tanto en Nanoserver como en IoT Core.


Los contenedores Docker Nanoserver para ARM32, como siempre, aparecerán en microsoft / dotnet en el Docker Hub.


Nos gustaría publicar ensamblados de .NET Core para Windows ARM32 hoy, pero nos hemos topado con un error tardío que hace que publicarlos no tenga sentido. Esperamos que aparezcan ensamblados para .NET Core 2.2.1 en enero de 2019.


Plataformas Soportadas


.NET Core 2.2 es compatible con los siguientes sistemas operativos:


  • Cliente de Windows: 7, 8.1, 10 (1607+)
  • Servidor Windows: 2008 R2 SP1 +
  • macOS: 10.12+
  • RHEL: 6+
  • Fedora: 26+
  • Ubuntu: 16.04+
  • Debian: 9+
  • SLES: 12+
  • openSUSE: 42.3+
  • Alpino: 3.7+

Plataformas de hardware compatibles:


  • x64: Windows, macOS y Linux
  • x86 - Windows
  • ARM32 - Linux (Ubuntu 16.04+, Debian 9+)
  • ARM32 - Windows (1809+; disponible en enero)

Conclusión


.NET Core 2.2 es una versión que presenta importantes mejoras en la plataforma. Le recomendamos encarecidamente que lo pruebe y nos diga qué piensa al respecto. Además, tiene sentido comprender las mejoras en ASP.NET Core 2.2 y Entity Framework 2.2.


No olvide que las entradas para DotNext a partir del 1 de enero subirán de precio. Personal, por mil, y Estándar, por dos mil. Los detalles sobre Early Bird están en el sitio .

Source: https://habr.com/ru/post/es433144/


All Articles