bannerbanner
DbfWebServer. Способ эффективной работы с таблицами DBFв среде Интернет
DbfWebServer. Способ эффективной работы с таблицами DBFв среде Интернет

Полная версия

DbfWebServer. Способ эффективной работы с таблицами DBFв среде Интернет

Язык: Русский
Год издания: 2017
Добавлена:
Настройки чтения
Размер шрифта
Высота строк
Поля
На страницу:
1 из 2

DbfWebServer

Способ эффективной работы с таблицами DBFв среде Интернет


А. Шевелёв

© А. Шевелёв, 2017


ISBN 978-5-4485-2287-1

Создано в интеллектуальной издательской системе Ridero

Всё о сервере http://ixbase.info

Благодарности


Предлагаемый подход появился благодаря неустанным разработкам по совершенствованию и поддержке стиля xBASE со стороны xHarbour (http://xharbour.com) – разработчика программного обеспечения (ПО), ставшего достойным преемником великого наследия CLIPPER.

Особая благодарность владельцам авторского права (Массачусеттский технологический институт, Национальный институт исследований в области информатики и автоматизации, Университет Keio) за прекрасную документацию HTML


Девиз:

сервер, который всегда с тобой и с каждым днем лучше


Статические страницы могут быть превращены в динамические с помощью нового сервера, который поддерживает работу с базой данных. Под базой данных здесь подразумевается набор таблиц типа *.dbf.

Такой способ построения динамических страниц открывает новые возможности для формирования информационных ресурсов, настольных приложений и передачи данных.

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

Введение

Работа с таблицами типа *.dbf пока не представлена должным образом в среде Интернет. Это связано, наверное, с повальным увлечением технологией SQL. Считается, что таблицы DBF – это устаревший подход и будущее только за технологиями типа сервер-клиент. Тем не менее, были попытки (и они не прекращаются) сблизить технологии Интернет и системы управления базами данных – СУБД (1,2). Эта разработка является также инструментом, способствующим насыщению Интернет массивом данных, хранящихся в базах данных. Теперь статические страницы становятся динамическими с легкостью, присущей системам управления данных типа CLIPPER. Работа с таблицами DBF проста и интуитивно понятна.

Таблица представляет собой набор колонок (полей) по вертикали и строк (записей) по горизонтали. Таким достаточно простым и наглядным образом формируются и собираются однотипные записи в списки, которые могут быть очень большими. Допустимый размер таблиц типа *.dbf намного превышает размер таблиц типа *.exl, используемых в программе Excel, и может достигать 3 млн записей, а СУБД DBF намного проще и легче системы SQL. На сегодняшний день именно в этих таблицах хранится достаточно много данных, которые не должны лежать мёртвым грузом или быть утерянны. Свободно обратиться к данным, хранящимся в таблицах *.dbf, организовать передачу данных между информационными узлами или приложениями позволяет новый сервер dbfWebServer (рис. В.1).



Рис. В.1. Экранная форма программы dbfWebServer

Список сокращений


HTTP – HyperText Markup Language

VM – виртуальная машина

WWW – World Wide Web

ДОС – дисковая операционная система

ИТ ixBASE – информационные технологии ixBASE

ОС – операционная система

ПО – программное обеспечение

ПО ixBASE – программное обеспечение ixBASE

СУБД – система управления базами данных

Глава 1. Эффективный сервер для таблиц DBF

Сервер, который всегда с тобой


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

Отличительной особенностью данного сервера является то, что для полноценной работы с базами данных достаточно одной программы, в отличие от комплекса SQL, например APACHE + MySQL + PHP. Для такого комплекса необходимо запустить как минимум два сервера – APACHE и SQL – или другую родственную пару серверов.

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

Размер программы составляет порядка 1400 Кб. В программу включены все основные функции CLIPPER, которые необходимы для работы с базой данных, строками, математическими операциями.

Запустить сервер можно с любого носителя, даже флэш-памяти, что также может стать весьма удобным методом работы, если необходимо часто переносить данные. Относительно небольшой объём базы данных, можно сказать мобильный, позволит носить с собой все данные, запускать сервер с любого компьютера и пользоваться этими данными. Такой подход, в свою очередь, позволит помочь при распределённой или удалённой работе, когда необходимо обслуживать или развивать несколько информационных ресурсов или проектов, использующих данные и базы данных.

Устойчивость сервера

Устойчивость работы сервера как программы и не разрушающий индексы таблиц режим работы сервера с базой данных является важным моментом. Для таблиц типа *.dbf всегда было достаточно трудно подобрать устойчивый сервер. В данном случае речь идёт об операционной системе (ОС). в этом отношении лучше всего показал себя сервер NOVELL. В других операционных системах при многопользовательском режиме работы достаточно часто наблюдается разрушение индексных файлов. Этот фактор в значительной мере тормозит использование таблиц в других конфигурациях не NOVELL и мешает широкому распространению приложений на основе баз данных DBF.

По отношению к операционной системе программа dbfWebServer является однопользовательской, а потребление информации имеет, наоборот, многопользовательский характер. Для такого случая следует отметить, что семейство операционных систем WIN32 работает более устойчиво.

Сервер dbfWebServer в своей работе для организации многопользовательского режима использует систему сокетов, а с сокетами ОС WIN32 работают надёжнее, нежели с системой разделения файлов между приложениями.

Программа dbfWebServer может работать параллельно с другими программами, обеспечивая одновременный разделённый доступ к таблицам и индексам.

Сервер обрабатывает ошибки, возникающие при интерпретации блоков кода, и возвращает соответствующие сообщения, поэтому пользователю или разработчику легко отлаживать скрипты, которые запускаются на сервере. Это, правда, не относится к бесконечным циклам. Здесь может возникнуть проблема.

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

С точки зрения безопасности и устойчивости работы сервера отладку скриптов лучше всего осуществлять в локальном режиме, на локальном сервере, а потом переносить на удалённый сервер.

Сама по себе работа СУБД CLIPPER с базами данных проверена временем и является самой надежной на сегодняшний день.

Состав сервера

Состав сервера определяет следующий основной перечень файлов и директорий, входящих в состав поставки (дистрибутив) сервера dbfWebServer:

\www\ – рабочая директория сервера

\www\dbf\ – поддиректория с таблицами *.DBF

\www\\html\ – поддиректория, в которой находятся

исходные скрипты HTML

\www\\HTML4\ – поддиректория c документацией HTML

\www\\xHarbour\ – поддиректория, в которой находится

документация xHarbour

dbfWebServer. exe – программа

dbfWebServer.ini – файл инициализации

dbfWebServer. txt – первичный список таблиц

В директории с таблицами представлены только основные таблицы, необходимые для начала работы и понимания сути работы сервера. Пользователь или разработчик может самостоятельно расширять этот список таблиц исходя из задач, которые ему предстоит решать. Способ формирования списка таблиц или проекта будет обсуждён далее.


\dbf – директория с таблицами

DBFHTM00.CDX

DBFHTM00.DBF – блоки кода для HRB. exe

DBFRUN00.CDX

DBFRUN00.DBF – блоки кода общего назначения

DIRECT00.CDX

DIRECT00.FTP

DIRECT00.DBF – для списков директорий

SPIDBF00.CDX

SPIDBF00.DBF – проект базы данных: список таблиц

SPIDBF10.CDX

SPIDBF10.DBF – проект базы данных: список полей

SPIDBF20.CDX

SPIDBF20.DBF – проект базы данных: список индексов

Директория \www\ добавлена с точки зрения совместимости с другими серверами, например Apache.

Примечание. От версии к версии состав сервера может меняться.

Установка сервера

Загрузить из Интернета архивный файл dbfWebServer. zip

Распаковать архивный файл или скопировать содержимое с инсталляционного диска на свой локальный жёсткий диск.

Программа не требует процедуры установки.

Если установка сервера производится с инсталляционного диска, то следует просто скопировать содержимое СД-диска на локальный жёсткий диск.

Рекомендуется скопировать всё в корневой каталог.

Запуск сервера

Сервер запускается из командной строки набором имени файла

dbfWebServer. exe

или кликом мыши по этому имени в проводнике.

После запуска появится окно с программой, как показано на рис. В.1.

После того как программа запустится, в адресной строке браузера введите и активизируйте следующий адрес:

http://localhost:4180

по умолчанию будет загружена страница index.html:

http://localhost:4180/html/index.html

Примечание. Загрузку стартовой страницы необходимо обеспечить как минимум для двух случаев:

• когда сервер устанавливается параллельно существующему другому серверу. это будет рассмотрено ниже (привязка сервера);

• когда сервер устанавливается самостоятельно.

Если сервер устанавливается параллельно, то используется файл dbf.html, чтобы не пересекаться с существующим сервером.

В любом случае по умолчанию загружается файл index.html из директории /html/.

После загрузки страницы index.html в браузере должна появиться картинка следующего содержания (рис. 1.2):



Рис. 1.2. Вид загруженной страницы index.html из сервера dbfWebServer


Для успешного старта программы и дальнейшей продуктивной работы с таблицами программе требуется два служебных файла.

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

Файл инициализации содержит инициализацию системных переменных и набор настроек.

Файл проекта содержит в основном системные таблицы, которые требуются для работы сервера и входят в состав дистрибутива.

Файл инициализации

Запуск программы dbfWebServer. exe начинается с загрузки стартового файла dbfWebServer.BEG.

Инициализация программы (а это для нее ответственный момент) производится с помощью специального файла. Это делается для того, чтобы объявить и инициализировать глобальные и системные переменные вне программы, предоставив пользователю возможность тонкой настройки, если такая необходимость возникнет.

В файле инициализации устанавливаются предварительные настройки сервера и базы данных. Эти настройки можно редактировать или дополнять. Редактировать настройки можно с помощью любого редактора. Изменять что-либо желательно только после того, как вы хорошо изучили предмет и понимаете смысл и назначение установок. Начальное содержание этого файла следующее:

Файл dbfWebServer.BEG


Set (01,«OFF»),Set (03,4 ),Set(04,"dd.mm.yy»),Set (08,«ON»), Set (09,«ON»)

Set (11,«ON»),Set (14,10),Set (31,.F.),Set (32,«OFF»),Set (35,«ON»)

ixPUB («arrDbfRun», arRay (512,2))

ixPUB («arrDbfOpe», arRay (64))

ixPUB (»_DBF_», «STA»)

ixPUB («M», «001»)

ixPUB («ixPORT», 4180)


Список наиболее значимых переменных для программы, объявленных и инициализированных в стартовом файле программы, следующий:

arrDbfRun

– массив, предназначенный для блоков кода, готовых к выполнению

arrDbfOpe

– массив, предназначенный для хранения списка открытых файлов. Эта переменная является элементом системы динамического открытия файлов

ixPORT

– номер порта, на котором программа слушает и принимает сообщения


Стартовый файл проекта

Файл, содержащий список таблиц, называется dbfWebServer. txt

Этот файл используется динамическим загрузчиком. Назначение этого файла и формат записей будут рассмотрены ниже. Здесь следует отметить только то, что сервер может стартовать без этого файла, но в дальнейшем обращение к таблицам без проекта таблиц в последующей работе будет затруднительно, можно использовать только простые страницы, без обращения к таблицам.

Привязка сервера

Иногда сервер dbfWebServer будет устанавливаться параллельно с другим сервером. У пользователя уже может действовать какая-либо система работы с данными. В этом случае установка требует нескольких манипуляций в ручном режиме.

Рассмотрим это на примере, когда на компьютере уже установлен комплекс из сервера Apache и базы данных MySQL.

Для сервера Apache и ряда других WEB серверов, как правило, создаётся рабочая директория, содержащая рабочие скрипты, с именем

\www\

В многопрофильной системе IxBase, в которую входит данный комплекс, используется следующий путь расположения компонент системы:

\ixb\bin\www\

В директории \ixb\bin\ находится сам сервер (программа) Apache. exe.

В директории \ixb\mysql\ находится база данных MySQL.

Рабочие файлы дистрибутива сервера dbfWebServer копируются в этом случае соответственно в директорию \ixb\bin\.

Содержимое директории \www\ сервера dbfWebServer копируется в директорию \ixb\bin\www\ уже установленного, например, сервера многопрофильной системы ixBase.

Глава 2. Особенности программирования

Главной особенностью является использование блоков кода. Синтаксис блоков кода несколько отличается от синтаксиса исходного кода программы в стиле xBASE. В блоках кода отсутствует возможность использования итераторов WHILE, FOR. Вместо этого используются итераторы по базе данных или массиву dbEval () и aEval (). В блоке кода функции объединяются в группы в явном или неявном виде, то есть представляют собой одну строку, в которой операторы разделены запятой, например

DBFRUN00-> (dbGoGop (),FieldGet (1))

Дополнительные функции

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

ixPUB (cArg1,value) – объявление глобальной переменной. Первый аргумент задаёт имя переменной в виде строки. Второй аргумент функции – значение, присваиваемое переменной. Значение может быть любого допустимого типа.

ixWhile (cKey, cValue) – итератор, используемый в блоках кода. Первый строковый аргумент задаёт условие цикла, второй строковый аргумент определяет блок кода (функцию).

dbfRun (cName) – функция, запускающая блок кода на выполнение. Может вызываться из блока кода. Работает совместно с таблицей DBFRUN00.

DbfOut (bLine, RelNam, RelVal, KeyNam, KeyVal, Filter, PrUni, MaxEle) – функция, предназначенная для вывода списка из базы данных согласно заданным параметрам. Представляет собой альтернативу функции dbEval (), в некоторых случаях позволяет добиться лучших результатов.

_x_sta (cStr_1,cStr_2,cStr_3) – функция, предназначенная для вывода сообщений в окне программы.

encode (cString) – функция перекодировки данных, передаваемых по каналу Интернет.

Системные таблицы сервера

Основным постулатом системы является то, что весь исходный код хранится в базе данных. Исходный код заносится в виде блоков кода, совместимых с системой CLIPPER 5.3.

Чтобы разделить управление между различными программами реализациями информационных технологий ixBASE, используются следующие системные таблицы:

DBFHTM00. Используется CGI-скриптами HRB. EXE (Harbour), CLP. EXE (CLIPPER 5.3), ALS. EXE (Alaska). Скрипты работают под управлением WIN32. Для операционной системы UNIX скрипт находится в разработке, желающие могут скомпилировать его самостоятельно.

DBFRUN00. Используется программой IXBASE. EXE, созданной системой xHarbour. Работает под управлением WIN32 и WIN64.

DBFBLO00. Используется программой IXBASE. EXE (CLIPPER 5.3, FiveWin 1.95). Работает под управлением WIN32.

DBFMEN00. Таблица функциональных клавиш. Используется программой IXBASE. EXE (CLIPPER 5.3, FiveWin 1.95).

Все таблицы для вышеперечисленных программ находятся в директории

/ixb/sys/dfw/

В укороченной версии программы эти правила не используются, все таблицы находятся в директории

./dbf/

Немного истории

Для программы IXBASE. exe (DOS) использовалась директория /ixb/sys/dbf/.

В связи с тем, что в идеологии системы ixBase произошли большие изменения, пришлось разделить таблицы базы данных на две группы: /DFW и /DBF.

Динамический загрузчик

Программа открывает таблицы с помощью динамического загрузчика. Список таблиц, входящих в проект, представляется в двух видах:

первый вид – это текстовый файл dbfWebServer. txt;

второй вид – это список таблиц: SPIDBF00.dbf, SPIDBF10.dbf, SPIDBF20.dbf (рис. 2.1).


Таблица SPIDBF00.dbf содержит список наименований таблиц проекта.

Таблица SPIDBF10.dbf содержит список полей таблиц.

Таблица SPIDBF20.dbf содержит список ключей сортировок таблиц.



Рис. 2.1. Экранная форма результата запроса к серверу dbfWebServer

Порядок работы динамического загрузчика

Динамический загрузчик построен на обработке ошибки, возникающей при обращении к таблице, которой нет в рабочей области системы CLIPPER (xHarbour), код ошибки subCode = 1002.

Эта ошибка возникает, как было сказано, при попытке обращения к таблице, которая ещё не открыта. Это может быть, например, в следущих конструкциях:

– SPIDBF00-> (dbGoTop ())

– dbSelectArea («SPIDBF10»)

или других конструкциях, используемых как в исходном программном коде, так и блоках кода.

При возникновении ошибки программа обрабатывает эту ситуацию следующим образом.

Сначала сканируется текстовый файл dbfWebServer. dbf. Если запрашиваемая таблица есть в списке этого файла, то она открывается с помощью функции ixOpen (cName). Имя этой таблицы заносится в массив arrDbfOpe. Если таблица отсутствует физически, то она сначала создаётся и затем открывается. Все необходимые атрибуты для этого случая должны находиться в списке в специальном формате, как приведено в файле dbfWebServer. dbf для определённых в нём таблиц.

Формат этого файла следующий.

Таблицы разделены специальной строкой из звёздочек —

*********************************************************

Первая строка раздела описывает саму таблицу: путь к таблице, имя таблицы, алиас таблицы, список полей таблицы.

Следующие строки представляют описание индексов таблицы.

Сколько индесов, столько строк (по одной строке на индекс).

Если требуемая таблица не найдена в текстовом файле, динамический загрузчик производит поиск в базе данных (таблице) SPIDBF00.dbf. Если поиск успешен, то он открывает запрашиваемую таблицу и заносит имя таблицы в массив активных таблиц arrDbfOpen.

Если массив активных таблиц переполняется, то первая таблица удаляется из массива и закрывается.

Размер массива задаётся в файле инициализации программы.

Текстовый файл для удаленного управления недоступен, поэтому список таблиц можно и следует хранить в проекте базы данных, который содержится в триаде таблиц SPIDBF00, SPIDBF10 и SPIDBF20 (Рис. 2.1).


Правило формирования наименований таблиц в системе ixBASE

Наименование таблиц формируется, как правило, из двух слов. Из каждого слова выбирается три буквы. Итоговое слово из шести букв дополняется порядковым номером из двух цифр.

SPIDBF00 ->

SPI – список

DBF – dbf таблиц

00 – стартовый

(SPI+DBF+00) => SPIDBF00

Три таблицы, логически объединённые таким образом одним именем, образуют фолдер SPIDBF (00,10,20).

Глава 3. Управление сервером

Основные операции

Сервером можно управлять непосредственно из браузера. Основные операции управления сервером следующие: показать сервер (show), спрятать сервер (hide), закрыть программу (shutdown). Основные операции представлены на рис. 3.1. Эти операции выполняются с помощью стандартной функции WIN API из адресной строки браузера, например

– http://localhost:4180/ShowWindow(hWnd,5) – показать окно программы;

– http://localhost:4180/ShowWindow(hWnd,0) – спрятать окно программы;

– http://localhost:4180/sendMessage(hWnd,2,NIL,NIL) – закрыть программу.



Рис. 3.1. Экранная форма стартовой страницы dbf.html с элементами управления сервером dbfWebServer

Документация

Документация представлена тремя ссылками:

– Manuel of dbfWebServer;

– Manuel of HTML4;

– xHarbour functions.


ссылка «Manuel of dbfWebServer» представляет данный вариант документа в электронном виде.

ссылка «Manuel of HTML4» переводит пользователя в документацию для разметки текста в среде Интернет HTML4 на русском языке в оригинальном представлении.

по ссылке «xHarbour functions» осуществляется переход к информационному блоку, который предоставляет доступ к документации xHarbour относительно функции в файловом виде.

Редактирование

Режим редактирования предназначен для работы со скриптами на расстоянии. Скрипты хранятся в виде файлов типа *.html. Эти файлы можно редактировать обычным редактором.

Другой способ редактирования этих файлов предлагается осуществлять через интерфейс системы. Переход к этому режиму работы находится по ссылке «HTML editor».

Если при входе в форму редактирования файлов список файлов оказывается пустым, следует кликнуть по заголовку таблицы, и список заполнится перечнем имён файлов, которые находятся в директории

/html/*.html

Количество записей в списке регулируется с помощью элементов управления « – » и «++». Нажимая тот или иной элемент, можно добиться токого количества записей в списке, которое наилучшим образом соответствует размеру зоны вывода.

Размер поля редактирования регулируется элементами управления по вертикали « – x++» и по горизонтали « – y++».

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

Если требуется изменить интерфейс, можно изменить код соответствующих скриптов.

Запросы к серверу

Вот мы и подошли к сути задачи. А суть эта состоит в том, что серверу нужно посылать определённые запросы и получать необходимую информацию, запрошенную у сервера.

Здесь необходимо напомнить, что запросы к серверу строятся в виде блоков кода. Это обусловлено тем, что используется СУБД CLIPPER-xHarbour, которая ориентирована в данном случае на работу с блоками кода.

Например, следующий запрос к серверу, использующий свойства блока кода, будет выглядеть следующим образом:


src="http://localhost:4180/cb:='

», i:=1,DBFRUN00-> (dbgotop (), ixWhile (»! eof ()», ’cb+= [
] + str (i) + [] +FieldGet (1) + [] +FieldGet (2) + [] + STRTRAN (FieldGet (3), [<], []),dbskip (),i++»)), cb»


Данный запрос заставляет сервер строить ответ, сразу содержащий непосредственно таблицу, данные и разметку, как показано на рис.3.2 в левой части формы.

Простой запрос в виде математического выражения, например, можно набрать прямо в адресной строке браузера и получить ответ:

На страницу:
1 из 2