Estructura del proyecto de Blazor de ASP.NET Core
Nota
Esta no es la versión más reciente de este artículo. Para la versión actual, consulta la versión .NET 8 de este artículo.
Advertencia
Esta versión de ASP.NET Core ya no se admite. Para obtener más información, consulta la Directiva de soporte técnico de .NET y .NET Core. Para la versión actual, consulta la versión .NET 8 de este artículo.
Importante
Esta información hace referencia a un producto en versión preliminar, el cual puede sufrir importantes modificaciones antes de que se publique la versión comercial. Microsoft no proporciona ninguna garantía, expresa o implícita, con respecto a la información proporcionada aquí.
Para la versión actual, consulte la versión .NET 8 de este artículo.
En este artículo se describen los archivos y las carpetas que componen una aplicación Blazor generada a partir de una plantilla de proyecto Blazor.
Blazor Web App
Plantilla de proyecto de Blazor Web App: blazor
La plantilla de proyecto de Blazor Web App proporciona un único punto de partida para usar componentes Razor (.razor
) para compilar cualquier estilo de interfaz de usuario web, tanto en el lado servidor representado como en el lado cliente. Combina los puntos fuertes de los modelos de hospedaje existentes Blazor Server y Blazor WebAssembly con la representación del lado servidor, la representación de transmisiones, la navegación mejorada y el control de formularios, y la capacidad de agregar interactividad mediante Blazor Server o Blazor WebAssembly por componente.
Si se selecciona tanto la representación del lado cliente (CSR) como la representación interactiva del lado servidor (SSR interactiva) en la creación de la aplicación, la plantilla de proyecto usará el modo de representación automática interactiva. El modo de representación automática interactiva utiliza inicialmente la SSR interactiva, mientras el lote de aplicaciones .NET y el runtime se descargan en el explorador. Una vez activado el runtime de WebAssembly de .NET, la representación cambia a CSR.
La plantilla de Blazor Web App habilita la representación interactiva y estática del lado servidor con un solo proyecto. Si también habilita la representación interactiva de WebAssembly, el proyecto incluye un proyecto de cliente adicional (.Client
) para los componentes basados en WebAssembly. La salida compilada del proyecto de cliente se descarga en el explorador y se ejecuta en el cliente. Los componentes que usen los modos interactivos de representación automática o WebAssembly deben encontrarse en el proyecto .Client
.
La estructura de carpetas de componentes del proyecto .Client
difiere de la estructura principal de carpetas del proyecto de Blazor Web App porque el proyecto principal es un proyecto estándar ASP.NET Core. El proyecto principal debe tener en cuenta otros recursos para proyectos ASP.NET Core que no están relacionados con Blazor. Puedes usar la estructura de carpetas de componentes que desees en el proyecto .Client
. Si lo deseas, refleje el diseño de la carpeta de componentes del proyecto principal en el proyecto .Client
. Ten en cuenta que los espacios de nombres podrían requerir ajustes para tales recursos como los archivos de diseño al mover componentes a carpetas diferentes de las que se usen en la plantilla de proyecto.
Encontrarás más información sobre los componentes y los modos de representación en los artículos Componentes Razor ASP.NET Core y Modos de representación Blazor ASP.NET Core.
En función del modo de representación interactivo seleccionado en la creación de la aplicación, la carpeta Layout
se encuentra en el proyecto de servidor de la carpeta Components
o en la raíz del proyecto .Client
. La carpeta contiene los siguientes componentes de diseño y hojas de estilo:
- El componente
MainLayout
(MainLayout.razor
) es el componente de diseño de la aplicación. MainLayout.razor.css
es la hoja de estilos del diseño principal de la aplicación.- El componente
NavMenu
(NavMenu.razor
) implementa la navegación de barra lateral. El componente incluye componentesNavLink
(NavLink), que representa los vínculos de navegación a otros componentes Razor. El componente NavLink indica al usuario cuál es el componente que se está mostrando actualmente. NavMenu.razor.css
es la hoja de estilos del menú de navegación de la aplicación.
El componente Routes
(Routes.razor
) está en el proyecto de servidor o en el proyecto .Client
, y configura el enrutamiento mediante el componente Router. En el caso de los componentes interactivos del lado cliente, el componente Router intercepta la navegación del explorador y representa la página que coincide con la dirección solicitada.
La carpeta Components
del proyecto de servidor contiene los componentes Razor del lado del servidor de la aplicación. Los componentes compartidos a menudo se colocan en la raíz de la carpeta Components
, mientras que los componentes de diseño y página normalmente se colocan en carpetas dentro de la carpeta Components
.
La carpeta Components/Pages
del proyecto de servidor contiene los componentes Razor enrutables del lado servidor de la aplicación. La ruta de cada página se especifica usando la directiva @page
.
El componente App
(App.razor
) es el componente raíz de la aplicación con marcado HTML <head>
, el componente Routes
y la etiqueta Blazor<script>
. El componente raíz es el primer componente que carga la aplicación.
Un archivo _Imports.razor
de cada uno de los servidores y proyectos .Client
incluye directivas comunes Razor para componentes Razor de cualquiera de los proyectos, como directivas @using
para espacios de nombres.
La carpeta Properties
del proyecto de servidor contiene la configuración del entorno de desarrollo del archivo launchSettings.json
.
Nota:
El perfil http
precede al perfil https
en el archivo launchSettings.json
. Cuando se ejecuta una aplicación con la CLI de .NET, la aplicación se ejecuta en un punto de conexión HTTP porque el primer perfil encontrado es http
. El orden de perfil facilita la transición de la adopción de HTTPS para usuarios de Linux y macOS. Si prefieres iniciar la aplicación con la CLI de .NET sin tener que pasar la opción -lp https
o --launch-profile https
al comando dotnet watch
(o dotnet run
), simplemente coloque el perfil https
encima del perfil http
en el archivo.
La carpeta wwwroot
del proyecto de servidor es la carpeta raíz web del proyecto de servidor que contiene los recursos estáticos públicos de la aplicación.
El archivo Program.cs
del proyecto de servidor es el punto de entrada del proyecto de servidor que configura el host de la aplicación web de ASP.NET Core y contiene la lógica de inicio de la aplicación, incluidos los registros de servicio y la configuración, los registros y la canalización de procesamiento de solicitudes:
- Los servicios de los componentes Razor se agregan mediante una llamada a AddRazorComponents. AddInteractiveServerComponents agrega servicios para admitir la representación de los componentes de servidor interactivos. AddInteractiveWebAssemblyComponents agrega servicios para admitir la representación de los componentes de WebAssembly interactivo.
- MapRazorComponents detecta los componentes disponibles y especifica el componente raíz de la aplicación (el primer componente cargado), que de forma predeterminada es el componente
App
(App.razor
). AddInteractiveServerRenderMode configura la representación interactiva del lado servidor (SSR interactiva) para la aplicación. AddInteractiveWebAssemblyRenderMode configura el modo de representación de WebAssembly interactivo para la aplicación.
Los archivos de configuración de la aplicación (appsettings.Development.json
, appsettings.json
) en el servidor o proyecto .Client
proporcionan valores de configuración. En el proyecto de servidor, los archivos de configuración se encuentran en la raíz del proyecto. En el proyecto .Client
, los archivos de configuración se consumen desde la carpeta raíz web, wwwroot
.
En el proyecto .Client
:
La carpeta
Pages
contiene los componentes Razor enrutables del lado cliente. La ruta de cada página se especifica usando la directiva@page
.La carpeta
wwwroot
es la carpeta raíz web del proyecto de servidor para el proyecto.Client
que contiene los recursos estáticos públicos de la aplicación.El archivo
Program.cs
es el punto de entrada del proyecto del lado cliente que configura el host de WebAssembly y contiene la lógica de inicio de la aplicación, incluidos los registros de servicio y la configuración, los registros y la canalización de procesamiento de solicitudes.
Pueden aparecer archivos y carpetas adicionales en una aplicación generada a partir de una plantilla de proyecto de Blazor Web App cuando se configuran opciones adicionales. Por ejemplo, la generación de una aplicación con ASP.NET Core Identity incluye recursos adicionales para las características de autenticación y autorización.
Blazor Server
Plantillas de proyecto de Blazor Server: blazorserver
, blazorserver-empty
Las plantillas de Blazor Server crean los archivos iniciales y la estructura de directorios de una aplicación de Blazor Server:
- Si se usa la plantilla de
blazorserver
, la aplicación se rellena con lo siguiente:- Código de demostración para un componente
FetchData
que carga datos de un servicio de previsión meteorológica (WeatherForecastService
) y la interacción del usuario con un componenteCounter
. - Kit de herramientas de front-end de Bootstrap.
- Código de demostración para un componente
- Si se usa la plantilla de
blazorserver-empty
, la aplicación se crea sin código de demostración ni Bootstrap.
Estructura de proyecto:
Carpeta
Data
: contiene la claseWeatherForecast
y la implementación deWeatherForecastService
que proporciona datos meteorológicos de ejemplo al componenteFetchData
de la aplicación.Carpeta
Pages
: contiene los componentes Razor enrutables de la aplicación de Blazor (.razor
) y la página de Razor raíz de una aplicación Blazor Server. La ruta de cada página se especifica usando la directiva@page
. En la plantilla se incluye lo siguiente:_Host.cshtml
: página raíz de la aplicación implementada como página Razor:- Cuando se solicita inicialmente cualquier página de la aplicación, esta página se representa y se devuelve en la respuesta.
- La página Host especifica dónde se va a representar el componente
App
raíz (App.razor
).
- Componente
Counter
(Counter.razor
): implementa la página Counter. - Componente
Error
(Error.razor
): se representa cuando se produce una excepción no controlada en la aplicación. - Componente
FetchData
(FetchData.razor
): implementa la página Fetch data (Recuperar datos). - Componente
Index
(Index.razor
): implementa la página Home.
Carpeta
Properties
: contiene la configuración del entorno de desarrollo del archivolaunchSettings.json
.Carpeta
Shared
: contiene los siguientes componentes y hojas de estilos compartidos:- Componente
MainLayout
(MainLayout.razor
): El componente de diseño de la aplicación. MainLayout.razor.css
: hoja de estilos del diseño principal de la aplicación.- Componente
NavMenu
(NavMenu.razor
): implementa la navegación de barra lateral. Incluye el componenteNavLink
(NavLink), que representa los vínculos de navegación a otros componentes Razor. El componente NavLink indica automáticamente un estado seleccionado cuando su componente se carga, lo que ayuda al usuario a saber qué componente se está mostrando actualmente. NavMenu.razor.css
: hoja de estilos del menú de navegación de la aplicación.- Componente
SurveyPrompt
(SurveyPrompt.razor
): componente de encuesta Blazor.
- Componente
Carpeta
wwwroot
: carpeta Web Root (raíz web) de la aplicación que contiene los recursos estáticos de la aplicación._Imports.razor
: Engloba las directivas de Razor comunes que se van a incluir en los componentes de la aplicación (.razor
), como las directivas@using
de los espacios de nombres.App.razor
: componente raíz de la aplicación que configura el enrutamiento del lado cliente mediante el componente Router. El componente Router intercepta la navegación del explorador y representa la página que coincide con la dirección solicitada.appsettings.json
y archivos de configuración de la aplicación de entorno: Proporciona los valores de configuración de la aplicación.Program.cs
: punto de entrada de la aplicación que configura el host de ASP.NET Core y contiene la lógica de inicio de la aplicación, incluidos los registros de servicio y la configuración de canalización de procesamiento de solicitudes:- Especifica los servicios de inserción de dependencias de la aplicación. Los servicios se agregan llamando a AddServerSideBlazor, y el elemento
WeatherForecastService
se agrega al contenedor de servicios para que lo use el componenteFetchData
de ejemplo. - configura la canalización de administración de solicitudes de la aplicación:
- Se llama a MapBlazorHub para configurar un punto de conexión para la conexión en tiempo real con el explorador. La conexión se crea con SignalR, que es un marco para agregar funcionalidad web a las aplicaciones en tiempo real.
- Se llama a
MapFallbackToPage("/_Host")
para configurar la página raíz de la aplicación (Pages/_Host.cshtml
) y habilitar la navegación.
- Especifica los servicios de inserción de dependencias de la aplicación. Los servicios se agregan llamando a AddServerSideBlazor, y el elemento
Pueden aparecer archivos y carpetas adicionales en una aplicación generada a partir de una plantilla de proyecto de Blazor Server cuando se configuran opciones adicionales. Por ejemplo, la generación de una aplicación con ASP.NET Core Identity incluye recursos adicionales para las características de autenticación y autorización.
Plantilla de proyecto de Blazor Server: blazorserver
La plantilla de Blazor Server crea los archivos iniciales y la estructura de directorios de una aplicación Blazor Server. La aplicación se rellena con código de demostración para un componente FetchData
que carga datos de un servicio registrado, WeatherForecastService
, y la interacción del usuario con un componente Counter
.
Carpeta
Data
: contiene la claseWeatherForecast
y la implementación deWeatherForecastService
que proporciona datos meteorológicos de ejemplo al componenteFetchData
de la aplicación.Carpeta
Pages
: contiene los componentes Razor enrutables de la aplicación de Blazor (.razor
) y la página de Razor raíz de una aplicación Blazor Server. La ruta de cada página se especifica usando la directiva@page
. En la plantilla se incluye lo siguiente:_Host.cshtml
: página raíz de la aplicación implementada como página Razor:- Cuando se solicita inicialmente cualquier página de la aplicación, esta página se representa y se devuelve en la respuesta.
- La página Host especifica dónde se va a representar el componente
App
raíz (App.razor
).
_Layout.cshtml
: la página de diseño de la página raíz_Host.cshtml
de la aplicación.- Componente
Counter
(Counter.razor
): implementa la página Counter. - Componente
Error
(Error.razor
): se representa cuando se produce una excepción no controlada en la aplicación. - Componente
FetchData
(FetchData.razor
): implementa la página Fetch data (Recuperar datos). - Componente
Index
(Index.razor
): implementa la página Home.
Carpeta
Properties
: contiene la configuración del entorno de desarrollo del archivolaunchSettings.json
.Carpeta
Shared
: contiene los siguientes componentes y hojas de estilos compartidos:- Componente
MainLayout
(MainLayout.razor
): El componente de diseño de la aplicación. MainLayout.razor.css
: hoja de estilos del diseño principal de la aplicación.- Componente
NavMenu
(NavMenu.razor
): implementa la navegación de barra lateral. Incluye el componenteNavLink
(NavLink), que representa los vínculos de navegación a otros componentes Razor. El componente NavLink indica automáticamente un estado seleccionado cuando su componente se carga, lo que ayuda al usuario a saber qué componente se está mostrando actualmente. NavMenu.razor.css
: hoja de estilos del menú de navegación de la aplicación.- Componente
SurveyPrompt
(SurveyPrompt.razor
): componente de encuesta Blazor.
- Componente
Carpeta
wwwroot
: carpeta Web Root (raíz web) de la aplicación que contiene los recursos estáticos de la aplicación._Imports.razor
: Engloba las directivas de Razor comunes que se van a incluir en los componentes de la aplicación (.razor
), como las directivas@using
de los espacios de nombres.App.razor
: componente raíz de la aplicación que configura el enrutamiento del lado cliente mediante el componente Router. El componente Router intercepta la navegación del explorador y representa la página que coincide con la dirección solicitada.appsettings.json
y archivos de configuración de la aplicación de entorno: Proporciona los valores de configuración de la aplicación.Program.cs
: punto de entrada de la aplicación que configura el host de ASP.NET Core y contiene la lógica de inicio de la aplicación, incluidos los registros de servicio y la configuración de canalización de procesamiento de solicitudes:- Especifica los servicios de inserción de dependencias de la aplicación. Los servicios se agregan llamando a AddServerSideBlazor, y el elemento
WeatherForecastService
se agrega al contenedor de servicios para que lo use el componenteFetchData
de ejemplo. - configura la canalización de administración de solicitudes de la aplicación:
- Se llama a MapBlazorHub para configurar un punto de conexión para la conexión en tiempo real con el explorador. La conexión se crea con SignalR, que es un marco para agregar funcionalidad web a las aplicaciones en tiempo real.
- Se llama a
MapFallbackToPage("/_Host")
para configurar la página raíz de la aplicación (Pages/_Host.cshtml
) y habilitar la navegación.
- Especifica los servicios de inserción de dependencias de la aplicación. Los servicios se agregan llamando a AddServerSideBlazor, y el elemento
Pueden aparecer archivos y carpetas adicionales en una aplicación generada a partir de una plantilla de proyecto de Blazor Server cuando se configuran opciones adicionales. Por ejemplo, la generación de una aplicación con ASP.NET Core Identity incluye recursos adicionales para las características de autenticación y autorización.
Plantilla de proyecto de Blazor Server: blazorserver
La plantilla de Blazor Server crea los archivos iniciales y la estructura de directorios de una aplicación Blazor Server. La aplicación se rellena con código de demostración para un componente FetchData
que carga datos de un servicio registrado, WeatherForecastService
, y la interacción del usuario con un componente Counter
.
Carpeta
Data
: contiene la claseWeatherForecast
y la implementación deWeatherForecastService
que proporciona datos meteorológicos de ejemplo al componenteFetchData
de la aplicación.Carpeta
Pages
: contiene los componentes Razor enrutables de la aplicación de Blazor (.razor
) y la página de Razor raíz de una aplicación Blazor Server. La ruta de cada página se especifica usando la directiva@page
. En la plantilla se incluye lo siguiente:_Host.cshtml
: página raíz de la aplicación implementada como página Razor:- Cuando se solicita inicialmente cualquier página de la aplicación, esta página se representa y se devuelve en la respuesta.
- La página Host especifica dónde se va a representar el componente
App
raíz (App.razor
).
- Componente
Counter
(Counter.razor
): implementa la página Counter. - Componente
Error
(Error.razor
): se representa cuando se produce una excepción no controlada en la aplicación. - Componente
FetchData
(FetchData.razor
): implementa la página Fetch data (Recuperar datos). - Componente
Index
(Index.razor
): implementa la página Home.
Carpeta
Properties
: contiene la configuración del entorno de desarrollo del archivolaunchSettings.json
.Carpeta
Shared
: contiene los siguientes componentes y hojas de estilos compartidos:- Componente
MainLayout
(MainLayout.razor
): El componente de diseño de la aplicación. MainLayout.razor.css
: hoja de estilos del diseño principal de la aplicación.- Componente
NavMenu
(NavMenu.razor
): implementa la navegación de barra lateral. Incluye el componenteNavLink
(NavLink), que representa los vínculos de navegación a otros componentes Razor. El componente NavLink indica automáticamente un estado seleccionado cuando su componente se carga, lo que ayuda al usuario a saber qué componente se está mostrando actualmente. NavMenu.razor.css
: hoja de estilos del menú de navegación de la aplicación.- Componente
SurveyPrompt
(SurveyPrompt.razor
): componente de encuesta Blazor.
- Componente
Carpeta
wwwroot
: carpeta Web Root (raíz web) de la aplicación que contiene los recursos estáticos de la aplicación._Imports.razor
: Engloba las directivas de Razor comunes que se van a incluir en los componentes de la aplicación (.razor
), como las directivas@using
de los espacios de nombres.App.razor
: componente raíz de la aplicación que configura el enrutamiento del lado cliente mediante el componente Router. El componente Router intercepta la navegación del explorador y representa la página que coincide con la dirección solicitada.appsettings.json
y archivos de configuración de la aplicación de entorno: Proporciona los valores de configuración de la aplicación.Program.cs
; El punto de entrada de la aplicación que configura el host de ASP.NET Core.Startup.cs
; contiene la lógica de inicio de la aplicación. La claseStartup
define dos métodos:ConfigureServices
: configura los servicios de inserción de dependencias de la aplicación. Los servicios se agregan llamando a AddServerSideBlazor, y el elementoWeatherForecastService
se agrega al contenedor de servicios para que lo use el componenteFetchData
de ejemplo.Configure
: configura la canalización de administración de solicitudes de la aplicación:- Se llama a MapBlazorHub para configurar un punto de conexión para la conexión en tiempo real con el explorador. La conexión se crea con SignalR, que es un marco para agregar funcionalidad web a las aplicaciones en tiempo real.
- Se llama a
MapFallbackToPage("/_Host")
para configurar la página raíz de la aplicación (Pages/_Host.cshtml
) y habilitar la navegación.
Pueden aparecer archivos y carpetas adicionales en una aplicación generada a partir de una plantilla de proyecto de Blazor Server cuando se configuran opciones adicionales. Por ejemplo, la generación de una aplicación con ASP.NET Core Identity incluye recursos adicionales para las características de autenticación y autorización.
Plantilla de proyecto de Blazor Server: blazorserver
La plantilla de Blazor Server crea los archivos iniciales y la estructura de directorios de una aplicación Blazor Server. La aplicación se rellena con código de demostración para un componente FetchData
que carga datos de un servicio registrado, WeatherForecastService
, y la interacción del usuario con un componente Counter
.
Carpeta
Data
: contiene la claseWeatherForecast
y la implementación deWeatherForecastService
que proporciona datos meteorológicos de ejemplo al componenteFetchData
de la aplicación.Carpeta
Pages
: contiene los componentes Razor enrutables de la aplicación de Blazor (.razor
) y la página de Razor raíz de una aplicación Blazor Server. La ruta de cada página se especifica usando la directiva@page
. En la plantilla se incluye lo siguiente:_Host.cshtml
: página raíz de la aplicación implementada como página Razor:- Cuando se solicita inicialmente cualquier página de la aplicación, esta página se representa y se devuelve en la respuesta.
- La página Host especifica dónde se va a representar el componente
App
raíz (App.razor
).
- Componente
Counter
(Counter.razor
): implementa la página Counter. - Componente
Error
(Error.razor
): se representa cuando se produce una excepción no controlada en la aplicación. - Componente
FetchData
(FetchData.razor
): implementa la página Fetch data (Recuperar datos). - Componente
Index
(Index.razor
): implementa la página Home.
Carpeta
Properties
: contiene la configuración del entorno de desarrollo del archivolaunchSettings.json
.Carpeta
Shared
: contiene los siguientes componentes compartidos:- Componente
MainLayout
(MainLayout.razor
): El componente de diseño de la aplicación. - Componente
NavMenu
(NavMenu.razor
): implementa la navegación de barra lateral. Incluye el componenteNavLink
(NavLink), que representa los vínculos de navegación a otros componentes Razor. El componente NavLink indica automáticamente un estado seleccionado cuando su componente se carga, lo que ayuda al usuario a saber qué componente se está mostrando actualmente. - Componente
SurveyPrompt
(SurveyPrompt.razor
): componente de encuesta Blazor.
- Componente
Carpeta
wwwroot
: carpeta Web Root (raíz web) de la aplicación que contiene los recursos estáticos de la aplicación._Imports.razor
: Engloba las directivas de Razor comunes que se van a incluir en los componentes de la aplicación (.razor
), como las directivas@using
de los espacios de nombres.App.razor
: componente raíz de la aplicación que configura el enrutamiento del lado cliente mediante el componente Router. El componente Router intercepta la navegación del explorador y representa la página que coincide con la dirección solicitada.appsettings.json
y archivos de configuración de la aplicación de entorno: Proporciona los valores de configuración de la aplicación.Program.cs
; El punto de entrada de la aplicación que configura el host de ASP.NET Core.Startup.cs
; contiene la lógica de inicio de la aplicación. La claseStartup
define dos métodos:ConfigureServices
: configura los servicios de inserción de dependencias de la aplicación. Los servicios se agregan llamando a AddServerSideBlazor, y el elementoWeatherForecastService
se agrega al contenedor de servicios para que lo use el componenteFetchData
de ejemplo.Configure
: configura la canalización de administración de solicitudes de la aplicación:- Se llama a MapBlazorHub para configurar un punto de conexión para la conexión en tiempo real con el explorador. La conexión se crea con SignalR, que es un marco para agregar funcionalidad web a las aplicaciones en tiempo real.
- Se llama a
MapFallbackToPage("/_Host")
para configurar la página raíz de la aplicación (Pages/_Host.cshtml
) y habilitar la navegación.
Pueden aparecer archivos y carpetas adicionales en una aplicación generada a partir de una plantilla de proyecto de Blazor Server cuando se configuran opciones adicionales. Por ejemplo, la generación de una aplicación con ASP.NET Core Identity incluye recursos adicionales para las características de autenticación y autorización.
Independiente Blazor WebAssembly
Plantilla de proyecto Blazor WebAssembly independiente: blazorwasm
La plantilla Blazor WebAssembly crea los archivos iniciales y la estructura de directorios de una aplicación Blazor WebAssembly independiente:
- Si se usa la plantilla de
blazorwasm
, la aplicación se rellena con lo siguiente:- Código de demostración para un componente
Weather
que carga datos de un recurso estático (weather.json
) y la interacción del usuario con un componenteCounter
. - Kit de herramientas de front-end de Bootstrap.
- Código de demostración para un componente
- La plantilla
blazorwasm
también se puede generar sin páginas de ejemplo y estilos.
Estructura de proyecto:
Carpeta
Layout
: contiene los siguientes componentes de diseño y hojas de estilos:- Componente
MainLayout
(MainLayout.razor
): El componente de diseño de la aplicación. MainLayout.razor.css
: hoja de estilos del diseño principal de la aplicación.- Componente
NavMenu
(NavMenu.razor
): implementa la navegación de barra lateral. Incluye el componenteNavLink
(NavLink), que representa los vínculos de navegación a otros componentes Razor. El componente NavLink indica automáticamente un estado seleccionado cuando su componente se carga, lo que ayuda al usuario a saber qué componente se está mostrando actualmente. NavMenu.razor.css
: hoja de estilos del menú de navegación de la aplicación.
- Componente
Carpeta
Pages
: contiene los componentes Razor enrutables de la aplicación de Blazor (.razor
). La ruta de cada página se especifica usando la directiva@page
. La plantilla incluye los siguientes componentes:- Componente
Counter
(Counter.razor
): implementa la página Counter. - Componente
Index
(Index.razor
): implementa la página Home. - Componente
Weather
(Weather.razor
): implementa la página Tiempo.
- Componente
_Imports.razor
: Engloba las directivas de Razor comunes que se van a incluir en los componentes de la aplicación (.razor
), como las directivas@using
de los espacios de nombres.App.razor
: componente raíz de la aplicación que configura el enrutamiento del lado cliente mediante el componente Router. El componente Router intercepta la navegación del explorador y representa la página que coincide con la dirección solicitada.Carpeta
Properties
: contiene la configuración del entorno de desarrollo del archivolaunchSettings.json
.Nota:
El perfil
http
precede al perfilhttps
en el archivolaunchSettings.json
. Cuando se ejecuta una aplicación con la CLI de .NET, la aplicación se ejecuta en un punto de conexión HTTP porque el primer perfil encontrado eshttp
. El orden de perfil facilita la transición de la adopción de HTTPS para usuarios de Linux y macOS. Si prefiere iniciar la aplicación con la CLI de .NET sin tener que pasar la opción-lp https
o--launch-profile https
al comandodotnet watch
(odotnet run
), simplemente coloque el perfilhttps
encima del perfilhttp
en el archivo.Carpeta
wwwroot
: carpeta Raíz web de la aplicación que contiene los recursos estáticos públicos de la aplicación, comoappsettings.json
y los archivos de configuración de la aplicación meteorológica con las opciones de configuración y datos meteorológicos de ejemplo (sample-data/weather.json
). La página webindex.html
es la página raíz de la aplicación implementada como página HTML:- Cuando se solicita inicialmente cualquier página de la aplicación, esta página se representa y se devuelve en la respuesta.
- La página especifica dónde se va a representar el componente
App
raíz. El componente se representa en la ubicación del elemento DOMdiv
con un elementoid
deapp
(<div id="app">Loading...</div>
).
Program.cs
; El punto de entrada de la aplicación que configura el host de WebAssembly:- El componente
App
es el componente raíz de la aplicación. El componenteApp
se especifica como el elemento DOMdiv
con un elementoid
deapp
(<div id="app">Loading...</div>
enwwwroot/index.html
) en la colección de componentes raíz (builder.RootComponents.Add<App>("#app")
). - Los servicios se agregan y configuran (por ejemplo,
builder.Services.AddSingleton<IMyDependency, MyDependency>()
).
- El componente
Pueden aparecer archivos y carpetas adicionales en una aplicación generada a partir de una plantilla de proyecto de Blazor WebAssembly cuando se configuran opciones adicionales. Por ejemplo, la generación de una aplicación con ASP.NET Core Identity incluye recursos adicionales para las características de autenticación y autorización.
Blazor WebAssembly
Plantillas de proyecto de Blazor WebAssembly: blazorwasm
, blazorwasm-empty
Las plantillas de Blazor WebAssembly crean los archivos iniciales y la estructura de directorios de una aplicación de Blazor WebAssembly:
- Si se usa la plantilla de
blazorwasm
, la aplicación se rellena con lo siguiente:- Código de demostración para un componente
FetchData
que carga datos de un recurso estático (weather.json
) y la interacción del usuario con un componenteCounter
. - Kit de herramientas de front-end de Bootstrap.
- Código de demostración para un componente
- Si se usa la plantilla de
blazorwasm-empty
, la aplicación se crea sin código de demostración ni Bootstrap.
Estructura de proyecto:
Carpeta
Pages
: contiene los componentes Razor enrutables de la aplicación de Blazor (.razor
). La ruta de cada página se especifica usando la directiva@page
. La plantilla incluye los siguientes componentes:- Componente
Counter
(Counter.razor
): implementa la página Counter. - Componente
FetchData
(FetchData.razor
): implementa la página Fetch data (Recuperar datos). - Componente
Index
(Index.razor
): implementa la página Home.
- Componente
Carpeta
Properties
: contiene la configuración del entorno de desarrollo del archivolaunchSettings.json
.Carpeta
Shared
: contiene los siguientes componentes y hojas de estilos compartidos:- Componente
MainLayout
(MainLayout.razor
): El componente de diseño de la aplicación. MainLayout.razor.css
: hoja de estilos del diseño principal de la aplicación.- Componente
NavMenu
(NavMenu.razor
): implementa la navegación de barra lateral. Incluye el componenteNavLink
(NavLink), que representa los vínculos de navegación a otros componentes Razor. El componente NavLink indica automáticamente un estado seleccionado cuando su componente se carga, lo que ayuda al usuario a saber qué componente se está mostrando actualmente. NavMenu.razor.css
: hoja de estilos del menú de navegación de la aplicación.- Componente
SurveyPrompt
(SurveyPrompt.razor
) (ASP.NET Core en .NET 7 o versiones anteriores): componente de encuestas de Blazor.
- Componente
Carpeta
wwwroot
: carpeta Web Root (raíz web) de la aplicación que contiene los recursos estáticos públicos de la aplicación, comoappsettings.json
y los archivos de configuración de la aplicación meteorológica con las opciones de configuración. La página webindex.html
es la página raíz de la aplicación implementada como página HTML:- Cuando se solicita inicialmente cualquier página de la aplicación, esta página se representa y se devuelve en la respuesta.
- La página especifica dónde se va a representar el componente
App
raíz. El componente se representa en la ubicación del elemento DOMdiv
con un elementoid
deapp
(<div id="app">Loading...</div>
).
_Imports.razor
: Engloba las directivas de Razor comunes que se van a incluir en los componentes de la aplicación (.razor
), como las directivas@using
de los espacios de nombres.App.razor
: componente raíz de la aplicación que configura el enrutamiento del lado cliente mediante el componente Router. El componente Router intercepta la navegación del explorador y representa la página que coincide con la dirección solicitada.Program.cs
; El punto de entrada de la aplicación que configura el host de WebAssembly:- El componente
App
es el componente raíz de la aplicación. El componenteApp
se especifica como el elemento DOMdiv
con un elementoid
deapp
(<div id="app">Loading...</div>
enwwwroot/index.html
) en la colección de componentes raíz (builder.RootComponents.Add<App>("#app")
). - Los servicios se agregan y configuran (por ejemplo,
builder.Services.AddSingleton<IMyDependency, MyDependency>()
).
- El componente
Pueden aparecer archivos y carpetas adicionales en una aplicación generada a partir de una plantilla de proyecto de Blazor WebAssembly cuando se configuran opciones adicionales. Por ejemplo, la generación de una aplicación con ASP.NET Core Identity incluye recursos adicionales para las características de autenticación y autorización.
Una solución de Blazor WebAssembly hospedada incluye los siguientes proyectos de ASP.NET Core:
- "Client": la aplicación Blazor WebAssembly.
- "Server": una aplicación que atiende los datos meteorológicos y de la aplicación Blazor WebAssembly a los clientes.
- "Shared": un proyecto que mantiene clases, métodos y recursos comunes.
La solución se genera a partir de la plantilla de proyecto de Blazor WebAssembly en Visual Studio con la casilla ASP.NET Core hospedado activada o con la opción -ho|--hosted
mediante el comando dotnet new blazorwasm
de la CLI de .NET. Para más información, vea Herramientas para ASP.NET Core Blazor.
La estructura del proyecto de la aplicación del lado cliente en una solución de BlazorWebassembly hospedada (proyecto "Client") es la misma que la estructura del proyecto para una aplicación Blazor WebAssembly independiente. Archivos adicionales en una solución de Blazor WebAssembly hospedada:
- El proyecto "Server" incluye un controlador de previsión meteorológica en
Controllers/WeatherForecastController.cs
que devuelve datos meteorológicos al componenteFetchData
del proyecto "Client". - El proyecto "Shared" incluye una clase de previsión meteorológica en
WeatherForecast.cs
que representa los datos meteorológicos de los proyectos "Client" y "Server".
Blazor WebAssembly
Plantilla de proyecto de Blazor WebAssembly: blazorwasm
La plantilla de Blazor WebAssembly crea los archivos iniciales y la estructura de directorios de una aplicación Blazor WebAssembly. La aplicación se rellena con código de demostración para un componente FetchData
que carga datos de un recurso estático, weather.json
, y la interacción del usuario con un componente Counter
.
Carpeta
Pages
: contiene los componentes Razor enrutables de la aplicación de Blazor (.razor
). La ruta de cada página se especifica usando la directiva@page
. La plantilla incluye los siguientes componentes:- Componente
Counter
(Counter.razor
): implementa la página Counter. - Componente
FetchData
(FetchData.razor
): implementa la página Fetch data (Recuperar datos). - Componente
Index
(Index.razor
): implementa la página Home.
- Componente
Carpeta
Properties
: contiene la configuración del entorno de desarrollo del archivolaunchSettings.json
.Carpeta
Shared
: contiene los siguientes componentes y hojas de estilos compartidos:- Componente
MainLayout
(MainLayout.razor
): El componente de diseño de la aplicación. MainLayout.razor.css
: hoja de estilos del diseño principal de la aplicación.- Componente
NavMenu
(NavMenu.razor
): implementa la navegación de barra lateral. Incluye el componenteNavLink
(NavLink), que representa los vínculos de navegación a otros componentes Razor. El componente NavLink indica automáticamente un estado seleccionado cuando su componente se carga, lo que ayuda al usuario a saber qué componente se está mostrando actualmente. NavMenu.razor.css
: hoja de estilos del menú de navegación de la aplicación.- Componente
SurveyPrompt
(SurveyPrompt.razor
): componente de encuesta Blazor.
- Componente
Carpeta
wwwroot
: carpeta Web Root (raíz web) de la aplicación que contiene los recursos estáticos públicos de la aplicación, comoappsettings.json
y los archivos de configuración de la aplicación meteorológica con las opciones de configuración. La página webindex.html
es la página raíz de la aplicación implementada como página HTML:- Cuando se solicita inicialmente cualquier página de la aplicación, esta página se representa y se devuelve en la respuesta.
- La página especifica dónde se va a representar el componente
App
raíz. El componente se representa en la ubicación del elemento DOMdiv
con un elementoid
deapp
(<div id="app">Loading...</div>
).
_Imports.razor
: Engloba las directivas de Razor comunes que se van a incluir en los componentes de la aplicación (.razor
), como las directivas@using
de los espacios de nombres.App.razor
: componente raíz de la aplicación que configura el enrutamiento del lado cliente mediante el componente Router. El componente Router intercepta la navegación del explorador y representa la página que coincide con la dirección solicitada.Program.cs
; El punto de entrada de la aplicación que configura el host de WebAssembly:- El componente
App
es el componente raíz de la aplicación. El componenteApp
se especifica como el elemento DOMdiv
con un elementoid
deapp
(<div id="app">Loading...</div>
enwwwroot/index.html
) en la colección de componentes raíz (builder.RootComponents.Add<App>("#app")
). - Los servicios se agregan y configuran (por ejemplo,
builder.Services.AddSingleton<IMyDependency, MyDependency>()
).
- El componente
Pueden aparecer archivos y carpetas adicionales en una aplicación generada a partir de una plantilla de proyecto de Blazor WebAssembly cuando se configuran opciones adicionales. Por ejemplo, la generación de una aplicación con ASP.NET Core Identity incluye recursos adicionales para las características de autenticación y autorización.
Una solución de Blazor WebAssembly hospedada incluye los siguientes proyectos de ASP.NET Core:
- "Client": la aplicación Blazor WebAssembly.
- "Server": una aplicación que atiende los datos meteorológicos y de la aplicación Blazor WebAssembly a los clientes.
- "Shared": un proyecto que mantiene clases, métodos y recursos comunes.
La solución se genera a partir de la plantilla de proyecto de Blazor WebAssembly en Visual Studio con la casilla ASP.NET Core hospedado activada o con la opción -ho|--hosted
mediante el comando dotnet new blazorwasm
de la CLI de .NET. Para más información, vea Herramientas para ASP.NET Core Blazor.
La estructura del proyecto de la aplicación del lado cliente en una solución de BlazorWebassembly hospedada (proyecto "Client") es la misma que la estructura del proyecto para una aplicación Blazor WebAssembly independiente. Archivos adicionales en una solución de Blazor WebAssembly hospedada:
- El proyecto "Server" incluye un controlador de previsión meteorológica en
Controllers/WeatherForecastController.cs
que devuelve datos meteorológicos al componenteFetchData
del proyecto "Client". - El proyecto "Shared" incluye una clase de previsión meteorológica en
WeatherForecast.cs
que representa los datos meteorológicos de los proyectos "Client" y "Server".
Blazor WebAssembly
Plantilla de proyecto de Blazor WebAssembly: blazorwasm
La plantilla de Blazor WebAssembly crea los archivos iniciales y la estructura de directorios de una aplicación Blazor WebAssembly. La aplicación se rellena con código de demostración para un componente FetchData
que carga datos de un recurso estático, weather.json
, y la interacción del usuario con un componente Counter
.
Carpeta
Pages
: contiene los componentes Razor enrutables de la aplicación de Blazor (.razor
). La ruta de cada página se especifica usando la directiva@page
. La plantilla incluye los siguientes componentes:- Componente
Counter
(Counter.razor
): implementa la página Counter. - Componente
FetchData
(FetchData.razor
): implementa la página Fetch data (Recuperar datos). - Componente
Index
(Index.razor
): implementa la página Home.
- Componente
Carpeta
Properties
: contiene la configuración del entorno de desarrollo del archivolaunchSettings.json
.Carpeta
Shared
: contiene los siguientes componentes y hojas de estilos compartidos:- Componente
MainLayout
(MainLayout.razor
): El componente de diseño de la aplicación. MainLayout.razor.css
: hoja de estilos del diseño principal de la aplicación.- Componente
NavMenu
(NavMenu.razor
): implementa la navegación de barra lateral. Incluye el componenteNavLink
(NavLink), que representa los vínculos de navegación a otros componentes Razor. El componente NavLink indica automáticamente un estado seleccionado cuando su componente se carga, lo que ayuda al usuario a saber qué componente se está mostrando actualmente. NavMenu.razor.css
: hoja de estilos del menú de navegación de la aplicación.- Componente
SurveyPrompt
(SurveyPrompt.razor
): componente de encuesta Blazor.
- Componente
Carpeta
wwwroot
: carpeta Web Root (raíz web) de la aplicación que contiene los recursos estáticos públicos de la aplicación, comoappsettings.json
y los archivos de configuración de la aplicación meteorológica con las opciones de configuración. La página webindex.html
es la página raíz de la aplicación implementada como página HTML:- Cuando se solicita inicialmente cualquier página de la aplicación, esta página se representa y se devuelve en la respuesta.
- La página especifica dónde se va a representar el componente
App
raíz. El componente se representa en la ubicación del elemento DOMdiv
con un elementoid
deapp
(<div id="app">Loading...</div>
).
_Imports.razor
: Engloba las directivas de Razor comunes que se van a incluir en los componentes de la aplicación (.razor
), como las directivas@using
de los espacios de nombres.App.razor
: componente raíz de la aplicación que configura el enrutamiento del lado cliente mediante el componente Router. El componente Router intercepta la navegación del explorador y representa la página que coincide con la dirección solicitada.Program.cs
; El punto de entrada de la aplicación que configura el host de WebAssembly:- El componente
App
es el componente raíz de la aplicación. El componenteApp
se especifica como el elemento DOMdiv
con un elementoid
deapp
(<div id="app">Loading...</div>
enwwwroot/index.html
) en la colección de componentes raíz (builder.RootComponents.Add<App>("#app")
). - Los servicios se agregan y configuran (por ejemplo,
builder.Services.AddSingleton<IMyDependency, MyDependency>()
).
- El componente
Pueden aparecer archivos y carpetas adicionales en una aplicación generada a partir de una plantilla de proyecto de Blazor WebAssembly cuando se configuran opciones adicionales. Por ejemplo, la generación de una aplicación con ASP.NET Core Identity incluye recursos adicionales para las características de autenticación y autorización.
Una solución de Blazor WebAssembly hospedada incluye los siguientes proyectos de ASP.NET Core:
- "Client": la aplicación Blazor WebAssembly.
- "Server": una aplicación que atiende los datos meteorológicos y de la aplicación Blazor WebAssembly a los clientes.
- "Shared": un proyecto que mantiene clases, métodos y recursos comunes.
La solución se genera a partir de la plantilla de proyecto de Blazor WebAssembly en Visual Studio con la casilla ASP.NET Core hospedado activada o con la opción -ho|--hosted
mediante el comando dotnet new blazorwasm
de la CLI de .NET. Para más información, vea Herramientas para ASP.NET Core Blazor.
La estructura del proyecto de la aplicación del lado cliente en una solución de BlazorWebassembly hospedada (proyecto "Client") es la misma que la estructura del proyecto para una aplicación Blazor WebAssembly independiente. Archivos adicionales en una solución de Blazor WebAssembly hospedada:
- El proyecto "Server" incluye un controlador de previsión meteorológica en
Controllers/WeatherForecastController.cs
que devuelve datos meteorológicos al componenteFetchData
del proyecto "Client". - El proyecto "Shared" incluye una clase de previsión meteorológica en
WeatherForecast.cs
que representa los datos meteorológicos de los proyectos "Client" y "Server".
Blazor WebAssembly
Plantilla de proyecto de Blazor WebAssembly: blazorwasm
La plantilla de Blazor WebAssembly crea los archivos iniciales y la estructura de directorios de una aplicación Blazor WebAssembly. La aplicación se rellena con código de demostración para un componente FetchData
que carga datos de un recurso estático, weather.json
, y la interacción del usuario con un componente Counter
.
Carpeta
Pages
: contiene los componentes Razor enrutables de la aplicación de Blazor (.razor
). La ruta de cada página se especifica usando la directiva@page
. La plantilla incluye los siguientes componentes:- Componente
Counter
(Counter.razor
): implementa la página Counter. - Componente
FetchData
(FetchData.razor
): implementa la página Fetch data (Recuperar datos). - Componente
Index
(Index.razor
): implementa la página Home.
- Componente
Carpeta
Properties
: contiene la configuración del entorno de desarrollo del archivolaunchSettings.json
.Carpeta
Shared
: contiene los siguientes componentes compartidos:- Componente
MainLayout
(MainLayout.razor
): El componente de diseño de la aplicación. - Componente
NavMenu
(NavMenu.razor
): implementa la navegación de barra lateral. Incluye el componenteNavLink
(NavLink), que representa los vínculos de navegación a otros componentes Razor. El componente NavLink indica automáticamente un estado seleccionado cuando su componente se carga, lo que ayuda al usuario a saber qué componente se está mostrando actualmente. - Componente
SurveyPrompt
(SurveyPrompt.razor
): componente de encuesta Blazor.
- Componente
Carpeta
wwwroot
: carpeta Web Root (raíz web) de la aplicación que contiene los recursos estáticos públicos de la aplicación, comoappsettings.json
y los archivos de configuración de la aplicación meteorológica con las opciones de configuración. La página webindex.html
es la página raíz de la aplicación implementada como página HTML:- Cuando se solicita inicialmente cualquier página de la aplicación, esta página se representa y se devuelve en la respuesta.
- La página especifica dónde se va a representar el componente
App
raíz. El componente se representa en la ubicación del elemento DOMapp
(<app>Loading...</app>
).
_Imports.razor
: Engloba las directivas de Razor comunes que se van a incluir en los componentes de la aplicación (.razor
), como las directivas@using
de los espacios de nombres.App.razor
: componente raíz de la aplicación que configura el enrutamiento del lado cliente mediante el componente Router. El componente Router intercepta la navegación del explorador y representa la página que coincide con la dirección solicitada.Program.cs
; El punto de entrada de la aplicación que configura el host de WebAssembly:- El componente
App
es el componente raíz de la aplicación. El componenteApp
se especifica como el elemento DOMapp
(<app>Loading...</app>
enwwwroot/index.html
) de la colección de componentes raíz (builder.RootComponents.Add<App>("app")
). - Los servicios se agregan y configuran (por ejemplo,
builder.Services.AddSingleton<IMyDependency, MyDependency>()
).
- El componente
Pueden aparecer archivos y carpetas adicionales en una aplicación generada a partir de una plantilla de proyecto de Blazor WebAssembly cuando se configuran opciones adicionales. Por ejemplo, la generación de una aplicación con ASP.NET Core Identity incluye recursos adicionales para las características de autenticación y autorización.
Una solución de Blazor WebAssembly hospedada incluye los siguientes proyectos de ASP.NET Core:
- "Client": la aplicación Blazor WebAssembly.
- "Server": una aplicación que atiende los datos meteorológicos y de la aplicación Blazor WebAssembly a los clientes.
- "Shared": un proyecto que mantiene clases, métodos y recursos comunes.
La solución se genera a partir de la plantilla de proyecto de Blazor WebAssembly en Visual Studio con la casilla ASP.NET Core hospedado activada o con la opción -ho|--hosted
mediante el comando dotnet new blazorwasm
de la CLI de .NET. Para más información, vea Herramientas para ASP.NET Core Blazor.
La estructura del proyecto de la aplicación del lado cliente en una solución de BlazorWebassembly hospedada (proyecto "Client") es la misma que la estructura del proyecto para una aplicación Blazor WebAssembly independiente. Archivos adicionales en una solución de Blazor WebAssembly hospedada:
- El proyecto "Server" incluye un controlador de previsión meteorológica en
Controllers/WeatherForecastController.cs
que devuelve datos meteorológicos al componenteFetchData
del proyecto "Client". - El proyecto "Shared" incluye una clase de previsión meteorológica en
WeatherForecast.cs
que representa los datos meteorológicos de los proyectos "Client" y "Server".
Ubicación del script Blazor
El script Blazor se sirve desde un recurso incrustado en el marco de trabajo compartido de ASP.NET Core.
En una Blazor Web App, el script Blazor se encuentra en el archivo Components/App.razor
:
<script src="_framework/blazor.web.js"></script>
En una aplicación de Blazor Server, el script Blazor se encuentra en el archivo Pages/_Host.cshtml
:
<script src="_framework/blazor.server.js"></script>
En una aplicación de Blazor Server, el script Blazor se encuentra en el archivo Pages/_Host.cshtml
:
<script src="_framework/blazor.server.js"></script>
En una aplicación de Blazor Server, el script Blazor se encuentra en el archivo Pages/_Layout.cshtml
:
<script src="_framework/blazor.server.js"></script>
En una aplicación de Blazor Server, el script Blazor se encuentra en el archivo Pages/_Host.cshtml
:
<script src="_framework/blazor.server.js"></script>
En una aplicación de Blazor WebAssembly, el contenido del script Blazor se encuentra en el archivo wwwroot/index.html
:
<script src="_framework/blazor.webassembly.js"></script>
Ubicación del contenido de <head>
y <body>
En una Blazor Web App, el contenido de <head>
y <body>
se encuentra en el archivo Components/App.razor
.
En una aplicación de Blazor Server, el contenido de <head>
y <body>
se encuentra en el archivo Pages/_Host.cshtml
.
En una aplicación de Blazor Server, el contenido de <head>
y <body>
se encuentra en el archivo Pages/_Layout.cshtml
.
En una aplicación de Blazor Server, el contenido de <head>
y <body>
se encuentra en el archivo Pages/_Host.cshtml
.
En una aplicación de Blazor WebAssembly, el contenido de <head>
se encuentra en el archivo <body>
.
Aplicación Blazor Server/Blazor WebAssembly dual
Para crear una aplicación que se pueda ejecutar como una aplicación Blazor Server o una aplicación Blazor WebAssembly, un enfoque consiste en colocar toda la lógica y los componentes de la aplicación en una biblioteca de clases de Razor (RCL) y hacer referencia a la RCL desde proyectos Blazor Server y Blazor WebAssembly independientes. En el caso de los servicios comunes cuyas implementaciones difieren en función del modelo de hospedaje, defina las interfaces de servicio en la RCL e implemente los servicios en los proyectos Blazor Server y Blazor WebAssembly.