Как клонировать форму удаленного приложения со всеми его элементами управления?Это жизнеспособно? - PullRequest
0 голосов
/ 24 сентября 2019

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

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


Можно ли обойтись без ужасного объема работы?Скажем, до недели, чтобы создать библиотеку и час или два, чтобы интегрировать ее с одним существующим приложением?

Или, может быть, существует подобная библиотека (я нашел библиотеку, которая позволяет вызывать удаленные методы, но для каждого "мини-приложения" потребуется обновление "основного" приложения)?


Например, у меня есть:

  • первая форма "удаленная", размер 1000x500px, местоположение 100x50 с панелью и элементами управления на ней:
    • * кнопка "напечатать" тест ""
    • * textBox," "
  • вторая Форма" local "с элементами управления:
    • кнопка" запрос удаленной формы "

А теперь, как я могу себе представить, это может работать:

  • Нажатие на «запросить удаленную форму» в «локальном» открывает способ связи (WebSocket, SerialPort, не говоря уже) и отправляет запрос «remote»
  • «remote» инкапсулирует все свои свойства и все его элементы управления и отправляет эти данные в качестве ответа
  • «local» интерпретирует данные, открывает новую форму с помощью ShowDialog() («удаленное копирование») и воссоздает «удаленную» форму, как она видна на удаленном устройстве (размер 1000x500pxместоположение 100x50, содержит кнопку «печать» и «пустой текстовый блок», оба на панели)
  • , когда пользователь нажимает кнопку «печать» на «удаленное копирование», чем приложение («локальное») регистрирует этодействие и отправляет команду «remote»
  • «remote» печатает «test» в своем textBox и отвечает новой копией самого себя и всех элементов управления
  • «local» обновляет (или воссоздает - не выполняет)не имеет значения) это диалог - на этот раз textBox содержит «test».
  • пользователь видит результат, закрывает DialogForm и возвращается к нормальной работе Simplified mind map

Основные вопросы, на которые я не знаю ответа (пока ;-))

  • Достаточно ли скопировать форму и ее свойства управления в набор словарей, чтобы получить достаточно информации длявоссоздание того же окна?
  • Как избежать конфликтов, когда я воссоздаю элементы управления (например: Панель, которая является родительской для SplitContainer, которая является родительской для нескольких меток)?
  • Есть ли способ автоматизациисоздание анализа ответов?Я бы хотел избежать создания бесконечных переключателей с «case», button1 click »,« case », textBox input» и т. Д.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...