Я создаю систему, состоящую из небольших приложений, и мне нужен какой-то удаленный рабочий стол, чтобы пользователь мог время от времени контролировать эти приложения.Проблема в том, что система работает через ограниченные соединения (как по пропускной способности, так и по времени ответа), и у пользователя не должно быть доступа к остальным приложениям на удаленных устройствах.
Когда я думаю о решении, у меня возникла идеякопирования всей формы приложения, запроса этой копии по каналу связи и воссоздания ее на локальном устройстве.Пользователь может использовать удаленное приложение так, как оно отображается на удаленном компьютере, и отправлять команды исходному приложению.
Можно ли обойтись без ужасного объема работы?Скажем, до недели, чтобы создать библиотеку и час или два, чтобы интегрировать ее с одним существующим приложением?
Или, может быть, существует подобная библиотека (я нашел библиотеку, которая позволяет вызывать удаленные методы, но для каждого "мини-приложения" потребуется обновление "основного" приложения)?
Например, у меня есть:
- первая форма "удаленная", размер 1000x500px, местоположение 100x50 с панелью и элементами управления на ней:
- * кнопка "напечатать" тест ""
- * textBox," "
- вторая Форма" local "с элементами управления:
- кнопка" запрос удаленной формы "
А теперь, как я могу себе представить, это может работать:
- Нажатие на «запросить удаленную форму» в «локальном» открывает способ связи (WebSocket, SerialPort, не говоря уже) и отправляет запрос «remote»
- «remote» инкапсулирует все свои свойства и все его элементы управления и отправляет эти данные в качестве ответа
- «local» интерпретирует данные, открывает новую форму с помощью ShowDialog() («удаленное копирование») и воссоздает «удаленную» форму, как она видна на удаленном устройстве (размер 1000x500pxместоположение 100x50, содержит кнопку «печать» и «пустой текстовый блок», оба на панели)
- , когда пользователь нажимает кнопку «печать» на «удаленное копирование», чем приложение («локальное») регистрирует этодействие и отправляет команду «remote»
- «remote» печатает «test» в своем textBox и отвечает новой копией самого себя и всех элементов управления
- «local» обновляет (или воссоздает - не выполняет)не имеет значения) это диалог - на этот раз textBox содержит «test».
- пользователь видит результат, закрывает DialogForm и возвращается к нормальной работе
Основные вопросы, на которые я не знаю ответа (пока ;-))
- Достаточно ли скопировать форму и ее свойства управления в набор словарей, чтобы получить достаточно информации длявоссоздание того же окна?
- Как избежать конфликтов, когда я воссоздаю элементы управления (например: Панель, которая является родительской для SplitContainer, которая является родительской для нескольких меток)?
- Есть ли способ автоматизациисоздание анализа ответов?Я бы хотел избежать создания бесконечных переключателей с «case», button1 click »,« case », textBox input» и т. Д.