А. Шевелёв - DbfWebServer. Способ эффективной работы с таблицами DBFв среде Интернет
- Название:DbfWebServer. Способ эффективной работы с таблицами DBFв среде Интернет
- Автор:
- Жанр:
- Издательство:Литагент Ридеро
- Год:неизвестен
- ISBN:9785448522871
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
А. Шевелёв - DbfWebServer. Способ эффективной работы с таблицами DBFв среде Интернет краткое содержание
DbfWebServer. Способ эффективной работы с таблицами DBFв среде Интернет - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Данное общее описание более потробно будет представлено в разделе «Спецификации интерфейса списков v.1.0».
Блоки кода
Отличительной особенностью сервера является то, что используются блоки кода. Это обусловлено тем, что программа создана на платформе CLIPPER – xHarbour. Прежде всего, xHarbour – это виртуальная машина (VM). Такой подход уже использовался в системе управления базами данных (СУБД) CLIPPER, используется в JAVA.
В отличие от виртуальной машины JAVA, которая устанавливается на компьютере клиента и выполняет скрипты, полученные с сервера, виртуальная машина xHarbour работает на стороне сервера и выполняет блоки кода, посылаемые клиентом.
Блоки кода – это безымянные функции. Ссылку на эту безымянную функцию можно присвоить переменной и выполнить её с помощью специальной функции Eval ().
Блоки кода предоставляют прекрасную возможность строить информационные системы с гибкой структурой и различными видами связи и взаимодействия. Именно блоки кода положены в основу сервера dbfWebServer.
Передача данных
Мы были свидетелями парада технологий: майнфрам, клиент-сервер, распределённые сети, интернет. На всех этапах этой череды постоянно возникала проблема передачи данных. Каждый раз она каким-либо образом решалась, но всегда оставалось чувство неудовлетворённости. Не было полного понимания, что такое передача данных. В рамках технологии клиент-сервер это достаточно трудно осуществить, поскольку в такой конфигурации всегда доминирует сервер, от клиента в плане хранения данных мало что зависит.
Новый подход, предложенный в работе [4], и данная разработка дают возможность поставить передачу данных во главу угла создания информационных систем нового поколения, где передача данных становится определяющим условием существования информационных систем.
Из вышесказанного следует, что передача данных в утилитарном смысле для информационных систем – это общение информационных объектов. Передаётся смысл информации, значения данных, а не структура данных, как таковая. Исходя из этого, информационные системы следует строить со слабоформализованными структурами данных, но мощными средствами обработки данных и представления их в естественном виде и передаваемые по стандартным телекоммуникационным каналам.
DbfWebServer станет весомым помощником в этом деле, поскольку учитывает как накопленный опыт, так и вышеописанные спецификации.
Передача данных – это совместный доступ к одной и той же информации различных приложений.
Передача данных – это однотипный предсказуемый пользовательский интерфейс приложений.
Передача данных – это слабоформализованные структуры данных, обмен только информацией, а не структурой данных вместе с данными.
Передача данных – это распределённые базы данных.
Эти соображения также легли в основу реализации спецификаций, изложенных в седьмой главе этой книги.
Реализация спецификаций
Перейдём к практической стороне вопроса – реализации. Реализация вышеизложенных спецификаций и спецификаций, приведенных в гл. 7 в конкретной информационной системе – задача непростая. Если бы все вопросы были решены, не было бы необходимости в разаработках в этом направлении.
В рамках данной разработки будем использовать подход разделения на процессы.
С появлением сервера dbfWebServer стало понятно, что работа с базами данных делится на два процесса. Такое разделение является весьма продуктивным направлением в области обработки данных и построения информационных систем. Попробуем убедиться в этом на конкретном примере.
Один процесс работает с базой данных. Этот процесс – программа dbfWebServer, которая занимается задачей управления базой данных и обработкой запросов от клиентов.
Другой процесс отображает и строит пользовательский интерфейс. Пользовательский интерфейс строится исходя из данных, полученных от сервера, с помощью такого стандартного браузера, как Microsoft Internet Explorer, Netscape, Opera или Firefox.
Эти два процесса согласуются между собой с помощью спецификации HTML. Это обусловлено тем, что используются стандартные браузеры, и передача данных осуществляется в рамках технологии Интернет.
Рассмотрим построение интерфейса на примере рабочего блока, входящего в состав дистибутива.
Построение пользовательского интерфейса картотеки пациентов на базе управляемых списков (рис. 3.3).
Для создания пользовательского интерфейса сначала определим список глобальных переменных, которые будут использоваться в разработке.
Чтобы создать информационную систему или элемент информационной системы априори или исходя из опыта, определяется некий минимальный набор средств:
– объявить и инициализировать глобальные переменные;
– позаботиться о построении пользовательских форм;
– определиться с методологией построения форм;
– обозначить набор правил построения и развития форм.
Семейство переменных
Семейство переменных, которые помогают в управлении пользовательским списком, представлено следующим перечнем:
,ixpub («R_karbeg», 1) – row
,ixpub («L_karbeg», 10) – curele
,ixpub («V_karbeg»,»») – search value string
,ixpub («E_karbeg», 10) – end of list
,ixpub («U_karbeg»,»») – fierst element of list
,ixpub («N_karbeg»,»») – next element of list
,ixpub («O_karbeg», «2») – order index
Построение формы
Построение пользовательской формы начинается с разметки экрана.
Сначала экран делится на две зоны. Одна зона отводится под основной список, вторая – под карточку и элемент управления списком.
Основная таблица и форма управления имеют, как правило, одинаковое наименование. Так, для таблицы KARBEG00.dbf создаётся одноимённая форма karbeg00.html. Исходный текст этой формы следующий:
ixpub («R_karbeg», 1)
,ixpub («L_karbeg», 10)
,ixpub («V_karbeg»,»»)
,ixpub («E_karbeg», 10)
,ixpub («U_karbeg»,»»)
,ixpub («O_karbeg», «2»)
,[
АРМ: ] +HB_oemToAnsi (NAIARM00-> (FieldGet (3))) + [
Home PgUp PgDn – ++
|
||||||
F.karbeg.focus ();
function kD (kC) {
kV=F.karbeg.value;
if(F.R.value==’l’) {return;}
F.R.value=’l’;
if(kC==38){parent.parent.A.location.href='karbeg001]+O_karbeg+[.html? R_karbeg – ';}
else if(kC==40){parent.parent.A.location.href='karbeg001]+O_karbeg+[.html? R_karbeg++';}
else if(kC==33){parent.parent.A.location.href='karbeg001]+O_karbeg+[.html? kC:='+kC;}
else if(kC==34){parent.parent.A.location.href='karbeg001]+O_karbeg+[.html? kC:='+kC;}
else if(kC==35){parent.parent.A.location.href='karbeg001]+O_karbeg+[.html? kC:='+kC;}
else if(kC==36){parent.parent.A.location.href='karbeg001]+O_karbeg+[.html? R_karbeg:=1»; }
else if (kC==27) {parent.parent.location.href='index.html’;}
}
function kU(kC){window.status=kC;
kV=F.karbeg.value;
if(kC==120){location.href='imagix0021.html’;}
else if(kC>40){parent.parent.A.location.href='karbeg001]+O_karbeg+[.html? kC:='+kC+», V_karbeg:=«»+kV+«"»; }
else if(kC==8){parent.parent.A.location.href='karbeg001]+O_karbeg+[.html? V_karbeg:=«»+kV+«"»; }
}
function kS(){parent.parent.A.location.href='karbeg001]+O_karbeg+[.html’;}
]
На что следует обратить внимание здесь? Элемент управления строится с помощью HTML разметки формы ввода
Интервал:
Закладка: