Использование командных файлов и скриптов

Скрипт для WSH (Windows Script Host) – это фактически программа для операционной системы. Такая программа может использоваться в качестве связующего (интегрирующего) механизма. Из скрипта программист может запустить в синхронном или асинхронном режиме любое приложение, выполнить ряд административных действий.

Скрипт – хорошее решение в том случае, когда необходимо интегрировать два приложения, являющиеся COM-серверами, но не имеющими средств для написания программы.

Скрипт подходит и тогда интегрируемые приложения являются COM-клиентами, например, офисные приложения, но по соображениям безопасности макросы отключены.

Скрипт, по-видимому, единственное средство интеграции в том случае, когда необходимые функции доступны только через пользовательский интерфейс. В этом случае можно при помощи команды sendkey имитировать действия пользователя, добиваясь выполнения заданных функций и сохранения результата в файл или в буфер обмена.

Ко всему прочему использование скрипта – недорогое решение, не требующее установки никаких дополнительных программных средств.

Доступ к базам данных (ADO, DAO, ODBC)

База данных – это структурированное хранилище информации. Это может быть один или несколько файлов. Структуру определяет разработчик. Для того чтобы дать возможность пользователю работать с данными разработчик предоставляет программу, называемую СУБД (система управления базой данных). СУБД предоставляет, обычно, визуальный интерфейс к данным, дает возможность создать, удалить, модифицировать структурные единицы: таблицы, базы (как наборы связанных таблиц), формы, запросы и многое другое. Поскольку формат файла базы данных чаще известен, то для одного и того же формата могут быть написаны разные оболочки (СУБД). Правда, такое явление не очень распространено, если не считать версий СУБД.

Для нас сейчас важно понять то, что можно написать нечто сокращенное, что уже не вправе называться СУБД, но дающее, тем не менее, возможность доступа к данным. Подобные средства называют драйверами баз данных. Имея такой драйвер, программист может написать клиентское приложение, то есть реализовать пользовательский интерфейс и, возможно, прикладную логику, на любом языке программирования.

ODBC – open data base connectivity – стандарт, в соответствии с которым реализовывались драйверы к различным форматам баз данных. Пару «драйвер – база данных» называют источником данных. Каждый источник данных имеет уникальное (в рамках компьютера) имя. Прикладной программист обычно не работает с источником данных напрямую. Чаще он использует не визуальный компонент (объект), в свойстве которого указывается имя источника данных. Свойства и методы этого компонента позволяют работать с данными в терминах таблиц, переходов по строкам, запросов и т.п. Существует и набор визуальных компонентов, при помощи которых прикладной программист может реализовать показ пользователю данных.

В операционной системе Windows предусмотрен пункт «ODBC источники» в панели «Администрирование». В этом пункте, обычно работая с правами локального администратора, программист может создавать, удалять, переименовывать источники данных. Источник данных может быть объявлен как системный, то есть доступным для любого пользователя или личным, то есть доступным (правильнее, видимым) только для одной учетной записи – учетной записи создателя.

Для доступа к «своим» базам данных, т.е. MS Access, MS SQL, Microsoft достаточно давно предложила набор объектов под названием DAO – data access objects. Эта технология позволяла работать с базами данных как напрямую, так и через ODBC-драйверы. Различия в функциональных возможностях этих методов определялись двумя причинами. Во-первых, просто исторически сложившимися различиями (что-то не успели реализовать), а, во-вторых, тем, что работая с драйверами, программист фактически предоставлял управление операционной системе. В результате получилось, например, то, что через ODBC можно было запрограммировать асинхронное выполнение запросов, чего не предоставляла «чистая» технология DAO. С другой стороны, через ODBC невозможно организовать вызов параметрических запросов.

Технология ADO (Active Data Objects) явилась достойной преемницей DAO, так как набор объектов, предоставляемый этой новой технологией, существенно расширен и хорошо интегрирован с операционной системой. Пользуясь свойствами и методами ADO объектов, программист может реализовать практически любую мыслимую прикладную задачу, работающую с локальной или удаленной базой данных.

Применение WEB-технологий

В современном мире часто оказываются интегрируемые компоненты расположенными на разных компьютерах. Например, в головном офисе расположена база данных по управлению предприятием. В филиалах, располагающихся в офисах неподалеку или даже в другом городе необходимо использовать программные системы, имеющие доступ к главной базе данных. Такой доступ может быть реализован по-разному. Один из способов состоит в применении web-технологий.

На одном из компьютеров главного офиса устанавливается web-сервер (например, Apache или Microsoft Internet Information Server). Здесь же устанавливается серверная СУБД (MY SQL, MS SQL, Posgre SQL или другая). С целью обеспечения возможности обрабатывать запросы клиентов, выбирая данные из базы данных и формируя ответ в виде HTML-страницы, на серверном компьютере устанавливается интерпретатор PHP для Apache или активизируется поддержка так называемых активных серверных страниц, то есть ASP (Active Server Pages) для IIS. Таким образом, серверные программы могут быть написаны на PHP, Visual Basic. Возможно применение CGI (Common Gateway Interface) – технологии, позволяющей писать серверные программы на С++ и других языках. Клиентские приложения разрабатываются в форме web-клиента на базе Internet Explorer, Opera или другого браузера, обрабатывающего скрипты на VBScript или JavaSCript.

Сокеты

Сокет – абстракция, которую можно определить как «точка соединения». Инициатора соединения называют сокет-клиентом, а сокет-сервер должен постоянно находиться в режиме ожидания запросов на соединение.

Понятие сокетов было введено с целью скрытия от прикладного программиста особенностей реализации транспортного протокола. Оставшаяся на виду характеристика соединения – это тип связи: TCP (то есть связь с установлением соединения, с квитированием и правильной сборкой пакетов) или UDP (дейтаграммный способ связи, при котором не устанавливается соединение, не гарантируется доставка пакетов, но, по сравнению с TCP, UDP – гораздо более быстрый и экономный способ связи).

Обратите внимание на то, что приложение может быть сокет-клиентом или сокет-сервером или сокет-клиентом и сокет-сервером одновременно. Такую двойную роль играют приложения-распределители. Например, для реализации системы похожей на ACQ, потребуется использовать клиентский сокет в программе, устанавливаемой у пользователя (ACQ-клиента), для организации соединения с ACQ-сервером и передачи ему данных о присоединении. Во время соединения ACQ-сервер может по этому установленному соединению передать список активных пользователей. После такого обмена соединение может быть разорвано, т.к. держать много одновременно открытых соединений слишком накладно для ACQ-сервера. Поэтому для того чтобы передать сообщение от одного пользователя другому теперь уже серверу придется выступить в роли сокет-клиента, установить соединение с адресатом и передать ему сообщение. Чтобы принять это сообщение ACQ-клиент, в свою очередь, должен иметь серверный сокет. Таким образом, и у ACQ-сервера и у ACQ-клиента должно быть по два сокета: один серверный – прослушивающий, а второй клиентский – запрашивающий.

Программировать сокеты можно пользуясь API-функциями или пользуясь соответствующими объектами.

Именованные каналы

Именованные каналы – это еще один способ передачи сообщений между процессами, работающими на одном компьютере или на разных компьютерах в локальной сети. Этот механизм отсутствует в Windows Me, 95, 98. Именованные каналы могут использоваться как на дуплексных, так и на симплексных линиях связи.

Так же, как и сокеты, это – двусторонний протокол. Идея метода состоит в том, что на серверной стороне объявляется именованный канал. На клиентской стороне устанавливается соединение с этим каналом. А дальнейший обмен информацией похож на обычную работу с файлами: любая сторона может писать – посылать в канал данные или читать – получать из канала поток байтов. Кстати, любопытно, что в UNIX именованный канал считается просто одним из файловых типов.

Чтобы иметь возможность одновременно обрабатывать запросы нескольких клиентов, сервер именованного канала может быть написан в виде многонитиевого (многопотокового) приложения – по одной нити на одного клиента.

Наши рекомендации