|
генерации HTML-страниц.
Сравните двухзвенную архитектуру на рис. 8-1 с трехзвенной архитектурой,
показанной на рис. 8-4. Мы добавили промежуточный слой между интерфейсом
пользователя и базой данных. Этот новый слой, сервер приложений, заключает в
себе логику работы приложения - деловую логику, которая является общей для
некоторой области задач. Клиент становится ничем иным, как средством просмотра
объектов среднего яруса, а база данных становится хранилищем этих объектов.
Самое главное, что вы выигрываете, - это разделение интерфейса пользователя и
базы данных. Теперь вам не нужно встраивать знание базы данных в GUI. Напротив,
все сведения о том, как работать с базой данных, могут размещаться в среднем
ярусе.
Две главные задачи сервера приложений - это изоляция подключений к базе данных
и обеспечение централизованного хранилища для деловой логики. Интерфейс
пользователя имеет дело только с отображением и вводом данных, а ядро базы
данных занимается только проблемами базы данных. При перемещении обработки
данных в центральное место одну и ту же программу сервера приложений могут
использовать различные интерфейсы пользователя, и устраняется необходимость
писать правила обработки данных всякий раз, когда вы создаете новое приложение.
Рис. 8-4. Трехзвенная архитектура
Глава 9. Программирование с использованием CGI - увы...отсутствует.
Глава №10.
Perl
Язык программирования Perl превратился из инструмента, используемого
преимущественно администраторами Unix-систем, в наиболее распространенную
платформу разработки для World Wide Web. Perl не предназначался изначально для
Web, но простота его использования и мощные функции для работы с текстом
сделали естественным его применение для CGI-программирования. Сходным образом,
когда mSQL впервые появилась на сцене, исключительные компактность и скорость
выполнения сделали ее очень привлекательной для разработчиков Web, которым
требовалось обслуживать ежедневно тысячи операций. MySQL со своей высокой
скоростью и расширенными возможностями стала еще более привлекательным
средством для веб-разработчиков. Естественно поэтому, что был разработан
интерфейс Perl к обеим базам - MySQL и mSQL, - объединив таким образом их
достоинства.
В то время, когда пишется эта книга, существуют два интерфейса между Perl и
MySQL с mSQL. Более ранний состоит из специализированных интерфейсов Myaql.pm и
Msql.pm, которые работают только с MySQL и mSQL соответственно. Другой, более
новый интерфейс является подключаемым модулем в комплекте DBI (DataBase
Independent) - независимых от базы данных модулей. DBI является попыткой
обеспечить общий Perl API для доступа к любым базам данных и предоставления
более высокой переносимости. Интерфейс DBI стал наиболее надежным и стандартным,
и разработчики MySQL рекомендуют пользоваться только DBI, поскольку дальнейшая
разработка модулей Mysql.pm и Msql.pm прекращена. Однако многие унаследованные
системы все еще используют их, поэтому мы расскажем здесь и о них.
DBI
Рекомендуемым методом доступа к базам данных MySQL и mSQL из Perl является
интерфейс DBD/DBI. DBD/DBI означает DataBase Dependent/DataBase Independent
(Зависимый от базы данных/Независимый от базы данных). Название связано с
двухъярусной реализацией интерфейса. В нижнем ярусе находится зависимый от базы
данных уровень. На нем существуют свои модули для каждого типа базы данных,
доступного из Perl. Поверх этого уровня находится независимый от базы данных
уровень. Это тот интерфейс, которым вы пользуетесь при доступе к базе данных.
Выгода такой схемы в том, что программисту нужно знать только один API уровня
независимости от базы данных. Когда появляется новая база данных, кому-нибудь
нужно лишь написать для нее модуль DBD (зависимый), и она станет доступна всем
программистам, использующим DBD/DBI.
Как и в любом модуле Perl, для получения доступа нужно указать DBI в директиве
use:
#!/usr/bin/perl -w
use strict;
use CGI qw(:standard);
use DBI;
При запуске программ Perl для MySQL/mSQL следует всегда задавать аргумент
командной строки -w. Благодаря этому DBI будет перенаправлять все специфические
для MySQL и mSQL сообщения об ошибках на STDERR, и вы сможете увидеть ошибки,
вызванные работой с базой данных, не прибегая к явной проверке их в программе.
Всякое взаимодействие между Perl, с одной стороны, и MySQL и mSQL - с другой,
производится с помощью объекта, известного как описатель базы данных (handle).
Описатель базы данных (database handle) - это объект, представленный в Perl как
скалярная ссылка и реализующий все методы, используемые для связи с базой
данных. Одновременно можно открыть любое число описателей базы данных,
ограничение накладывают только ресурсы системы. Метод connect() использует для
создания описателя формат соединения DBI:servertype:database:hostname:port (имя
узла и порта необязательны), дополнительными аргументами служат имя
пользователя и пароль:
my $dbh = DBI->connect( 'DBI:mysql:mydata ', undef, Lindef);
my $dbh = DBI->connect( 'DBI:mSQL:mydata:myserver', undef, undef);
my $dbh = DBI->connect( 'DBI:mysql:mydata', 'me', 'mypass")',
Атрибут servertype является именем специфического для базы данных DBD-модуля, в
|
|