Чтение онлайн

на главную - закладки

Жанры

Обработка баз данных на Visual Basic®.NET

Прайс Кевин Т.

Шрифт:

Повышение производительности приложений с помощью хранимых процедур

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

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

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

Компьютер Спецификации
Web-сервер Pentium 4, частота 800 МГц, 1 Гбайт оперативной памяти, массив RAID 5 дисков SCSI емкостью 18,1 Гбайт
Сервер базы данных Quad-Pentium 4 Xeon, частота 800 МГц, 4 Гбайт оперативной памяти ECC-RAM, массив RAID 5 дисков SCSI емкостью 72 Гбайт для базы данных и журналов регистрации транзакций, дополнительные сетевые платы и источники бесперебойного питания

Часто для повышения производительности рекомендуется использовать хранимые процедуры. Вот что происходит при поступлении Web-запроса к базе данных.

1. Пользователь открывает Web-страницу, вводит данные, а затем передает их Web-серверу.

2. Web-сервер анализирует полученные данные и выполняет проверку и/или сбор данных, посланных пользователем.

3. Затем пользователю пересылается отклик, обычно в виде Web-страницы с уведомлением об успехе или неудаче запроса.

4. Пользователь продолжает работу с Web-приложением.

Основная задача заключается в том, чтобы сократить количество запросов к Web-серверу и не увеличивать размер Web-страниц. Ниже перечислены действия, которые выполняет компьютер при поступлении запроса.

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

2. Имеют ли данные корректный формат? Если да, то поместить их в базу данных; в противном случае обработать возникшие исключительные ситуации.

3. Можно ли установить соединение с базой данных? Если да, то продолжить работу; в противном случае обработать возникшие исключительные ситуации.

4. Может ли база данных получить данные? Если да, то продолжить работу; в противном случае обработать возникшие исключительные ситуации.

5. Подключен ли клиент или уже нет? Если да, то послать отклик; в противном случае закрыть подключение к базе данных.

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

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

ВНИМАНИЕ!

При

работе с любым приложением ASP.NET для сбора данных из формы нужно использовать метод Server.HTMLEncode(Request.Form("objectName")), который позволяет предотвратить межузловые атаки на основе сценариев. Этот метод кодирует информацию в виде строкового литерала, понятного SQL Server, что позволяет исключить риск применения злоумышленных операций, например вставки команды в виде подстроки "; TRUNСАТЕ TABLE MASTER" в текстовое поле txtFileName Web-страницы и выполнения ее со стороны SQLServer.

Некоторые разработчики опасаются использовать хранимые процедуры в Web-приложениях. Эти опасения вызваны сложностями использования объектов Command и SQLCommand в технологиях ADO и ADO.NET вместе с хранимыми процедурами. Как отмечается в главе 4, "Модель ADO.NET: провайдеры данных", указание параметров в коде необходимо для "предварительной квалификации" данных за счет установки их типа. При этом SQL Server и платформа .NET избавлены от излишних затрат времени на определение типа передаваемых данных (целое число, строка и т.д.). В данном примере рассматривается хранимая процедура без параметров, код которой показан в листинге 11.4.

НА ЗАМЕТКУ

С помощью типов, описанных в разделе о включении учетной записи ASPNET в список учетных записей SQL Server, необходимо конфигурировать роль public с указанием разрешения EXEC на выполнение процедуры. В листинге 11.4 показан код процедуры, а в листинге 11.5 — способ ее применения. 

ЛИСТИНГ 11.4. Код процедуры sp_GetCustomersOrders

CREATE PROCEDURE sp_GetCustomersOrders

SELECT tblCustomer.LastName, tblCustomer.FirstName, tblOrder.OrderDate

FROM tblOrder

INNER JOIN tblCustomer ON tblCustomer.ID = tblOrder.CustomerID

ORDER BY tblCustomer.LastName

GO

Обратите внимание, что в запросе используются только действительно нужные а не все поля таблицы tblCustomer, как показано в листинге 11.3. Вообще говоря, никогда не следует запрашивать поля таблицы, которые не будут использоваться. Это особенно важно при расширении масштаба приложения.

Рассмотрим теперь измененный код подпрограммы ShowCustomers, который показан в листинге 11.5. Обратите внимание, что в него включена еще одна строка для обработки даты, возвращенной хранимой процедурой.

Листинг 11.5. Обращение к хранимой процедуре из подпрограммы ShowCustomers

Private Sub ShowCustomers

 ' Это простой пример использования функции,

 ' которая извлекает данные из таблицы tblCustomer

 ' Инициализация объекта подключения строкой

 ' подключения.

 Dim conn As New SqlConnection(connString)

 ' Затем инициализация объекта-команды строкой выполняемой команды SQL.

Поделиться:
Популярные книги

Сердце Дракона. Том 20. Часть 1

Клеванский Кирилл Сергеевич
20. Сердце дракона
Фантастика:
фэнтези
боевая фантастика
городское фэнтези
5.00
рейтинг книги
Сердце Дракона. Том 20. Часть 1

Холодный ветер перемен

Иванов Дмитрий
7. Девяностые
Фантастика:
попаданцы
альтернативная история
6.80
рейтинг книги
Холодный ветер перемен

Последнее желание

Сапковский Анджей
1. Ведьмак
Фантастика:
фэнтези
9.43
рейтинг книги
Последнее желание

Отмороженный 7.0

Гарцевич Евгений Александрович
7. Отмороженный
Фантастика:
рпг
аниме
5.00
рейтинг книги
Отмороженный 7.0

Наследник

Кулаков Алексей Иванович
1. Рюрикова кровь
Фантастика:
научная фантастика
попаданцы
альтернативная история
8.69
рейтинг книги
Наследник

Магия чистых душ 2

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.56
рейтинг книги
Магия чистых душ 2

Наследие Маозари 5

Панежин Евгений
5. Наследие Маозари
Фантастика:
фэнтези
юмористическое фэнтези
5.00
рейтинг книги
Наследие Маозари 5

Локки 4 Потомок бога

Решетов Евгений Валерьевич
4. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Локки 4 Потомок бога

Граф

Ланцов Михаил Алексеевич
6. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Граф

Миф об идеальном мужчине

Устинова Татьяна Витальевна
Детективы:
прочие детективы
9.23
рейтинг книги
Миф об идеальном мужчине

Мастер Разума V

Кронос Александр
5. Мастер Разума
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Мастер Разума V

Здравствуй, 1984-й

Иванов Дмитрий
1. Девяностые
Фантастика:
альтернативная история
6.42
рейтинг книги
Здравствуй, 1984-й

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Барон не играет по правилам

Ренгач Евгений
1. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон не играет по правилам