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

Schriftart:

© А. Шевелёв, 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).

Der kostenlose Auszug ist beendet.

Genres und Tags

Altersbeschränkung:
12+
Veröffentlichungsdatum auf Litres:
25 Mai 2017
Umfang:
296 S. 94 Illustrationen
ISBN:
9785448522871
Download-Format:
Entwurf
Средний рейтинг 5 на основе 204 оценок
Audio
Средний рейтинг 4,2 на основе 928 оценок
Audio
Средний рейтинг 4,6 на основе 998 оценок
Entwurf
Средний рейтинг 4,8 на основе 514 оценок
Audio
Средний рейтинг 4,8 на основе 5146 оценок
Text
Средний рейтинг 4,9 на основе 425 оценок
Text, audioformat verfügbar
Средний рейтинг 4,7 на основе 7092 оценок
Text, audioformat verfügbar
Средний рейтинг 4,9 на основе 657 оценок
Audio
Средний рейтинг 4,8 на основе 26 оценок