Лабораторная работа №5 Создание Web приложений с базами данных в среде ado. Net



Скачать 390.31 Kb.
Дата11.07.2014
Размер390.31 Kb.
ТипЛабораторная работа
Лабораторная работа №5

Создание Web приложений с базами данных в среде ADO.NET


1. ЦЕЛЬ И ЗАДАЧИ РАБОТЫ
Ознакомление с технологией создания баз данных в Интернете и, в частности, с методикой настройки сервера SQL Server и создания для него источника данных, с возможностями и набором объектов интерфейса ActiveX Data Object .NET (ADO .NET), с последовательностью подготовки таблиц и хранимых процедур, с особенностями создания и функционирования административного и клиентского приложений Интернет-магазина.
2. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
2.1. Программная модель ADO
Существуют различные способы связи приложений с базами данных. Один из них связан с применением интерфейса ActiveX Data Objects (ADO). Посредством этого интерфейса приложения (как обычные, так и ориентированные на использование технологий Интернета) могут подключаться к базам данных, извлекать, обрабатывать и обновлять информацию в них.

ADO представляет собой интерфейс уровня приложений, созданный поверх объектного интерфейса OLE DB. При этом интерфейс OLE DB обеспечивает универсальный доступ к данным. Такой доступ обеспечивается в свою очередь с помощью провайдеров, таких, как Microsoft OLE DB Provider для ODBC (MSDASQL) или Microsoft OLE DB Provider для SQL Server (SQLOLEDB).

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

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

Данный объект позволяет установить соединение с источником данных посредством интерфейса ODBC или напрямую. В первом случае Вам надо указать имя источника Data Source Name (DSN), а во втором - информацию об источнике данных: имя драйвера, имя сервера, пароль и т. д.

После установки соединения приложение должно подготовить объект Command, записав в его свойства команды, необходимые для доступа к данным. Это могут быть команды выполнения строк языка Transact-SQL (например, строки «select * from clients»), команда вызова хранимой процедуры SQL Server пo ее имени или имя таблицы.

При помощи объекта Parameter приложение может передать вместе с командой параметры. Входные параметры позволяют передавать информацию в хранимые процедуры SQL Server, а выходные — принимать информацию из хранимой процедуры.

Один из методов объекта Command с именем Execute предназначен для инициирования выполнения команды. В зависимости от выполняемой команды он может возвращать результат в виде набора записей Recordset или через выходные параметры хранимой процедуры (если команда запускает такую процедуру).

Результатом выполнения команды может быть набор записей, представляемых объектом Recordset.

Например, в результате выполнения команды SQL «select * from clients» создается набор записей Recordset, представляющих собой массив строк таблицы clients. Приложение способно просмотреть все записи из набора, сохранить их в своей локальной памяти или использовать каким-либо другим способом. В частности, Вы получаете право обновить полученный набор записей, если хотите обновить источник данных.

После обработки набора записей его нужно закрыть методом Close, предусмотренным для этой цели в объекте Recordset. После завершения работы с соединением его также необходимо закрыть, вызвав метод Close объекта Connection.

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

Многие программисты, работающие с базами данных на платформах Microsoft, могли оценить простоту и удобство технологии ADO - ActiveX Data Objects. Интутитивно-понятный интерфейс и логичный набор объектов вместе с простотой программирования заслуженно получили признание программистов.


2.2. Программная модель ADO.NET
Несмотря на достоинства программной модели ADO, вместе с новой платформой .NET Microsoft представляет и новое поколение средств доступа к базам данных - ADO.NET.Cтремительное развитие веб приложений вызвало необходимость пересмотреть методы работы с источниками данных, лучше адаптировать их к специфики приложений. Непредсказуемый рост числа клиентов интернет сайтов заставляет разработчиков переходить от клиентсерверной к three-tier архитектуре, что часто порождает непреодолимые проблемы. Базы данных не способны поддерживать неограниченное число активных соединений, ограничивая доступность сайта и принося убытки. Брандмауэры могут препятствовать передаче двоичных данных между узлами. ADO.NET призвано решить эти и другие проблемы и вместе с тем сохранить удобство и простоту программирования.

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

ADO .NET представляет собой интерфейс уровня приложений, созданный поверх объектного интерфейса OLE DB. При этом интерфейс OLE DB обеспечивает универсальный доступ к данным. Такой доступ обеспечивается в свою очередь с помощью провайдеров, таких, как Microsoft OLE DB Provider для ODBC (MSDASQL), Microsoft OLE DB Provider для SQL Server (SQLOLEDB) или .NET Framework Data Provider for SQL Server.

К основным преимуществам программной модели ADO .NET по сравнению с программной моделью ADO можно отнести:



  1. Использование разъединенной модели доступа к данным.

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

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

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

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

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

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



  1. Хранение данных в объектах DataSet.

При работе с базой данных чаще всего приходится работать не с одной, а несколькими записями. Более того, данные эти могут собираться из различных таблиц. В разъединенной модели доступа к базе данных не имеет смысла соединяться и источником данных при каждом обращении. Исходя из этого, представляется логичным хранить несколько строк и обращаться к ним при необходимости. Для этих целей и используется DataSet.

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



  1. Глубокая интеграция с XML.

Все более широко распространяющийся XML играет важнейшую роль в ADO.NET и приносит еще несколько преимуществ по сравнению с традиционным подходом.

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

Программист, работающий с ADO.NET не обязательно должен иметь опыт работы с XML или познания в этом языке. Все операции остаются прозрачными для разработчика.

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

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

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


2.3. Создание файла базы данных на сервере SQL Server
Прежде чем приступать к созданию активных серверных страниц (страниц ASP) Web приложения, нужно создать базу данных. Предполагается, что на компьютере уже установлены Web сервер IIS (Internet Information Server) и сервер баз данных Microsoft SQL Server версии 2008.

При установке Microsoft SQL Server 2008 необходимо указать в списке устанавливаемых компонент Management Tools, чтобы было установлено приложение Microsoft Sql Server Management Studio(по умолчанию оно не устанавливается).

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

Создание баз данных и их объектов может быть выполнено двумя различными способами. Первый из них – создание с помощью графического интерфейса, второй – с помощью SQL запросов (скриптов). Профессиональные программисты отдают наибольшее предпочтение второму. В работе будут показаны оба способа.

Запустите приложение SQL Server Management Studio и откройте сервер базы данных. Затем шелкните правой кнопкой мыши на пункт Databases в дереве объектов и выберите пункт New Database. На экране появится диалоговая панель New Database, где в разделе General в поле Name введите имя базы данных, которое мы будем использовать в нашем проекте - BookStore.

В том же окне(рис. 1) можно посмотреть и при необходимости изменить путь для размещения файла базы данных. Хотя для нашего проекта это и не требуется, Вы можете указать на этой вкладке параметры, влияющие на рост файла базы данных.

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

После создания файла базы данных можно проверить ее наличие в перечне баз данных нашего (локального) сервера баз данных (рис. 2).

Для создания базы данных при помощи SQL запроса используется конструкция CREATE DATABASE. В нашем примере она будет выглядеть следующим образом:
CREATE DATABASE [BookStore]
Конструкция CREATE DATABASE позволяет устанавливать все настройки для создаваемой базы данных, аналогично графическому интерфейсу. Для подробного описания её грамматики можно обратиться к MSDN.

Рис. 1. Ввод параметров создаваемой базы данных


Теперь, после создания базы данных, нам нужно определить в ней четыре таблицы, в которых будут храниться сведения о книгах, покупателях и персонале магазина. Этими таблицами будут таблицы managers, clients, books и orders. Сценарии SQL, создающие эти таблицы, представлены в каталоге Lab5\BookShopScripts.
2.4. Подготовка таблиц базы данных BookStore
Таблица managers содержит информацию о персонале Интернет-магазина, управляющего его работой через Интернет с помощью специального административного приложения. Назначение полей таблицы managers объясняется в таблице 1.

Когда сотрудник подключается к административному приложению, он вводит свой идентификатор и пароль. Приложение проверяет, есть ли такой пользователь в таблице managers и правильно ли указан пароль. Ecли все верно, приложение выбирает из поля Rights текстовое описание прав сотрудника и обновляет поле LastLogin, фиксируя момент его подключения к системе.

Чтобы создать данную таблицу в базе данных Bookstore, запустите приложение SQL Server Management Studio (если оно еще не работает), а затем шелкните на панели инструментов кнопку New query(см. Рис 2)

Рис. 2. База данных BookStore после ее создания
Таблица 1. Поля таблицы managers

Поле

Тип

Описание

ManagerlD

int

Ключевое поле с атрибутом IDENTITY однозначно идентифицирует запись в таблице managers

Name

varchar(50)

Имя сотрудника, используется в качестве идентификатора при подключении к административному приложению Интернет-магазина

Password

varchar(5O)

Пароль сотрудника

LastLogin

datetime

Время, когда сотрудник подключался к системе в последний раз

Rights

varchar(16)

Права сотрудника

Следующий шаг очень важен. Выберите в списке баз данных, расположенном в правой части инструментальной панели окна SQL Management Studio, базу данных Bookstore, как это показано на рис. 3. Теперь мы будем запускать скрипты SQL в контексте именно этой базы данных(по умолчанию, если другой контекст не определен, используется системная база master).

Чтобы изменить активную базу данных при помощи SQL-запроса необходимо воспользоваться конструкцией use:

USE [BookStore]

go

Рис. 3 Выбор контекста базы данных


Далее воспользуйтесь строкой Open в меню File для выбора файла сценария SQL с именем dbo.managers.sql, создающего таблицу managers.

Загрузив сценарий SQL в окно приложения SQL Server Management Studio, запустите его, щелкнув клавишу F5, кнопку запуска на инструментальной панели (с изображением треугольника зеленого цвета) или выбрав строку Execute из меню Query. Если Вы не допустили ошибок при вводе сценария SQL, в нижней части окна Query появится сообщение "Command(s) completed successfully." (рис. 4).

После создания таблицы managers аналогично создаем таблицы clients, books и orders.Таблица clients содержит сведения, предоставленные посетителями Интернет-магазина при регистрации, а также дополнительные данные — дату регистрации и адрес IP, с которого выполнялась регистрация. Посетитель магазина работает с этой и еще одной таблицей (таблицей orders) при помощи приложения покупателя Интернет-магазина.

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

Поле Status позволяет проверить, какие посетители зарегистрировались, но долго не делали никаких покупок (например, больше года). Выяснив это, Bы можете удалить их регистрационные записи. В этом поле удобно отмечать активность покупателя, например, символом «А». Отмеченные таким образом записи удалять не следует.

Рис. 4. Результат выполнения сценария, создающего таблицу managers

Поле spam применяют для организации автоматической рассылки рекламных сообщений покупателям Вашего магазина. Если при регистрации покупатель проявил желание получать такие материалы, в это поле он может записать строку Yes, а если нет — строку No.

Поля RegisterDate и RegisterIP полезны для «разборок» с недобросовестными посетителями. Средствами утилит трассировки можно определить по адресу регистрации IP доменное имя сервера поставщика услуг Интернета, которым пользуется покупатель, а затем с его помощью вычислить и самого покупателя.

Хотя это и не предусмотрено в данном проекте, Вы можете собирать и хранить к таблице clients другую информацию о посетителях, например, версию использованной ими операционной системы, название и версию браузера, доменное имя рабочей станции. Все эти данные поступают на сервер Web в заголовках HTTP, их легко получить при помощи сценария ASP.

Для создания в базе Bookstore таблицы clients воспользуйтесь (как и в случае таблицы managers) приложснием SQL Server Management Studio и файлом сценария SQL с именем dbo.clients.sql.

Отметим, что ограничения CONSTRAIN, определенные в таблице clients, задают начальные значения при добавлении в таблицу clients новых записей, например:
...

[Status] [char] (1) NOT NULL

CONSTRAINT [DF_clients_Status] DEFAULT ('N'},

[LastLogin] [dateline] NOT NULL

CONSTRAINT [DF_clients_LastLogin] DEFAULT (0),

[RegisterDate] [datetime] NULL

CONSTRAINT [DF_clients_RegisterDate] DEFAULT (getdate()),

...


Состояние пользователя, хранящееся в ноле Status, отмечается символом «N». Когда посетитель сделает первую покупку, Вы можете записать сюда другое значение, например, «А».

Поля UserlD и Email являются уникальными:


CREATE UNIQUE INDEX [idxUserID] ON [dbo].[clients]([UserID]) ON [PRIMARY] GO
CRЕАТЕ UNIQUE INDEX [idxEMail] ON [dbo].[clients]([Email]) ON [PRIMARY]
В результате мы исключили дублирование регистрационных записей покупателей с одинаковыми идентификаторами и адресами электронной почты. Если пользователь пытается зарегистрироваться и при этом выясняется, что выбраный им идентификатор или адрес электронной почты уже есть в базе данных, ему предлагается выбрать другой идентификатор и другой адрес электронной почты.

В таблицу books сотрудники Вашего Интернет-магазина будут заносить сведения о продаваемых книгах, используя для этого административное приложение. Покупатели также будут обращаться к этой таблице, но с помощью другого приложения, созданного специально для них. В таблице books покупатели выбирают нужные книги и кладут их в свою виртуальную электронную «корзину».

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

Сценарий SQL, предназначенный для создания таблицы books, находится в файле dbo.books.sql.

Когда покупатели отбирают понравившиеся им книги для покупки, записи добавляются в таблицу orders. В ней поля booksID и ClientID представляют собой внешние ключи к таблицам books и clients соответственно. Используя эти поля, мы можем определить, какую книгу отобрал тот или иной покупатель.

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

Сценарий SQL, создающий таблицу orders, представлен в файле Lab5\BookShopScripts\dbo.orders.sql.
2.5. Подготовка хранимых процедур
В каталоге Lab5\BookShopScripts находятся подготовленные хранимые процедуры для приложений нашего Интернет-магазина. Серверные сценарии, расположенные на страницах ASP этих приложений, будут обращаться к хранимым процедурам для выполнения всех операций с базой данных.

Например, процедура ClientLogin, предназначенная для подключения к Интернет-магазину зарегистрированных покупателей, находится в файле dbo.ClientLogin.sql. В качестве входных параметров мы передаем этой процедуре идентификатор пользователя @User и пароль пользователя @Pass:


CREATE PROCEDURE ClientLogin @User varchar(50), @Pass varchar(5O),

@Rights varchar(16) output AS

SELECT @Rights=UserID FROM clients WHERE UserID=@User AND Password=@Pass UPDATE clients SET LastLogin=GETDATE() WHERE UserID=@User
Результат аутентификации записывается процедурой ClientLogin в выходной параметр @Rights. Попутно наша процедура обновляет поле LastLogin таблицы clients, записывая в нее время и дату подключения, полученные от встроенной функции GETDATE.

Чтобы добавить процедуру ClientLogin в базу данных BookStore, необходимо использовать приложение SQL Server Management Studio. Как и в случае сценариев SQL для создания таблиц, воспользуйтесь строкой Open в меню File для выбора файла хранимой процедуры с именем dbo.ClientLogin.sql. Загрузив хранимую процедуру в окно приложения SQL Server Management Studio, запустите ее, щелкнув клавишу F5, кнопку запуска на инструментальной панели (с изображением треугольника зеленого цвета) или выбрав строку Execute из меню Query. Если Вы не допустили ошибок при вводе хранимой процедуры, в нижней части окна Query появится сообщение "Command(s) completed successfully".

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

Далее необходимо предоставить пользователям Интернета права на выполнение этих процедур. Для этого в приложении SQL Server Management studio, откройте базу данных Bookstore и в ветке Programmability папку с хранимыми процедурами Stored Procedures. Выберите процедуру и щелчком правой клавиши мыши откройте страницу Stored Procedure Properties, показанную на рис. 5.


Рис. 5. Страница Stored Procedure Properties


Здесь Вы можете редактировать текст процедуры. Для сохранения изменений щелкните кнопку ОК. Что же касается прав на выполнение процедуры, то их нужно добавить кнопкой Search в разделе Permissions..

Для добавления разрешений можно воспользоваться конструкцией GRANT. Например, конструкция


GRANT EXECUTE ON [dbo].[ClientLogin] TO [guest] AS [dbo]
Предоставит разрешение на выполнение хранимой процедуры [dbo].[ClientLogin] пользователю Guest.

Наконец, необходимо создить login для подключения пользователей к серверу и пользователя, от имени которого будет осуществляться работа с базой данных. Для этого необходимо воспользоваться следующим sql запросом:


use [master]

CREATE LOGIN [NT AUTHORITY\IUSR] FROM WINDOWS WITH DEFAULT_DATABASE=[BookStore], DEFAULT_LANGUAGE=[us_english]

GO

use [BookStore]



CREATE USER [IUSR] FOR LOGIN [NT AUTHORITY\IUSR]

GO
2.6. Составление строки соединения для подключения к базе


Для создания соединения с базой данных при использовании ADO необходимо отдельно конфигурировать источник данных для разрабатываемого приложения. Это весьма усложняет процесс настройки доступа. Технология ADO .NET лишена этого недостатка. Источник данных конфигурируется непосредственно в приложении во время создания соединения, что позволяет устанавливать отдельные параметры соединения для каждого случая доступа к данным при необходимости.

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

Формат строки соединения является списком разделенных точкой с запятой пар параметров «ключ-значение»:
keyword1=value1; keyword2=value2;
Ключевые слова не учитывают регистр, и пробелы между парами «ключ-значение» не учитываются. Значения, содержащие точку с запятой, одиночные кавычки или двойные кавычки, должны быть заключены в двойные кавычки.

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

Таблица 2. Элементы строки соединения

Ключевое слово

Значение по умолчанию

Описание

Connect Timeout

-или-


Connection Timeout

15

Продолжительность времени ожидания подключения к серверу (в секундах) перед прекращением попытки подключения и генерацией ошибки.

Data Source

-или-


Server

-или-


Address

-или-


Addr

-или-


Network Address

Отсутствует

Имя или сетевой адрес экземпляра SQL Server, к которому осуществляется подключение. После имени сервера может быть задан номер порта:

server=tcp:servername, portnumber

При задании локального экземпляра всегда используйте имя (local). Чтобы указать протокол, добавьте один из следующих префиксов:

np:(local), tcp:(local), lpc:(local)



Encrypt

false

Если задано значение true, SQL Server использует шифрование SSL для всех данных, передаваемых между клиентом и сервером, если сервер имеет установленный сертификат. Распознаваемые значения: true, false, yes и no.

Initial Catalog

-или-


Database

Отсутствует

Имя базы данных.

Integrated Security

-или-


Trusted_Connection

false

Если задано значение false, в подключении заданы также параметры User ID и Password. Если задано значение true, для проверки подлинности используются текущие учетные данные Windows.

Распознаваемые значения: true, false, yes, no и sspi (настоятельно рекомендуется), что эквивалентно true.



Packet Size

8192

Размер сетевых пакетов (в байтах), используемых при взаимодействии с экземпляром SQL Server.

Password

-или-


Pwd

Отсутствует

Пароль для входа в SQL-сервер. Не рекомендуется. Чтобы обеспечить наивысший уровень безопасности, настоятельно рекомендуется использовать вместо этого ключевое слово Integrated Security или Trusted_Connection.

Persist Security Info

false

Когда задано значение false или no (настоятельно рекомендуется), важные сведения (такие, как пароль) не возвращаются как часть подключения, если оно открыто или когда-либо находилось в открытом состоянии. При сбросе строки подключения сбрасываются также все ее значения, включая пароль. Распознаваемые значения: true, false, yes и no.

User ID

Отсутствует

Учетная запись входа в SQL Server. Не рекомендуется. Чтобы обеспечить наивысший уровень безопасности, настоятельно рекомендуется использовать вместо этого ключевое слово Integrated Security или Trusted_Connection.

Для нашего приложения строка соединения будет выглядеть следующим образом:


Data Source=.;Initial Catalog=BookStore;User ID=;Password=; Integrated Security=true;
В качестве сервера указана точка, которая является упрошенной записью (local). Базой по умолчанию выбирается ранее созданная BookStore. Поля UserID и Password остаются пустыми, так как используется Windows аутентификация, на что указывает свойство Integrated Security=true.

Теперь все готово для того, чтобы приступить к настройке виртуальных каталогов сервера Web и к созданию страниц ASP нашего Интернет-магазина.


2.7. Подготовка виртуальных каталогов сервера Web
Наш Интернет-магазин состоит из двух приложений ASP. Первое предназначено для сотрудников магазина, и мы назовем его административным. Bтopoе приложение будут запускать посетители Вашего магазина. Мы назовем его приложением покупателя.

В виртуальном каталоге приложения покупателя хранятся страницы ASP, доступные покупателям. Они предназначены для просмотра списка товаров (книг) отбора товаров в корзину и расплаты за покупку.

Этот виртуальный каталог, так же как и виртуальный каталог административного приложения, создается средствами управляющей консоли Диспетчер служб IIS(рис 15.).

Шелкните правой кнопкой по Default Web Site в дереве в левой части окна и выберите Добавить приложение. Укажите физический путь и псевдоним(в нашем случае мы указали BookShopClient).

Затем необходимо разрешить также настройку серверных и клиентских сценариев. Для этого зайдем в раздел ASP для созданного приложения (рис. 16) и в разделе Свойства отладки установим значения свойств Разрешить отладку на стороне сервера(Enable ASP server-side script debugging) и Разрешить отладку на стороне клиента(Enable ASP client-side script debugging) в True. Для того, чтобы эти изменения вступили в силу, закройте панель и перезагрузите компьютер.

Рис. 15. Окно диспетчера служб IIS


Рис. 16. Настройка отладки сценариев


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

Приложение BookShop содержит страницы ASP, предназначенные для просмотра только сотрудниками Вашего магазина. Обычные посетители не должны иметь к нему никакого доступа.

Создайте приложение с именем BookShop, воспользовавшись для этого Диспетчером служб IIS.

Следующий шаг - создание списка адресов IP для администраторов, выполняется в случае, если SQL Server установлен на компьютере с операционной системой Windows 2000/2003 Server.

Выберите пункт ограничения IP адресов и доменов(IP Address and Domain Name Restrictions) в параметрах созданного приложения(рис. 17). Вы увидите панель редактирования списка адресов IP. Шелкните правой кнопкой мыши по свободному месту окна и выберите Добавить запрещающий элемент(рис. 18). В поле IP адрес введите 0.0.0.0, в поле маска - 255.255.255.255. Тем самым вы запретите доступ со всех адресов. Затем необходимо добавить разрешающие правила для всех IP адресов компьютеров сотрудников магазина. При этом позаботьтесь о том, чтобы у них были постоянные, а не динамические адреса IP.

Рис. 17.Настройка ограничений IP адресов


Дополнительный уровень безопасности административного приложения реализуется парольной системой ограничения доступа, встроенной в само приложение.
2.8. Реализация Web приложений магазина
Наш интернет магазин будет состоять из двух частей – приложения клиента и приложения администратора. По способу реализации обе части ничем не отличаются друг от друга, разница состоит только в информации отображаемой на страничках. Для клиентов магазина существует возможность авторизовываться, просматривать список книг и делать заказы на книги. Для работников магазина реализована возможность авторизовываться, редактировать списки пользователей и книг, а так же предоставлять доступ другим работникам.

Рис. 18.Окно добавления запрещающего правила


Рассмотрим реализацию подключения к базе данных и выполнения хранимых процедур на примере ClientLogin.

Эта процедура имеет два входных параметра @User и @Pass и один выходной @Right:


CREATE PROCEDURE ClientLogin @User varchar(50), @Pass varchar(50),

@Rights varchar(16) output AS


SELECT @Rights=UserID FROM clients WHERE UserID=@User AND Password=@Pass

UPDATE clients SET LastLogin=GETDATE() WHERE UserID=@User


С помощью оператора SELECT процедура выбирает идентификатор пользователя из столбца UserID таблицы clients так, чтобы идентификатор, записанный в этом столбце, совпадал с содержимым параметра @User. Кроме того, проверяется совпадение пароля пользователя (хранящегося в столбце Password) и содержимого параметра @Pass.

Если в результате такого запроса в таблице clients найдена подходящая запись (аутентификация прошла успешно), процедура ClientLogin с помощью оператора UPDATE обновляет поле LastLogin найденного пользователя, записывая в него дату и время подключения, полученные от функции GETTIME.

Процедура ClientLogin используется в классе _Default.

Чтобы установить соединение с нашей базой используется инструкция using, в которой создается объект SqlConnection:


using (SqlConnection connection = new SqlConnection())

{

}


Использование инструкции using удобно, поскольку объект SqlConnection реализует интерфейс System.IDisposable, и метод Dispose для такого объекта будет вызываться автоматически(что закроет соединение с базой данных, если внутри инструкции using оно будет открыто).

Для работы с произвольной базой данных объекту SqlConnection необходимо указать строку соединения:


connection.ConnectionString = "Data Source=.;Initial Catalog=BookStore;User ID=;Password=;Integrated Security=true";
Для выполнения команд на сервере баз данных используется объект SqlCommand:
SqlCommand command = new SqlCommand(string.Empty, connection);

command.CommandText = "ClientLogin";

command.CommandType = System.Data.CommandType.StoredProcedure;
В нашем случае вместо текста команды необходимо указать название хранимой процедуры и установить свойство CommandType одному из элементов перечисления System.Data.CommandType – StoredProcedure.

Хранимой процедуре необходимо передать параметры, это делается путем добавления к коллекции Parameters объекта SqlCommand экземпляра класса SqlParameter:


SqlParameter parameter1 = command.CreateParameter();

parameter1.ParameterName = "User";

parameter1.SqlDbType = System.Data.SqlDbType.VarChar;

parameter1.Value = sUser;

parameter1.Size = 50;

command.Parameters.Add(parameter1);


С помошью параметров можно передавать и принимать значения от команды. В нашем случае нам необходимо принять значение Rights от процедуры, для этого создадим еще один параметр:
SqlParameter parameter3 = command.CreateParameter();

parameter3.ParameterName = "Rights";

parameter3.SqlDbType = System.Data.SqlDbType.VarChar;

parameter3.Size = 16;

parameter3.Direction = ParameterDirection.Output;

command.Parameters.Add(parameter3);


Свойству Direction необходимо указать значение ParameterDirection.Output.

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


connection.Open();

command.ExecuteNonQuery();


В результате успешного выполнения команды в параметр parameter3 запишется значение выходного параметра Rights.

Вызов метода Open, а так же выполнение команд желательно заключать в инструкцию try …catch, чтобы в случае возникновения исключительной ситуации ее можно было нормально обработать:


try

{

}



catch (SqlException ex)

{

Session["Error"] = ex.Message;



Response.Redirect("Error.aspx");

}
Рассмотрим теперь приложение покупателя. Оно располагается в виртуальном каталоге BookShopClient.

Необходимо настроить Web сервер так, чтобы при просмотре пользователями виртуального каталога BookShopClient в браузер пользователя посылался файл с именем default.asp. Необходимо также запретить посетителям прямой просмотр виртуальных каталогов сервера Web.

Приложение покупателя имеет несколько страниц, опишем их работу.



Default.aspx.

По нажатию кнопки «Регистрация» выполняется переход на страницу Regdataenter.aspx – регистрация нового пользователя. По нажатию кнопки «Вход» выполняется проверка существования пользователя с введенным именем и паролем. Если такого пользователя не существует – происходит переход на страницу Error.aspx, на которой выводится соответствующее сообщение об ошибке. Если пользователь существует – то в объект Session (состояние сеанса) среды ASP.NET в переменную “Ok” записывается значение “Ok”, которое обеспечивает доступ к персональным данным пользователя и хранится в состоянии сеанса до тех пор, пока пользователь не закончит сеанс.



Regdataenter.aspx

Содержит форму, заполнив которую и нажав кнопку «Отправить» можно зарегистрироваться в системе в качестве клиента книжного магазина. Содержит поля как обязательные (отмечены красной звёздочкой), так и необязательные для заполнения. Для того чтобы не было возможным создать нового пользователя магазина не заполнив обязательные поля, используются специальные элемента управления – валидаторы (объекты класса CustomValidator). Для каждого валидатора настраивается свойство ControlToValidate со значением того элемента управления (поля ввода), который нужно валидировать (контролировать) и ValidateEmptyText в значение true – что свидетельствует о том, что нельзя регистрировать нового пользователя без заполнения всех обязательных полей. Все валидаторы на странице срабатывают при вызове метода Validate объекта класса Page. Если все валидаторы на странице валидны (т.е. контролы, за которые отвечают валидаторы, содержат корректные данные) свойство IsValid объекта класса Page устанавливается в значение true.



Main.aspx

Представляет собой фреймовую структуру: левый фрейм – навигационное меню (Toc.aspx), правый верхний фрейм – список книг (Booklist.aspx), правый нижний фрейм – список отобранных для покупки книг (Order.aspx).



Toc.aspx

Навигационное меню. Содержит ссылку «Выход». По нажатию на эту ссылку вызывается клиентская javascript функция logout(), которая вызывает так называемый PostBack – обратную отсылку данных со страницы на сервер с помощью специальной серверной вставки <%=ClientScript.GetPostBackEventReference(this, "logout")%> - что даёт возможность обработать клиентское событие на сервере. Для того, чтобы иметь возможность вызывать PostBack веб формы клиентским элементом управления, класс страницы (обычно хранящийся в файле имя_страницы.aspx) должен реализовывать интерфейс IPostBackEventHandler, который содержит всего один метод RaisePostBackEvent(string eventArgument). В качестве аргумента можно передавать нужные данные в виде строки. В данном примере в указанном обработчике из состояния сеанса (объекта Session), удаляется значение переменной “Ok” – что свидетельствует о том, что пользователь закончил сеанс.



Booklist.aspx

Выводит сведения об имеющихся в базе данных книгах. Поскольку записей о книгах в базе данных может быть сколько угодно – на данной странице информация формируется динамически. В данном примере за контейнер для записей берётся таблица – класса HtmlTable. Объект данного класса позволяет оперировать с имеющимися внутри него коллекциями дочерних контролов, таких как Rows (строки таблицы). Каждая строка таблицы (объект класса HtmlTableRow) имеет дочернюю коллекцию Cells (объекты класса HtmlTableCell) – ячейки. В данном примере для каждой записи о книге выполняется следующее: создаётся строка таблицы с 2 ячейками (1 – имя книги и автор, 2- цена и ссылка для добавление этой книги в корзину покупок), создаётся ещё одна строка с одной ячейкой объединённой в 2 ячейки – аннотация к данной книге.



Order.aspx

Выводит список отобранных для покупки книг. Предоставляет возможность удалить отобранную для покупки книгу. При нажатии на соответствующую ссылку выполняется операция по удалению книги из корзины – в качестве параметра удаляемой из корзины книги передается её идентификатор, который предварительно сформирован и добавлен к адресу в качестве параметра адресной строки. Происходит переход на страницу Delorder.aspx, на которой выполняется удаление книги из корзины и возврат на страницу Order.aspx.



Error.aspx

Выводит сообщения об ошибках. Каждое такое сообщение передаётся на эту страницу в состоянии сеанса, после чего сообщение выводится в виде строки и удаляется из сеанса.

Административное приложение очень схоже по реализации с клиентским. Страницы default.aspx и Enter.aspx в основном совпадают с одноименными страницами приложения покупателей.

Главная страница main.aspx административного приложения содержит определение двух фреймов. В левом фрейме toc.aspx находятся команды в виде ссылок на другие страницы, а в правом (с именем main) отображаются результаты выполнения этих команд:


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Main.aspx.cs" Inherits="Main" %>





Администрирование книжного маназина









<br /> <br /><body> <br /> <br /><p>Для просмотра этой страницы нужен браузер, способный работать с фреймами.</p> <br /> <br /></body> <br /> <br />




3. ОБОРУДОВАНИЕ
Персональный компьютер типа IBM PC Pentium, операционная система MS Windows 2000/XP/Vista/7, Web сервер IIS, сервер MS SQL Server 2008, каталог Osr\Lab5, содержащий файл labOsr5.doc (методические указания к данной лабораторной работе), подкаталоги BookShopScripts, BookShopClient и BookShopAdmin с ASP.NET приложениями, сценариями SQL и хранимыми процедурами, 200 Mб свободной памяти на логическом диске, содержащем каталог Osr\Lab5.
4. ЗАДАНИЕ НА РАБОТУ
4.1. Ознакомиться с настройками Web сервера IIS, сервера баз данных MS SQL Server и базы данных BookStore, виртуальных каталогов BookShop, BookShopClient. Запустить и выполнить ASP приложения покупателей и администрации книжного Интернет-магазина.

4.2. Создать и настроить базу данных книжного Интернет-магазина, а также виртуальные каталоги для ASP.NET приложений покупателей и администрации. Проверить правильность работы Интернет-магазина.


5. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
5.1. Получить у преподавателя номер варианта задания (1 - 10).

5.2. Проверить наличие 10 Мб свободной памяти на логическом диске, содержащем каталог Osr\Lab5, наличие файлов labOsr5.doc и подкаталогов BookShopScripts, BookShopClient и BookShopAdmin в каталоге Osr\Lab5.

5.3. Ознакомиться с настройками Web сервера IIS, сервера баз данных MS SQL Server и базы данных BookStore, виртуальных каталогов BookShopClient и BookShop. Запустить и выполнить ASPX приложения покупателей и администрации книжного Интернет-магазина.

5.4. Создать файл базы данных BookStoreXX (XX - номер варианта задания) на сервере баз данных MS SQL Server.

5.5. Cоздать таблицы managers, clients, books и orders в базе данных BookStoreXX. Сценарии SQL, создающие эти таблицы, необходимо взять из каталога Lab5\BookShopScripts.

5.7. Cоздать хранимые процедуры в базе данных BookStoreXX. Хранимые процедуры (файлы с расширением .RPC) необходимо взять из каталога Lab5\BookShopScripts.

5.8. Предоставить пользователям Интернета права на выполнение хранимых процедур.

5.9. Для обеспечения доступа к базе данных BookStoreXX из сценариев ASP создать соответствующий источник данных и проверить его работу.

5.10. Создать и настроить виртуальные каталоги BookShop_XX и BookShopClient_XX (XX - номер варианта задания) дляASP приложений покупателей и администрации книжного Интернет-магазина.

5.11. Проверить правильность работы книжного Интернет-магазина. Продемонстрировать работу Интернет-магазина преподавателю.


6. ОФОРМЛЕНИЕ ОТЧЕТА
Отчет должен содержать описание активных страниц ASPX приложений для покупателей (п) и администрации (а), сценариев SQL и хранимых процедур, перечень которых определяется вариантом задания. В состав описания должно входить:

  • тексты файлов активных страниц;

  • HTML страницы, посылаемые сервером клиенту при выполнении активных страниц.

Варианты заданий:



Активные страницы, сценарии SQL и хранимые процедуры

1

default.aspx(п), editBook.aspx, dbo.NewBook.sql

2

enter.aspx(п), Edtmanager.aspx(а), dbo.DelMgr.sql, dbo.books.sql

3

Customers.aspx, main.aspx, dbo.DelBook.sql

4

booklist.aspx(п), dbo.ListBooks.sql, books.aspx, dbo.clients.sql

5

order.aspx(п), dbo.AddToOrder.sql, books.aspx

6

delorder.aspx(п), dbo.DelOrder.sql, newmgr.aspx(а),

7

default.aspx, edtmanager.aspx, dbo.managers.sql

8

enter.aspx, dbo.SetMgr.sql, dbo.orders.sql, Managers.aspx

9

main.aspx, books.aspx, dbo.ListBooks.sql

10

managers.aspx(а), dbo.ListManagers.sql, order.aspx(а)


7. КОНТРОЛЬНЫЕ ВОПРОСЫ
БИБЛИОГРАФИЧЕСКИЙ СПИСОК

Разработал: канд. техн. наук, доц. Г.Б. Берсенев


студенты: А.А. Лебедев

М.Н. Прейскурантов


Рассмотрено Нормоконтроллер,

на заседании кафедры ЭВМ ответственный по

Протокол № ___________ стандартизации на

от "__" ___________ 2009 г. кафедре

Зав. кафедрой ЭВМ _______ В.Л. Токарев



________ В.С. Карпов "__" ___________ 2009 г.

Похожие:

Лабораторная работа №5 Создание Web приложений с базами данных в среде ado. Net iconЛабораторная работа №9 Создание Web приложений с базами данных в среде серверов iis и sql server
Посредством этого интерфейса приложения (как обычные, так и ориентированные на использование технологий Интернета) могут подключаться...
Лабораторная работа №5 Создание Web приложений с базами данных в среде ado. Net iconТехнология ado. Net (Activex data Objects for. Net) является одной из главных составных частей технологии. Net и предназначена для взаимодействия с источниками данных. Изначально ado
Изначально ado. Net разрабатывалась для использования в Web-приложениях и наше дальнейшее знакомство с этой технологией будет также...
Лабораторная работа №5 Создание Web приложений с базами данных в среде ado. Net iconЛабораторная работа №2 Создание приложений Windows Form в интегрированной среде ms visual Studio. Net
Ознакомление с технологией создания настольных приложений Windows Form на языке С# в среде разработки ms visual Studio. Net
Лабораторная работа №5 Создание Web приложений с базами данных в среде ado. Net iconКраткий обзор ado. Net 2 Сравнение ado и ado. Net 2 Компоненты ado. Net и объектная модель 3
Для прикладных программ на основе asp. Net предусмотрена возможность использования технологии ado. Net, что позволяет обращаться...
Лабораторная работа №5 Создание Web приложений с базами данных в среде ado. Net iconЛабораторная работа «Использование ado. Net»
Изучить назначение и основные способы создания объектов ado. Net при помощи Visual Studio ide
Лабораторная работа №5 Создание Web приложений с базами данных в среде ado. Net iconЛабораторная работа №1 3 Создание ситуационного плана миигаиК 3 Лабораторная работа №2 8 Оцифровка части карты и создание базы данных 8
«Геоинформационные технологии сбора и обработки информации» в среде MapInfo Professional
Лабораторная работа №5 Создание Web приложений с базами данных в среде ado. Net iconПосле того, как на протяжении целой главы рассматривалась некая технология работы с базами данных, попробуем подвести под нее теоретическую базу
Если в предыдущей версии ado упор делался на создании постоянных соединений, то в ado. Net, ориентированной, как это видно из названия,...
Лабораторная работа №5 Создание Web приложений с базами данных в среде ado. Net iconЛабораторная работа №3 Объектно-ориентированная реализация Web-страниц в asp. Net
Ознакомление с иерархией и функциональностью классов, формирующих типы Web-страницы и элементов управления html и Web, получение...
Лабораторная работа №5 Создание Web приложений с базами данных в среде ado. Net iconЛабораторная работа №4 Создание Web сервисов xml на базе asp. Net 0 цель и задачи работы
Они пригодны для развертывания и в Интернете, где они облегчают доступ к ресурсам организации, и в интрасетях для интеграции корпоративного...
Лабораторная работа №5 Создание Web приложений с базами данных в среде ado. Net iconДоступ к базам данных через microsoft activex data objects (ado)
Один из важных вопросов при разработке клиент-серверных приложений – это вопрос о подсоединении приложения к базе данных. В данной...
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org