Я строю систему с некоторыми возможностями удаленного рабочего стола. Клиентом считается каждый компьютер, который использует свой рабочий стол, а сервером - центральный сервер с базой данных, которая получает образы всех нескольких рабочих столов. На стороне клиента я хотел бы построить два проекта: приложение службы Windows и приложение VCL формы. Предполагается, что каждое клиентское приложение будет работать под другой учетной записью пользователя на компьютере, поэтому может быть запущено несколько клиентских приложений одновременно, и все они отправляют свой образ в эту клиентскую службу, которая передает их на центральный сервер.
Служба будет отвечать за подключение к серверу, отправку изображения и получение событий мыши / клавиатуры. Приложение, которое работает в фоновом режиме, будет подключаться к этому сервису и передавать скриншоты в сервис. Цель состоит в том, чтобы одна служба работала, а несколько «клиентов» могли подключиться к ней и отправить свой образ рабочего стола. Эта служба будет подключена к «центральному серверу», который получает все эти разные скриншоты от разных «клиентов». Затем изображения будут либо сохраняться и регистрироваться, либо перенаправляться на любую «панель управления», которая может просматривать этот «клиент».
Вопрос в том, каким способом мне следует подключать клиентские приложения к клиентскому сервису для отправки изображений? Они будут работать на одном компьютере. Мне понадобятся как возможности для отправки простых командных пакетов, так и для потоковой передачи фрагмента изображения. Я собирался использовать компоненты Indy (TIdTCPServer
и т. Д.), Но я уверен, что должен быть более простой и чистый способ сделать это. Я использую компоненты Indy и в других проектах.
Вот диаграмма всей системы, к которой я стремлюсь - я просто беспокоюсь о частях справа и слева - где приложения подключаются к службе на одном компьютере. Как видите, поскольку слоев много, мне нужно убедиться, что все используемые мной методы достаточно эффективны для потоковой передачи огромных объемов данных изображения.