Как плавно переключаться между серверной частью Blazor и WebAssembly?

#blazor #blazor-server-side #blazor-client-side #blazor-webassembly #asp.net-blazor

#blazor #blazor-серверная часть #blazor-на стороне клиента #blazor-webassembly #asp.net-blazor

Вопрос:

Итак, как мы знаем, Blazor довольно крут.

Однако у каждой из 2 версий есть свои плюсы и минусы.

Веб-сборка занимает много времени для первой загрузки, а серверная часть потребляет ресурсы (порты подключения и оперативную память)

Есть ли способ, чтобы веб-сайт загружал Blazor на стороне сервера, после загрузки содержимого WebAssembly переключитесь. Две версии будут использовать все компоненты razor, поэтому должны выглядеть одинаково.

Есть ли поддерживаемый способ сделать это (возможно, в .Net5)? Или какие-то обходные пути, с которыми люди добились успеха?

Комментарии:

1. проверьте эту отложенную загрузку: github.com/isc30/blazor-lazy-loading (ПРИМЕЧАНИЕ: я им не пользовался, но выглядит красиво)

Ответ №1:

Шаблон проекта Blazor в ветке разработки GitHub имеет функцию для переключения во время выполнения между сервером Blazor и wasm. Обе версии имеют одинаковый пользовательский интерфейс и все функции.

Комментарии:

1. У вас есть ссылка на проект?

2. Клонировать github.com/enkodellc/blazorboilerplate/tree/development и читать blazor-boilerplate.readthedocs.io/en/latest/features/…

Ответ №2:

Существует реализация горячего переключения между BSS и WASM, называемая HybridBlazor. Это объясняется в статьеhttps://itnext.io/blazor-switching-server-and-webassembly-at-runtime-d65c25fd4d8 а исходный код находится на github https://github.com/jdtcn/HybridBlazor

Идея состоит в том, чтобы одновременно загружать как BSS, так и приложение WASM, но скрывать приложение WASM до завершения переключения. Поскольку обе реализации blazor подписываются и обрабатывают события window.addEventListener , перезаписывается, чтобы разрешить только реализацию BSS обрабатывать события до тех пор, пока пользователь не переключится. Переключение может быть выполнено автоматически, например, при навигации по странице.