DAO против ADO в HTA по беспроводной сети

Я написал небольшую (8-10 ноутбуков) систему точек продаж, работающую через беспроводную сеть, как HTA, которая читает / записывает в Access MDB, расположенный в общем сетевом ресурсе.
Мне нужно использовать ADO - GetString и список пользователей недоступны в DAO.
Мне также нужно использовать DAO - MDB нельзя сжать с помощью ADO.

Я знаю, что:
1) Если бэкэнд базы данных не является Access MDB, я должен использовать ADO.
2) Если бэкэнд является MDB, но я хочу в какой-то момент перейти на SQL Server, Я должен использовать ADO.
3) В приложении Access или любом другом приложении VBA / VB я должен использовать DAO, поскольку ADO должен проходить уровень трансляции поставщика Jet OLE DB, тогда как DAO является более прямым.
4) VBScript / JScript позволяет мне использовать DAO или ADO.

Вопрос состоит из двух частей:
1) В этой программной среде (HTA / сценарии) лучше использовать ADO, а не DAO?
2) Предлагает ли ADO какие-либо преимущества, поскольку HTA является чтение / запись по беспроводной сети?


person Zev Spitz    schedule 24.05.2009    source источник
comment
HTA == HTML-приложение?   -  person Robert Harvey    schedule 24.05.2009
comment
Я не тестировал использование VBScript, но обнаружил, что вызовы функции JScript ActiveXObject при запуске приложения создают больше накладных расходов, чем любая другая функция. DAO - явный победитель в этом, поскольку для него требуется только один вызов ActiveXObject.   -  person Zev Spitz    schedule 29.06.2009
comment
Я реализовал базовые операции с использованием DAO и только с помощью ADO для GetString. Важный момент, на который следует обратить внимание - изменения, выполненные с помощью DAO, не будут сразу видны в соединении ADO. Мне нужно очистить кеш Jet через DAO перед чтением через GetString.   -  person Zev Spitz    schedule 29.06.2009


Ответы (4)


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

  2. Самым большим преимуществом использования ADO является то, что когда придет время, будет проще перейти на SQL Server Express. Вам следует сделать это раньше, чем позже, поскольку SQL Server Express предлагает все преимущества баз данных MSAccess без недостатков. SQL Server Express бесплатен и легко справится с размером системы, который вы предлагаете.

Базы данных Access легко повреждаются в многопользовательской среде, особенно когда задействована беспроводная сеть. Если вы беспокоитесь о потере преимуществ работы в MSAccess, вы все равно можете подключиться к SQL Server с помощью связанных таблиц и таким образом работать с базой данных SQL Server Express.

person Robert Harvey    schedule 24.05.2009
comment
Судя по тому, что я видел о SQL Server Express, он не переносится - его нужно установить на конкретном компьютере, и его нельзя просто скопировать и вставить в другое место. - person Zev Spitz; 25.05.2009
comment
Является ли возможность перемещать базу данных требованием вашего приложения? - person Robert Harvey; 25.05.2009
comment
Да, это. Это также одна из причин, по которой мы используем HTA, поскольку я не могу заранее сказать, какую ОС или какую версию Access мы будем использовать. (Программа интенсивно используется для продажи товаров по оптовым ценам, которая происходит примерно раз в месяц, и, хотя существует фиксированный пул используемых ноутбуков, вполне возможно, что можно будет взять в долг дополнительные.) - person Zev Spitz; 25.05.2009
comment
Либо ADO, либо DAO будут работать нормально, и вы можете использовать их оба в одном приложении, если хотите. - person Robert Harvey; 25.05.2009

Вы также можете использовать JRO для сжатия файла MDB. Он будет включен в любую последнюю версию MDAC, установленную по умолчанию в системах XP и более поздних версий. Установка Access не требуется.

Чтобы ответить на ваши конкретные вопросы:

1) Я бы выбрал ADO только потому, что он более актуален, и тот же API можно использовать в других видах сценариев, таких как доступ к LDAP / ActiveDirectory, чтение папок файловой системы, чтение почты MAPI и работа с другими типами полу- структурированные текстовые файлы, такие как текст фиксированной ширины и CSV. Это не особенно лучше для среды программирования HTA, но, возможно, вам лучше изучить более широко применимый API. Я также считаю, что с этим API проще работать, но я начал с него и только позже работал над некоторыми старыми проектами DAO.

2) Одно из возможных преимуществ, которое предоставляет ADO, - это отключенные наборы записей, которые могут иметь преимущество или, по крайней мере, предлагать некоторые архитектурные альтернативы при настройке беспроводной сети. Вы открываете набор записей, а затем отключаете его, чтобы можно было работать с данными в памяти, но не оставлять соединение с базой данных открытым. Затем в более позднее время вы можете повторно подключиться и обновить базу данных. Кроме того, вы можете работать в полностью автономном стиле, управляя таблицами как локальными файлами XML или ADTG.

person Todd    schedule 26.06.2009

Вы можете заставить DAO работать с VBScript, но это странное сочетание. В целом, ADO имеет наибольший смысл.


Еще одно преимущество ADO заключается в том, что он поддерживает RDS через DCOM или HTTP. Это можно использовать для преодоления многих ограничений Jet MDB, используемых через общий доступ к файлам, таких как повреждение ненадежных сетей и клиентов. Это также сокращает объем трафика по сети, повышая производительность. Кроме того, он предлагает средний уровень, на котором могут «жить» бизнес-объекты, и все это может быть посредником с помощью COM +, где это применимо.

Конечно, у вас больше нет возможности использовать простую сеть P2P и общий файловый ресурс для размещения базы данных. RDS необходим сервер для размещения процесса и запуска движка Jet, который больше не нужно запускать в каждой клиентской системе. Это означает, что вы можете использовать хранимые процедуры Jet, которые выполняются на сервере, разгружая больше клиентской обработки и сетевого трафика. Хотя эта эксклюзивная технология ADO / Jet 4.0 OLE DB Provider не такая сложная, как T-SQL или другие альтернативы, она предлагает ощутимые преимущества, которых нельзя получить с помощью DAO.

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

Однако использование RDS требует большей инфраструктуры и опыта, чем простой файловый ресурс. Вы могли бы также изучить младшую версию SQL Server.


В общем, я бы рекомендовал использовать утилиту jetcomp.exe для сжатия и восстановления поверх любого DAO или JRO. Это дает ряд преимуществ.

person Bob77    schedule 27.06.2009
comment
Я не думаю, что DAO / VBScript - такое уж странное сочетание; Я делал это раньше. - person Zev Spitz; 29.06.2009
comment
Ваше мнение о jetcomp.exe очень интересно - я могу открыть объект Shell и выполнить его. - person Zev Spitz; 29.06.2009
comment
Преимущества общего файлового ресурса заключаются в том, что HTA может быть развернут в общем ресурсе и запущен всеми одноранговыми узлами. Простое обновление (F5) перезагружает недавно обновленный HTA. Нет установки; и HTA не блокируется во время выполнения, поэтому его можно перезаписать. - person Zev Spitz; 29.06.2009
comment
Вы правы, и это делает HTA удобными для создания легких приложений, даже многопользовательских. Некоторые риски повреждения MDB можно снизить, если ваши HTA также не поддерживают открытые соединения, подключаются только для запроса или обновления, а затем закрываются. Это требует накладных расходов и производительности, но если активность низкая и сеть работает быстро, это может не иметь большого значения - и это не дает вашему HTA удерживать грязные страницы MDB, которые остаются незафиксированными. - person Bob77; 29.06.2009

Если вы можете позволить себе использовать приложение HTA с Access вместо более производительной платформы, я бы сказал, что вам следует использовать самый простой для вас api. В вашем случае узким местом никогда не будет абстракция доступа к БД. Тем не менее, DAO действительно стар.

person artificialidiot    schedule 24.05.2009