Я рассматриваю перенос одностраничного приложения jQuery + на Blazor в качестве обучающего упражнения, но прежде, чем я это сделаю, я хотел задать вопрос о конкретной функции существующего приложения и о том, что может быть у его аналога Blazor. быть.
TL; DR Я думаю, что мой вопрос: «Есть ли в серверной модели Blazor наблюдаемые массивы?» но я не уверен, что это будет достаточно ясно. Вот длинная версия.
Представьте себе океанское грузовое судно с сотнями и сотнями автомобильных go контейнеров на нем. Каждый вагон go контейнер имеет манифест, в котором перечислено его содержимое, а манифест существует в базе данных не как отдельная запись документа, а как множество отдельных строк данных:
```
select itemname, description, quantity, ...
from manifests
where containerid = 1234
```
Грузовое судно имеет главный список вагонов go контейнеров и порт (город) назначения каждого.
Пользователь спрашивает приложение: «Покажите мне содержимое всех контейнеров, предназначенных для Нового Орлеана».
приложение извлекает с удаленного сервера базы данных список контейнеров корабля, которые связаны с Новым Орлеаном, а затем, внутри плотного l oop, извлекает строки манифеста для каждого контейнера и строит манифест, который отображается в пользовательском интерфейсе. Псевдокод:
foreach container in NewOrleansContainersList
fetch manifest rows
build manifest document
append manifest document to observed array
next
Когда документ манифеста добавляется к массиву наблюдаемых нокаутов, пользовательский интерфейс имеет манифест DIV
, добавленный к document
.
Преимущество этого подхода l oop состоит в том, что первый манифест становится доступным и сразу появляется в пользовательском интерфейсе, и пользователь может начать его чтение, пока манифесты для оставшихся контейнеров извлекаются, по одному время из удаленной базы данных. Ожидание, пока весь набор результатов не вернется из удаленной базы данных в результате одного запроса, даст пользователю курсор ожидания в течение довольно длительного времени.
Может ли Blazor сделать что-то подобное в на стороне сервера код? Можно ли (частично) обновлять пользовательский интерфейс каждый раз, когда новый элемент добавляется к (наблюдаемому) массиву в «скрытом коде»?