Может ли серверная часть Blazor задерживать рендеринг? - PullRequest
0 голосов
/ 16 мая 2019

Представьте, что у меня есть этот компонент:

<input bind-value-oninput="@Name">
<p>Your name is @Name</p>
string _name;
string Name
{
    get => _name;
    set => _name = value.ToUpper();
}

Когда я печатаю на вводе, текст преобразуется непосредственно в верхний регистр и отображается в абзаце.

Я думаю(пожалуйста, поправьте меня, если я ошибаюсь), что серверная часть Blazor запускает на сервере код .NET MSIL и отправляет изменения DOM через соединение SignalR.

Соединение с сервером может быть отложено, особеннос плохим подключением к Интернету.

В случае этого ввода, может быть преобразован в верхний регистр через несколько секунд после ввода текста пользователем?В положительном случае, как я могу решить это?Только используя клиентскую версию Blazor?

Ответы [ 2 ]

1 голос
/ 16 мая 2019

Использование серверной версии Blazor имеет пару недостатков, которые необходимо учитывать, когда вы должны решить, какой вариант Blazor использовать. Серверную версию Blazor в основном рекомендуется использовать в частной сети Интранет, например, в корпоративной сети с несколькими сотнями пользователей, одновременно обращающихся к сети. В таком случае вы вообще не почувствуете задержки рендеринга.

Использование серверной версии Blazor в общедоступном Интернете может быть проблематичным в этом отношении (есть серьезные недостатки, которые следует учитывать), и может привести к недопустимой задержке при рендеринге . Но если его использование навязано вам, важно найти способы, которые могут смягчить эту проблему (задержка рендеринга). Например, не используйте входное событие. Вместо этого используйте событие изменения. Событие ввода запускается всякий раз, когда вы нажимаете кнопку на клавиатуре, что приводит к обращению к серверу для обработки события. Но если вы используете событие изменения, вы можете уменьшить количество обращений к серверу.

Надеюсь, это поможет ...

1 голос
/ 16 мая 2019

Задержка рендеринга на хорошем / среднем соединении составляет <50 мс.</p>

Даже при плохом соединении вы должны оставаться значительно ниже 1 сек.

Когда ваше соединение становится настолько плохим, что вы превышаете его, тогда появляется встроенный диалог переподключения.

Но да, если вы хотите быть всегда доступным, даже при очень плохом соединении (или без соединения), было бы лучше использовать клиентскую сторону.

...