2007 г.
Марченко Антон Леонардович
Интернет-Университет Информационных Технологий, INTUIT.ru
Оглавление
ADO .NET (ActiveX Data Objects .NET) является набором классов, реализующих программные интерфейсы для облегчения подключения к базам данных из приложения независимо от особенностей реализации конкретной системы управления базами данных и от структуры самой базы данных, а также независимо от места расположения этой самой базы — в частности, в распределенной среде (клиент-серверное приложение) на стороне сервера.
ADO .NET широко используется совместно с технологией web-программирования с использованием объектов ASP .NET для доступа к расположенным на сервере базам данных со стороны клиента.
Особенность изложения материала этой главы заключается в следующем.
Решение даже самой простой задачи, связанной с данными, предполагает использование множества разнообразных объектов – представителей классов ADO .NET, которые находятся между собой в достаточно сложных взаимоотношениях. Из-за этих отношений строго последовательное описание элементов ADO .NET представляется весьма проблематичным. С какого бы элемента ни начиналось описание, всегда предполагается предварительное представление о множестве других элементов.
По этой причине часто упоминание и даже примеры использования некоторых классов предшествуют их подробному описанию.
Реляционные базы данных. Основные понятия
Ниже обсуждаются наиболее общие понятия, связанные с представлением реляционной базы данных с точки зрения программиста, использующего ADO .NET.
Детали реализации конкретной базы данных в рамках данной СУБД не обсуждаются. ADO .NET для того и используется, чтобы максимально скрыть детали реализации конкретной базы и предоставить программисту набор стандартных классов, интерфейсов, программных средств, которые превращают процесс создания приложения в стандартизированный технологический процесс. Таким образом, с точки зрения .NET:
столбец (поле, атрибут) —
- характеризуется определенным типом (данных),
- множество значений столбца являются значениями одного типа;
строка (запись, кортеж) —
- характеризуется кортежем атрибутов,
- состоит из упорядоченного множества значений (кортежа) атрибутов;
таблица —
- набор данных, представляющих объекты определенного типа,
- состоит из множества элементов столбцов-строк,
- каждая строка таблицы УНИКАЛЬНА;
первичный ключ таблицы —
- непустое множество столбцов таблицы (возможно, состоящее из одного столбца), соответствующие значения (комбинации значений) которых в строках таблицы обеспечивают уникальность каждой строки в данной таблице;
дополнительный ключ таблицы —
- а бог его знает, зачем еще одна гарантия уникальности строки в таблице;
внешний ключ таблицы —
- непустое множество столбцов таблицы (возможно, состоящее из одного столбца), соответствующие значения (комбинации значений) которых в строках таблицы соответствуют первичному или дополнительному ключу другой таблицы,
- обеспечивает логическую связь между таблицами.
Работа с базами данных
Работа с БД на уровне приложения .NET – это работа:
- с множествами объявлений классов, которые содержат объявления унаследованных методов и свойств, предназначенных для решения задачи извлечения информации из базы данных;
- с множеством объектов-представителей классов, которые обеспечивают работу с базами данных;
- с множеством значений и свойств конкретных объектов, отражающих специфику структуры конкретной базы данных.
Функциональные особенности этой сложной системы взаимодействующих классов обеспечивают ЕДИНООБРАЗНУЮ работу с базами данных независимо от системы управления базой и ее реализации.
Конечно же, при написании программы, взаимодействующей с базами данных, программист все может сделать своими руками. Правда, в силу сложности задачи (много всяких деталек придется вытачивать), времени на разработку такого приложения может потребоваться достаточно много.
Для программиста – разработчика приложения принципиальной становится информация о логической организации (структуре таблиц, отношениях и ограничениях) данной конкретной базы данных — то есть о том, как эту базу видит приложение.
Деятельность программиста – разработчика приложений для работы с базами данных в основе своей ничем не отличается от того, что было раньше. Те же объявления классов и интерфейсов.
А потому желательно:
- понимать принципы организации и взаимодействия классов, которые обеспечивают работу с базой данных;
- представлять структуру, назначение и принципы работы соответствующих объектов;
- знать, для чего и как применять различные детали при организации взаимодействия с базами данных;
- уметь создавать компоненты ADO .NET заданной конфигурации с использованием вспомогательных средств (волшебников), предоставляемых в рамках Visual Studio .NET.
Доступ к отсоединенным данным
В приложениях, работающих с базами данных, до недавних пор применялся доступ к данным через постоянное соединение с источником данных. Приложение открывало соединение с базой данных и не закрывало его по крайней мере до завершения работы с источником данных. В это время соединение с источником поддерживалось постоянно.
Недостатки такого подхода стали выявляться после появления приложений, ориентированных на Интернет.
Соединения с базой данных требуют выделения системных ресурсов, и если база данных располагается на сервере, то при большом количестве клиентов это может быть критично для сервера. Хотя постоянное соединение и позволяет немного ускорить работу приложения, общий убыток от растраты системных ресурсов преимущество в скорости выполнения приложения сводит на нет.
Факт плохого масштабирования приложений с постоянным соединением известен давно. Соединение с парой клиентов обслуживается приложением хорошо, 10 клиентов обслуживаются хуже, 100 – много хуже...
В ADO .NET используется другая модель доступа – доступ к отсоединенным данным. При этом соединение устанавливается лишь на то время, которое необходимо для проведения определенной операции над базой данных.
Модель доступа – модель компромиссная. В ряде случаев она проигрывает по производительности традиционной модели, и для этих случаев рекомендуется вместо ADO .NET использовать ADO.
Оглавление Вперёд