Доступ в качестве интерфейса
Что ж, люди сильно относятся к Access.Основная причина негативного взгляда заключается в том, что он широко используется не разработчиками, которые не имеют представления о правильной разработке баз данных и в конечном итоге получают эти едва работающие, ужасно разработанные приложения, которые внушают страх разработчикам.
* 1004Сказав это, Access является не чем иным, как инструментом быстрой разработки приложений с очень низким барьером входа.
Хорошие и плохие
Доступ - это довольностарая линейка продуктов, охватывающая почти 20 лет.Многие люди возражают против Access как технологии, основанной на его ранней истории: поскольку обратная совместимость является чем-то, что Microsoft считает важным, Access сохранил большинство своих функций, хороших или плохих, на протяжении многих лет.
ВыЯ вижу, что выбор VBA, неинформационных форм, продвижение модулей поверх ООП - это плохой выбор, но преемственность этих ранних проектных решений сделала Access стабильной платформой для построения.
VBA: это язык, который никогда не умирает.Это неуклюжий, устаревший, не хватает последних достижений в языках, но он также быстр, прост в изучении, гибок, легок в взаимодействии (например, вызов Win32 API действительно прост), и его можно связать с внешними библиотеками (событие записано в.Net).
Связанные формы: по умолчанию Access позволяет легко создавать рабочие приложения без строки кода.Большинство запросов также можно создавать, не прибегая к SQL вообще.Если вы помешаны на управлении, это может раздражать, но легко перейти к коду и контролировать все оттуда.
Сторонняя интеграция: даже при том, что есть многодополнения к Access, я бы не советовал использовать большинство пользовательских элементов управления или сторонних библиотек, если только вам это не нужно.Их может быть очень сложно развернуть в среде с ограниченными правами пользователя, и управление версиями может стать проблематичным.
Лента: это может быть хорошо или плохо, в зависимости от того, с кем вы разговариваете, но у Microsoft естьвложил много в это, и это, вероятно, будет там некоторое время.По крайней мере, лента и улучшенные элементы управления в Access 2007 и более поздних версиях заставляют приложения выглядеть и вести себя по-современному.Прежний ужасный пользовательский интерфейс, теперь вы можете делать действительно красивые вещи с темами, HTML-макетами и современной лентой.
Надежность
Большинствоиз возражений, особенно в отношении надежности, просто больше нет ответа.
Тщательно разработанное приложение доступа может поддерживать десятки одновременно работающих пользователей.У меня есть приложение приличного размера, управляющее закупками / запасами / качеством / деталями / проектами для производственной компании, в которой 150 пользователей, из которых 50 подключены в любой момент времени.У меня не было никаких повреждений в течение многих лет.
Конечно, вы всегда должны иметь в виду, что Access - это многопользовательская файловая база данных, поэтому вы не можете ожидать, что она будет работать без риска в средах с ненадежнымили медленные сети, и подключение к бэкенду Access через WiFi действительно вызывает проблемы, точно так же, как вы не работали бы с большими файлами Excel по беспроводной сети.
Обслуживание является частью жизненного цикла приложения.Профилактическое обслуживание чрезвычайно важно.
Не ждите, пока что-то пойдет не так: создайте в своем приложении инструменты администратора, которые помогут проверить состояние ваших данных (убедитесь, что все согласовано, обнаружите недопустимые пользовательские данные и т. Д.).
Также регулярно сжимайте базу данных (я делаю это каждую ночь после создания резервной копии как часть ежедневных автоматизированных задач на внутреннем сервере).
Некоторые случайные советы
- Убедитесь, что ваш интерфейс и серверная часть разделены: на сервере должны быть только данные, и интерфейс должен быть установлен на компьютере каждого пользователя.
- В вашем интерфейсе откройте постоянную ссылку на фиктивную таблицу в фоновом режиме базы данных: поддержание постоянного подключения к сети значительно повысит производительность.По этой причине взгляните на этот вопрос .
- Бэкэнд должен находиться в мелком сетевом ресурсе (не помещайте его глубоко в несколько каталогов).
- Убедитесь, что вы тщательно продумали, как автоматически развертывать обновления на всех клиентах.
Существует множество способов сделать это.Я разработал свою собственную, но вы могли бы использовать ClickOnce или Tony Toews ' Auto-Front-End Updater - Использовать Runtime: ваше интерфейсное приложение может работать без вмешательства пользователя в его внутренние компоненты, если вы развернете Access Runtime на их компьютере.Это также бесплатно.
- Не боритесь с инструментом: у Access есть определенный способ делать вещи.Просто используйте доступные инструменты, не заходя в код, пока не исчерпаете возможности среды RAD.Вы можете быть удивлены тем, чего вы можете достичь без какого-либо кода.
- Ничто не мешает вам использовать ООП: определение классов и привязка ваших классов вручную к формам, управление обновлениями данных и т. Д. Поведение по умолчанию вДоступ, как правило, стимулирует быструю разработку и подходит для небольших проектов, но если вы подозреваете, что ваш проект может расти, планируйте свое будущее, как и в случае с любой другой структурой.
Доступ каквнутренняя база данных
Теперь, если вы хотите использовать внешний интерфейс, написанный для чего-то другого, например, C #, довольно просто использовать драйверы Jet / ACE для подключения к внутренней базе данных Access.
- Jet является более старым драйвером для Access и поддерживает только файлы
.mdb
.32-битные драйверы устанавливаются по умолчанию в Windows (все еще есть в Win8) и на них всегда можно положиться. - ACE - это новый формат
.accdb
, используемый Access2007 / 2010/2013.У него увеличены ограничения и улучшения по сравнению со старой версией, но он все еще может взаимодействовать с .mdb
.
. Вам придется установить Microsoft Database Engine на всех клиентах (необязательно, если либо полнаяверсия или среда выполнения Access 2007/2010/2013 уже установлены). - Не пытайтесь использовать 64-разрядные версии драйвера Access / ACE.Это будущее, но оно порождает много новых проблем, особенно если вы используете сторонние библиотеки или на некоторых из ваших клиентов установлен 32-битный Office (вы не можете смешивать и сочетать 32-битные и 64-битные офисные компоненты).
Аналогично, донне собирайте ваше внешнее приложение на C ++ / C # / Java / Python в 64-битном режиме и ожидайте, что 32-битный драйвер ACE будет работать.Сохраняйте все в 32-битном, заставляйте все работать, затем тестируйте 64-битные версии, если вам действительно нужно. - Всегда оставляйте хотя бы одно открытое соединение с внутренней базой данных из своего кода, как упомянуто выше.
- В идеале, попробуйте абстрагировать любой специфичный для Access код, чтобы упростить его позднее в случае, если вам нужно переключиться на базу данных на сервере.Вы можете использовать ORM, который может прозрачно взаимодействовать с различными бэкэндами, или вы можете, по крайней мере, разделить ваши запросы SQL на файлы ресурсов или отдельные объекты, которые могут быть легко заменены позже.
- В зависимости от нагрузки (главным образом, какв БД необходимо изменить большое количество данных), серверная часть Access может без проблем разместить от 20 до 100 пользователей.Вещи ухудшатся, если будет много вставок и обновлений, происходящих постоянно.Существует множество приемов, которые можно использовать для улучшения ситуации и масштабирования Access, но вы по своей природе ограничены типом приложения, которое вы создаете, и тем, как пользователи получают доступ к его данным.