Существует ли имя для шаблона, который синхронизирует удаленные элементы пользовательского интерфейса на основе изменений модели? - PullRequest
0 голосов
/ 01 июня 2018

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

Дизайн, который я ищу, этоописано ниже:

Я пытаюсь спроектировать (объектно-ориентированное) приложение, в котором несколько удаленно связанных элементов управления (элементов пользовательского интерфейса) необходимо перерисовать как можно быстрее.У меня пока нет определенного языка или цели, но ради аргумента, скажем, каждый элемент управления нарисован на элементе Canvas на веб-странице.Для любого конкретного экземпляра этого элемента управления внешний вид основан на довольно сложном объекте данных (модели), который может иметь несколько сотен тысяч свойств.

Из-за количества элементов управления, которые потенциально существуют, и из-за сложности объекта данных, я собираюсь синхронизировать каждую удаленную копию объекта данных, отправляя исправления по проводам (а не отправляя целыеобъект данных каждый раз).Затем я хотел бы использовать те же данные исправления / преобразования, чтобы перерисовать только те части элемента управления, которые необходимо перекрасить.

Для механизма исправления я представляю себе что-то похожее на Операционное Преобразование для объектов (а не для простого текста).Затем я использовал бы ту же информацию о исправлении в системе рисования, чтобы определить, какие части элемента управления необходимо перекрашивать при любом обновлении.

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

Есть ли какое-то искусство для такого рода механизма синхронизации и рисования удаленных объектов, который я могу искать в Интернете?Это распознанная модель?

Ответы [ 3 ]

0 голосов
/ 01 июня 2018

Я думаю, что это более или менее то, что делает React (за исключением нелепости наличия нескольких сотен тысяч свойств).

Это дает вам рендеринг на стороне сервера, с которым вы можете продолжать работать надсторона клиента.Он предлагает частичные обновления с использованием информации от государства.И вы можете получить это состояние (частично) с помощью GraphQL и обновить его локально.

Для его работы потребуется много конфигурации и склеивания, но все основные примитивы более или менееместо.

0 голосов
/ 01 июня 2018

Возможно, решение, основанное на шаблоне проектирования Observer и шаблоне Composite, может решить вашу проблему.

0 голосов
/ 01 июня 2018

Насколько я понимаю, вы ищете Observer шаблон проектирования.Шаблон Observer в основном используется во многих инструментальных средствах графического пользовательского интерфейса, чтобы отделить аспекты представления пользовательского интерфейса от базовых данных приложения.Как объект электронной таблицы, так и объект гистограммы могут отображать информацию в одном и том же объекте данных приложения с использованием разных представлений.

Когда отношения зависимости между субъектами и наблюдателями особенно сложны, может потребоваться объект, который поддерживает эти отношения.Мы называем такой объект ChangeManager.

...