Реализация.
Таким образом, очевидно возникает желание сделать программу,
которая дела бы все это причем по возможности в рамках
одного модуля, который мог бы запускаться из-под нашей
прикладной программы.
Что должна делать эта программа:
- Уметь отсылать и принимать электронную почту.
- Уметь дозваниваться до сервера удаленного доступа
с возможностью автоматического перебора телефонных номеров
(соединений).
- Упаковывать и распаковывать файлы.
- Подписывать файлы и шифровать их.
Помимо этого существует несколько дополнительных пожеланий.
Например, желательно что бы почтовый модуль умел отличать
свои письма (т.е. письма от другого такого робота) от
писем хозяина в случае когда робот и человек используют
один почтовый ящик.
По возможности необходимо сделать программу максимально
гибкой и легко перенастраиваемой.
Использовать какие либо встроенные средства шифрации
и электронной подписи не представляется возможным в силу
высокой сложности реализации криптостойких алгоритмов
и разных требований к таким подпрограммам со стороны пользователей
(так, к примеру во многих российских организациях возможно
использование только криптомодулей сертифицированных ФАПСИ).
Примерно сходные предпосылки применительны и к системе
упаковки.
Таким образом программа может не содержать в себе средства
шифрации и архивирования однако должна уметь легко работать
с внешними программами такого рода.
Итак, данная программа реализована в виде двух исполняемых
модулей - "RemoteExchangeSetup.exe" и "RemoteExchange.exe".
Первая
программа является утилитой конфигурации и выполняет служебные
функции. С ее помощью можно настраивать конфигурацию работы
RemoteExchange, заводить и удалять префиксы и т.д. Все
параметры настройки программы хранятся в системном реестре
Windows и в зависимости от настроек могут быть либо индивидуальными
для каждого пользователя вашего ПК, либо общими для всех.
В системном каталоге RemoteExchange (стандартное размещение:
"C:\Program Files\RemoteExchange") содержатся
два служебных пакетных файла "RemoteExchangeSaveSettings.bat"
- этот пакетный файл позволяет сохранить текущие общие
настройки программы в файл "RemoteExchange.GlobalSettings.reg"
и локальные настройки текущего пользователя (только в
выбора локльных установок) в файл "RemoteExchange.LocalSettings.reg".
Второй пакетный файл - "RemoteExchangeRestoreSettings.bat"
позволяет восстановить ранее сохраненные в текщем каталоге
настройки программы.
Вторая
программа, собственно, и является основным исполняемым
модулем осуществляющим обмен документами. Данный модуль
в общем случае не требует вмешательства человека в период
своей работы и использует настройки созданные с помощью
программы RemoteExchangeSetup.
Данный модуль может функционировать в трех различных
режимах, а именно:
1. Клиентское приложение
Данный режим предназначен для запуска программы из-под
какого либо клиентского приложения. По выполнении своей
задачи программа RemteExchange в этом режиме вернет
управление прикладной программе ее вызвавшей.
2. Работа по расписанию
В данном режиме программа RemoteExchange функционирует
как самостоятельное приложение. Пользователь программы
имеет возможность настраивать встроенную службу расписания
учитывая необходимую частоту и время выполнения задач.
Так же имеется возможность накладывать ограничения на
выполнение задач в зависимости от дня недели или времени
суток.
3. Режим интеграции с Windows NT4/2000/XP.
Данный режим является дальнейшим развитием режима работы
по расписанию при котором программа RemoteExchange устанавливается
как сервисный процесс в рамках операционных систем Windows
NT4, Windows 2000 и Windows XP.
При разработке программы особое внимание уделялось подсистеме
обработки коммуникационных ошибок. Алгоритм их обработки
так же зависит от режима функционирования программы.