Ads
Comments
Спасибо за замечания.
1. Возможность писать ответы с лишними символами сделана специально, чтобы легче было отвечать на вопросы и не было проблем с тем, что где-то лишний пробел или ответ более общий.
2. По тому, что текст остается в поле для ответа после правильного ответа — пока не решил как это красиво пофиксить. Возможно это даже баг самого Blazor, так как текст, фактически перебрасывается в другую компоненту.
С первым согласен, удобнее для пользователя, но с некоторым вопросами могут быть странности.
Со вторым странно. Надо будет глянуть исходники.
Хабр не даёт редактировать сообщение, поэтому оформлю ответом.
1) Не очищаются поля ввода при переключении на следующий вопрос.
2) Ответ учитывается несмотря на лишние символы. Предположим есть вопрос, на который правильным ответом будет «Java», но пользователь сначала введя «Script», а потом перейдя в начало поля и введя «Java» получит балл, несмотря на то что ввёл неправильный ответ «JavaScript».
А где в этой штуке проходит граница фронт/бэк. Как сказать «Вот тут счетчик локально увеличь» или «Вот тут локально увеличь и отошли на сервер результаты»
Я тоже думал об этом, пока пробовал разные варианты имплементации. Пока не сформулировал для себя четкий ответ.
Ну так расскажи о разных=) я не знаком ни с C# ни с Razor, но выглядит интересно.
В одном месте ты вызываешь
_hubConnection.SendAsync("SendMessage", message, userId);

а в другом
await QuizService.CreateQuizItemAsync(State.UserId, quizItem);


я правильно понмиаю, что оба метода вызывают код на бэкенде, но в первом случае ты делаешь это явно, а во втором случае, приложение само понимает, что ты вызываешь код из cs файла и потому надо отправить соответствующий запрос в бэкэнд?
Есть разные возможности писать код, для интерактива с сервером (через веб-сокеты или что-то еще). Сначала можно было писать только низкоуровневый код, где надо было «вручную» открывать конекшн, слать, закрывать — много кода.

Поотом придумали фрейворк для этого (SignalR), в нём надо создать Хаб (клас, который удобно работает с конекшенами) и с клиента довольно просто слать что-то в этот хаб, или же ожидать от него сообщения. (Можно через C#, JS, ..). Пример такого подхода — как раз строка с _hubConnection.

А теперь придумали еще Blazor, который еще более высокоуровневый и сам умеет создавать для себя свой хаб и держать его открытыми. А в коде надо просто написать вызов метода из класса, а Blazor уже сам решает — надо ли для этого идти на сервер. Как именно он это делает я еще сам не до конца разобрался. Возможно, просто все вызовы к класам или к зарегистрированным сервисам автоматически идут на сервер (если Blazor с серверным хостингом).
Тоже интересуют этот момент. Заставлять пользователей грузить 1.5Мб WebAssembly как-то не очень хочется. Но и ходить на сервер при каждом нажатии кнопки — тоже такое себе.
1.5Мб — звучит не очень тяжеловесно. Вообще, подход с серверным хостингом — да, звучит не типично. Но это же только один из вариантов как можно использовать Blazor. Для приложений типа онлайн-игр, например это стандарт.
Про 1.5Мб ты бы закинул майлру =) Поржем вместе.

Для онлайн игр еще рано, только зарелизилось.
Вот ничего интересного не узнал. Мне бы было интересно, в чем преимущество Blazor перед SPA фрейворками (Angular, React, Vue)? Минусы, плюсы. Статья из ряда, я попрыбывал, посмотрите.

Как минимум в том, что C# разработчику не нужно разбираться в SPA фрейворке (Angular, React, Vue)

Самое главное преимущество это конечно нормальный язык с типами, ООП и статическим анализом, а не JavaScript.
Например использовать одни и то же библиотеки на бэке и фронте, не надо будет отдельно описывать модели на js

А причем здесь WebAssembly? Открываю демку с веб-инспектором. Вижу 200 Кб Javascript который обрабатывает все события на сервере через веб-сокеты. WebAssembly здесь не пахнет.

Да, вы правы. В этой хостинг модели все работает через сервер. Приложение на wasm будет во много схоже. Как будет время — сделаю миграцию и отпишусь :)
Only those users with full accounts are able to leave comments. Log in, please.