Обмен данными через канал обменаАвтор: Ion Tichy. (http://www.iont.20m.com) Требования: VC6, WindowsNT4, Windows2000
1. ОписаниеПростой и быстрый способ связи между всеми типами приложений MFC на одном или нескольких компьютерах в Windows NT. 2. Основные возможностиПередача данных от Клиента к Серверу, обработка
их и, при необходимости, возврат результатов. 3. ВведениеНесколько лет назад я написал классы, с использованием почтовых слотов (Mailslots) для связи между Клиентом и Сервером. Согласно требованиям проекта, эти классы должны были работать в Windows 95. Несмотря на многочисленные проблемы и ограничения почтовых слотов, эти классы корректно работают в Windows 95 и Windows NT. Вышеупомянутые проблемы заключаются в следующем:
Microsoft объясняет это особенностями архитектуры. Другими словами, это не ошибка, но я не согласен с такой расстановкой вещей. В данных классах Сервер имеет поток, отвечающий за приём, а Клиенты посылают данные со своими (Клиентскими) идентификаторами (Имя компьютера и имя клиента) в этот поток. В итоге это увеличивает суммарный объём передачи данных, которые передаёт Клиент через почтовые слоты. Это и есть недостаток данного метода. После изучения технологий COM и ATL я пришёл к выводу, что ATL очень удобный инструмент, однако, и в ней есть некоторые ограничения, такие как невозможность создания ATL-Сервера из существующего приложения MFC. Внедрения DCOM в приложение также требует больших усилий. Например, я трудился над своей первой программой с DCOM как минимум 2 недели и вынужден был долго искать ответы на свои вопросы у Microsoft. Именно поэтому, несмотря на моё желание использовать COM/DCOM в новом проекте, пришлось отказаться от этой идеи. Новый проект, над которым я начал работать, требовал высокой скорости обработки данных. Данный фактор нужно было обязательно учесть при разработке нового механизма связи. К счастью, в отличие от COM, небыло никаких требований к универсальности механизма. Это значительно упростило разработку приложения. Итак, я остановился на Именованных каналах (Named Pipes) работающих только в Windows NT. В литературе данный протокол описывается следующим образом:
Так же я попытался использовать идею почтовых слотов (Mailslots) из моего первого проекта, а так же механизм COM. Далее мы рассмотрим архитектуру Клиент-Сервер, основанную на протоколе Именованных каналов (Named Pipes).
4. Архитектура Клиент-СерверИтак, существуют следующие варианты связи Клиента и Сервера.
Итак, когда Сервер загружен, то Клиент пытается установить соединение с Сервером. Если Сервер не загружен и, Клиент и Сервер находятся на одном компьютере, то Клиент может получить информацию о Сервере из реестра этого компьютера (см. Computer 4). Если Сервер не загружен и, Клиент и Сервер на разных компьютерах, то Клиент может получить информацию о Сервере из реестра другого компьютера, на котором находится Сервер посредствам утилиты AgentCP (см. Computers 1 и 2). Данная програмка ищет информацию о Сервере в реестре серверного компьютера и загружает его. Как видно из рисунка, для успешного функционирования вышеупомянутого процесса необходимо:
Таким образом, выполняется автоматическая загрузка Сервера. Процесс-Сервер может быть автоматически завершён, если Клиент не приконнектился. А вот так выглядит приложение WizardCP:
DownloadsСкачать юзер мануал - 169 KB
|