«Одно из двух, — прошептал он, — либо пациент жив, либо он мертв».Теги: #C++ #.Если он жив, то он останется жив или не останется в живых.
Если он мертв, его можно воскресить или нельзя воскресить.
А.
Н.
Толстой.
«Золотой ключик, или Приключения Буратино»
Введение
Недавно в организации, где я работаю, возникла идея переписать корпоративную систему, которая работает уже более 20 лет и за это время несколько устарела.Если коротко, то это информационная система в сфере морских грузоперевозок и обслуживания судов в порту.
в настоящее время я работаю над НИОКР и я хочу поделиться с вами некоторыми проблемами, с которыми может столкнуться разработчик такой системы и как я планирую их решать.
В настоящее время я планирую сервер приложений ASP.NET Core для .
NET 6. База данных останется старой, так как это позволит постепенно переходить на новую систему по мере добавления функциональности.
Ожидается, что основное клиентское программное обеспечение будет основано на WPF под .
NET 6. Кроме того, возможны небольшие узкопрофильные клиенты на веб-страницах и мобильных устройствах.
Проблема
Пользователю лень фильтровать запрашиваемые данные, а их довольно много.Заставлять пользователя что-то фильтровать – это бесчеловечно и попахивает произволом.
В нынешней системе такой пользователь сидит грустно, ругает разработчиков, давит на техподдержку.
В текущей системе клиент обращается непосредственно к базе данных через БД? , с этим ничего не поделаешь.
В новой системе клиент ничего не знает о базе данных; сервер по его запросу отправляет JSON по HTTP. Если делать это в лоб, то мало что изменится: сервер по запросу клиента будет собирать коллекцию объектов для отправки, загружать их из базы или что-то еще.
Потом он отправит всю эту махину в ответном HTTP-пакете, предварительно сериализовав ее в JSON, где это все за один присест будет десериализовано в клиентские объекты, которые наконец предстанут перед глазами безнадежного пользователя.
Идея решения
Да ладно, сервер по запросу начнёт загружать в свою коллекцию, как и раньше, но отправит клиенту не всё, а сколько можно загрузить до истечения таймаута, или какое-то фиксированное количество объектов, или как результате суперпозиции этих условий.В этом случае мы сообщим клиенту в специальной шапке, все ли уже сделано или нет. А если нет — передать специальный идентификатор, который клиент должен предоставить при запросе следующей порции.
Таким образом, пользователь быстро увидит результат и, возможно, даже сможет его использовать.
Допустим, у нас есть следующий класс:
public enum PartialLoaderState { New, Partial, Full .
} public class PartialLoader<T> where T: class {
NET #ASP #ASP #Пользовательский интерфейс #загрузка данных #дружественный интерфейс
-
Болгарский Язык
19 Oct, 24 -
Почему Бессерверная Революция Застопорилась
19 Oct, 24 -
Конфиденциальность В Сетях Связи
19 Oct, 24 -
В Напитке Red Bull Нашли Кокаин
19 Oct, 24