Compartir a través de


Blazor modelos de hospedaje de aplicaciones

Sugerencia

Este contenido es un extracto del libro electrónico "Blazor for ASP.NET Web Forms Developers for Azure" (Blazor para desarrolladores de ASP.NET Web Forms), disponible en Documentación de .NET o como un PDF descargable y gratuito que se puede leer sin conexión.

Miniatura de portada del libro electrónico Blazor para desarrolladores de ASP.NET Web Forms.

Blazor Las aplicaciones se pueden hospedar de una de las maneras siguientes:

  • En el lado cliente en el explorador en WebAssembly.
  • En el lado servidor en una aplicación ASP.NET Core.

Blazor WebAssembly Aplicaciones

Blazor WebAssembly las aplicaciones se ejecutan directamente en el navegador en un entorno de ejecución basado en .NET. Blazor WebAssembly las aplicaciones funcionan de forma similar a los marcos de JavaScript front-end como Angular o React. Sin embargo, en lugar de escribir JavaScript, escriba C#. El entorno de ejecución de .NET se descarga con la aplicación junto con el ensamblado de la aplicación y las dependencias necesarias. No se requieren complementos o extensiones del explorador.

Los ensamblados descargados son ensamblados de .NET normales, como usaría en cualquier otra aplicación de .NET. Dado que el entorno de ejecución admite .NET Standard, puede usar las bibliotecas de .NET Standard existentes con la BlazorWebAssembly aplicación. Sin embargo, estos ensamblados se seguirán ejecutando en el espacio aislado de seguridad del explorador. Algunas funcionalidades pueden producir PlatformNotSupportedException, como intentar acceder al sistema de archivos o abrir conexiones de red arbitrarias.

Cuando se carga la aplicación, se inicia el entorno de ejecución de .NET y se apunta al ensamblado de la aplicación. La lógica de inicio de la aplicación se ejecuta y se representan los componentes raíz. Blazor calcula las actualizaciones de la interfaz de usuario en función de la salida representada de los componentes. A continuación, se aplican las actualizaciones del DOM.

Blazor WebAssembly

Blazor WebAssembly las aplicaciones se ejecutan exclusivamente en el lado cliente. Estas aplicaciones se pueden implementar en soluciones de hospedaje de sitios estáticos, como GitHub Pages o Hospedaje de sitios web estáticos de Azure. .NET no es necesario en el servidor. La vinculación profunda a partes de la aplicación normalmente requiere una solución de enrutamiento en el servidor. La solución de enrutamiento redirige las solicitudes a la raíz de la aplicación. Por ejemplo, este redireccionamiento se puede controlar mediante reglas de reescritura de direcciones URL en IIS.

Para obtener todos los beneficios de Blazor y del desarrollo web completo de .NET, hospede su aplicación BlazorWebAssembly con ASP.NET Core. Mediante el uso de .NET tanto en el cliente como en el servidor, puede compartir fácilmente código y compilar la aplicación mediante un conjunto coherente de lenguajes, marcos y herramientas. Blazor proporciona plantillas cómodas para configurar una solución que contiene una BlazorWebAssembly aplicación y un proyecto host de ASP.NET Core. Cuando se compila la solución, los archivos estáticos compilados de la aplicación Blazor se hospedan en la aplicación de ASP.NET Core con el enrutamiento de reserva ya configurado.

Blazor Aplicaciones de servidor

Recordará de la descripción de la arquitectura de Blazor que los componentes de Blazor representan su salida en una abstracción intermedia denominada RenderTree. A continuación, el Blazor marco compara lo que se ha representado con lo que se ha representado anteriormente. Las diferencias se aplican al DOM. Blazor Los componentes se desacoplan de cómo se aplica su salida representada. Por lo tanto, los propios componentes no tienen que ejecutarse en el mismo proceso que el proceso que actualiza la interfaz de usuario. De hecho, ni siquiera se tienen que ejecutar en la misma máquina.

En Blazor Aplicaciones de servidor, los componentes se ejecutan en el servidor en lugar del lado cliente en el explorador. Los eventos de interfaz de usuario que se producen en el explorador se envían al servidor a través de una conexión en tiempo real. Los eventos se envían a las instancias de componente correctas. Los componentes se representan y la diferencia de interfaz de usuario calculada se serializa y se envía al explorador donde se aplica al DOM.

Blazor Servidor

El modelo de hospedaje del servidor puede resultarle familiar si ha utilizado ASP.NET AJAX y el control Blazor. El UpdatePanel control controla la aplicación de actualizaciones parciales de página en respuesta a los eventos desencadenadores en la página. Cuando se desencadena, solicita UpdatePanel una actualización parcial y, a continuación, la aplica sin necesidad de actualizar la página. El estado de la interfaz de usuario se administra mediante ViewState. Blazor Las aplicaciones de servidor son ligeramente diferentes en que la aplicación requiere una conexión activa con el cliente. Además, se mantiene todo el estado de la interfaz de usuario en el servidor. Aparte de esas diferencias, los dos modelos son conceptualmente similares.

Cómo elegir el modelo de hospedaje adecuado Blazor

Como se describe en la documentación del modelo de hospedaje de Blazor, los distintos modelos de hospedaje de Blazor tienen diferentes inconvenientes.

El BlazorWebAssembly modelo de hospedaje tiene las siguientes ventajas:

  • No hay ninguna dependencia del lado servidor de .NET. La aplicación funciona completamente después de descargarse en el cliente.
  • Los recursos y funcionalidades de cliente se aprovechan completamente.
  • El trabajo se descarga del servidor al cliente.
  • No es necesario que un servidor web ASP.NET Core hospede la aplicación. Los escenarios de implementación sin servidor son posibles (por ejemplo, servir la aplicación desde una red CDN).

Las desventajas del BlazorWebAssembly modelo de hospedaje son:

  • Las funcionalidades del explorador restringen la aplicación.
  • Se necesita hardware y software cliente compatible (por ejemplo, con WebAssembly).
  • El tamaño de descarga es mayor y las aplicaciones tardan más tiempo en cargarse.
  • El entorno de ejecución y las herramientas de .NET son menos maduros. Por ejemplo, existen limitaciones en la compatibilidad y la depuración de .NET Standard.

Por el contrario, el Blazor modelo de hospedaje del servidor ofrece las siguientes ventajas:

  • El tamaño de descarga es mucho menor que una aplicación del lado cliente y la aplicación se carga mucho más rápido.
  • La aplicación aprovecha al máximo las funcionalidades del servidor, incluido el uso de cualquier API compatible con .NET.
  • .NET en el servidor se usa para ejecutar la aplicación, por lo que las herramientas de .NET existentes, como la depuración, funcionan según lo previsto.
  • Se admiten clientes ligeros. Por ejemplo, las aplicaciones del lado servidor funcionan con exploradores que no admiten WebAssembly y en dispositivos con restricciones de recursos.
  • La base de código .NET/C# de la aplicación, incluido el código de componente de la aplicación, no se proporciona a los clientes.

Las desventajas del modelo de hospedaje del Blazor servidor son:

  • Mayor latencia de la interfaz de usuario. Cada interacción del usuario implica un salto de red.
  • No hay soporte técnico sin conexión. Si se produce un error en la conexión de cliente, la aplicación deja de funcionar.
  • La escalabilidad es difícil para las aplicaciones con muchos usuarios. El servidor debe administrar varias conexiones de cliente y controlar el estado del cliente.
  • Se requiere un servidor ASP.NET Core para atender la aplicación. Los escenarios de implementación sin servidor no son posibles. Por ejemplo, no se puede servir la aplicación desde una red CDN.

La lista anterior de desventajas puede ser intimidante, pero el modelo de hospedaje se puede cambiar más adelante. Independientemente del Blazor modelo de hospedaje seleccionado, el modelo de componentes es el mismo. En principio, se pueden usar los mismos componentes con cualquier modelo de hospedaje. El código de tu aplicación no cambia; sin embargo, es una buena práctica introducir abstracciones para que los componentes permanezcan independientes del modelo de hospedaje. Las abstracciones permiten a la aplicación adoptar más fácilmente un modelo de hospedaje diferente.

Implementación de la aplicación

Las aplicaciones de formularios Web Forms de ASP.NET normalmente se hospedan en IIS en un clúster o equipo Windows Server. Blazor las aplicaciones también pueden:

  • Se hospeda en IIS, ya sea como archivos estáticos o como una aplicación de ASP.NET Core.
  • Aproveche la flexibilidad de ASP.NET Core para hospedarse en varias plataformas e infraestructuras de servidor. Por ejemplo, puede hospedar una Blazor aplicación mediante Nginx o Apache en Linux. Para obtener más información sobre cómo publicar e implementar Blazor aplicaciones, consulte la Blazor documentación de hospedaje e implementación.

En la sección siguiente, veremos cómo se configuran los proyectos para las aplicaciones de servidor Blazor, WebAssembly y Blazor.