Я экспериментировал с Blazor в .NET 8 и пытаюсь понять, как работает режим авторендеринга. Насколько я узнал, Blazor изначально использует соединение WebSocket в автоматическом режиме для обеспечения интерактивности посредством рендеринга на стороне сервера. Затем он переключается на WebAssembly (WASM), когда ресурсы WASM загружаются в фоновом режиме.
Однако в ходе тестирования я заметил, что интерактивность недоступна до тех пор, пока ресурсы WASM не будут полностью загружены. На вкладке сети моего браузера я вижу соединение WebSocket, но кажется, что пользовательский интерфейс просто предварительно визуализируется, а не является интерактивным.
Я также узнал, что компоненты, которые будут отображаться в WASM, должны быть помещены в проект ProjectName.Client, и для этих компонентов нельзя установить какой-либо другой режим рендеринга, кроме WASM ( включая режим сервера). Но если автоматический режим требует, чтобы компоненты были интерактивными через соединение WebSocket (как в приложениях Blazor Server) в первый раз, как эти компоненты можно поместить в проект ProjectName.Client?< /п> В своих тестах я включил регулирование сети для имитации медленной сети и обнаружил, что автоматический режим ведет себя почти так же, как режим рендеринга WASM. Оба режима предлагают предварительный рендеринг, но интерактивность отсутствует до тех пор, пока ресурсы WASM не будут загружены, даже в автоматическом режиме.
Кроме того, я заметил, что если я отключу предварительный рендеринг как в режиме WASM, так и в режиме автоматического рендеринга, ни один из компонентов не будет виден до тех пор, пока ресурсы WASM не будут полностью загружены. Похоже, это противоречит идее о том, что автоматический режим должен обеспечивать интерактивность как можно скорее.
Я посмотрел на YouTube видео Стива Сандерсона, создателя Blazor. В видео показано, что когда компонент впервые загружается в автоматическом режиме, он визуализируется и становится интерактивным с использованием соединения WebSocket. Со второго обновления он загружается через WebAssembly. Однако, похоже, я не наблюдал такого поведения в своих тестах.
Может ли кто-нибудь объяснить, как автоматический режим должен работать в Blazor .NET 8? Если это WASM, только с предварительным рендерингом, то в чем его разница с режимом рендеринга WASM (поскольку во всех интерактивных режимах рендеринга предварительный рендеринг включен по умолчанию)? Будем очень признательны за любую информацию