До недавнего времени разработчики приложений для доступа к базам данных использовали две объектные технологии Microsoft: Data Access Objects (DAO) и Remote Data Objects (RDO). В них были реализованы два различных программных механизма, что было связано с необходимостью оптимизировать решение двух отдельных задач: доступа к локальным и удаленным базам данных соответственно. Однако развитие вычислительных систем потребовало создания технологии, обеспечивающей единый подход при работе с БД различных классов. Для решения этой проблемы Microsoft еще несколько лет назад предложила в качестве оптимального интерфейса для доступа к локальным и удаленным данным новую технологию ActiveX Data Objects (ADO), которая является частью архитектуры Microsoft Universal Data Access (MUDA).
Основу MUDA составляет OLE DB - низкоуровневый программный COM-интерфейс доступа к данным, созданный в развитие идеологии ODBC. Однако если ODBC предназначен для работы с реляционными базами данных (Access, DBF, SQL и др.), то OLE DB предлагает единообразный метод доступа к данным, хранящимся в разных источниках информации, в том числе и в нереляционных БД (например, в папках систем электронной почты или простых файлах), обеспечивая при этом поддержку работы с наборами данных и иерархическими наборами записей, подключаемыми к сети время от времени. Поставщиком таких данных (OLE DB Provider) может быть любой источник (в том числе приложение), написанное в соответствии со спецификациями OLE DB. Так, доступ к базам данных ODBC выполняется с помощью OLE DB Provider for ODBC.
ADO представляет собой прикладной объектный интерфейс более высокого уровня. Он упрощает разработчикам, использующим языки высокого уровня, доступ к средствам OLE DB. В 1998 г. Microsoft выпустила модернизированный вариант ADO 2.0, который был впервые включен в состав Visual Studio 6.0.
Таким образом, в распоряжении разработчиков приложений сейчас имеются три различные технологии работы с базами данных: DAO, RDO и ADO. Дискутируя о выборе подходящего инструмента, можно приводить довольно много технических подробностей. Но ключевым здесь служит совсем другой момент: Microsoft объявила, что будет усовершенствовать и обновлять только модель ADO, то есть DAO и RDO постепенно должны сойти со сцены. А стало быть, проблема выбора сводится лишь к вопросу: в какой момент нужно переходить на использование ADO?
Если вспомнить о классическом принципе программистов “не трогай то, что уже работает”, то ответ представляется достаточно ясным: старые приложения пусть функционируют в прежнем варианте, а вот новые, наверное, уже пора ориентировать на применение ADO.
В случае модернизации старых приложений также может возникнуть вопрос о переходе на ADO, но тут следует иметь в виду ряд моментов. Хотя технология ADO в целом покрывает функциональность DAO и RDO, она несовместима с ними на уровне языка программирования. Это означает, что модернизация уже существующих программ для использования ADO потребует как минимум преобразования кода приложения. В этой технологии реализована другая объектная модель: число объектов уменьшилось, но при этом их структура стала иерархической, увеличился состав свойств, методов, аргументов и событий.
Несмотря на прогресс в развитии ADO, ее широкому использованию во многом мешали следующие факторы: существование ряда функциональных ограничений, недостаточная производительность, а также “сырость” реализации (попросту говоря, наличие ошибок).
По своим возможностям ADO 2.0, входящая в состав Visual Studio 6.0, уступает уже давно опробованной технологии DAO. Например, разработчики, использующие ядро Access/Jet 3.51, не имеют возможности создавать такие объекты баз данных, как таблицы и поля. Метод OpenSchema объекта Connection позволяет просматривать часть структуры базы данных, однако его нельзя применять для создания новых БД или изменения структуры уже существующих. ADO 2.0 также не разрешает просматривать ряд элементов базы данных Jet, которые относятся к категории объектов безопасности. Более того, нельзя выполнять программным способом многие операции над ядром Jet.
В результате большинство экспертов выражали довольно единодушное мнение по поводу версии ADO 2.0: разработчикам нужно осваивать эту технологию, но чтобы реализовать “боевые” приложения, придется подождать выхода ее следующей версии. Похоже, Microsoft прислушалась к этому мнению: в июне было объявлено о выпуске новой версии ADO 2.1, которая поможет справиться со многими проблемами предыдущего варианта.
Новшества ADO 2.1
Номер версии указывает на то, что мы имеем дело с расширенным вариантом ADO 2.0, содержащим большой набор новых функций и несколько усовершенствованных функций из предыдущих выпусков ADO.
Кроме модернизированного варианта основной библиотеки в состав ADO 2.1 входит дополнительная библиотека ActiveX Data Objects Extensions for DDL and Security, или просто ADOX, которая предоставляет разработчикам обширный набор инструментов для получения доступа к структуре, модели безопасности и процедурам, хранящимся в базе данных. В самом большом выигрыше окажутся программисты, использующие ядро Access/Jet, хотя ADOX также работает с драйверами SQL Server и ODBC OLE DB. Но следует иметь в виду, что другие драйверы OLE DB корпорации Microsoft пока не обеспечивают поддержку ADOX.
Модернизированный вариант основной библиотеки также обладает рядом новых функций, в том числе улучшенным индексированным поиском, возможностями работы со связанными таблицами и конфигурирования иерархических данных. И наконец, в ADO 2.1 исправлены ошибки предыдущей версии и она снабжена вполне приличной документацией.
Новая версия ADO 2.1 будет поставляться вместе с SQL Server 7.0 и Access 2000. Все библиотеки можно загрузить как часть дистрибутива Microsoft Data Access Components (MDAC) по адресу: www.microsoft.com/data/ado/.