DAO против ADO в HTA по беспроводной сети - PullRequest
2 голосов
/ 24 мая 2009

Я написал небольшую (8-10 ноутбуков) систему для точек продаж, работающую по беспроводной сети, в качестве HTA, которая считывает / записывает данные в MDB-доступ Access, расположенный в сетевой папке.
Мне нужно использовать 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 / scripting) лучше использовать ADO, а не DAO?
2) Предлагает ли ADO какие-либо преимущества, потому что HTA читает / пишет по беспроводной сети?

Ответы [ 4 ]

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

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

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

2 голосов
/ 27 июня 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. Он предлагает ряд преимуществ.

2 голосов
/ 27 июня 2009

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

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

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

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

1 голос
/ 25 мая 2009

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

...