Обзор MS Access Программирование - PullRequest
7 голосов
/ 18 июня 2011

Я - разработчик Java EE, и со мной только что связался кто-то, кто хочет, чтобы я написал предложение для приложения для его бизнеса, которое может интегрироваться с их "бэкэндом" MS Access.

Я надеялсячтобы опубликовать это и просто получить общий обзор лучших практик, связанных с программированием MS Access.Я предполагаю, что программа будет полностью на VB, но не знала, будет ли у меня возможность написать что-то на VB.NET или (предпочтительно) на C #.

Кроме того, я презираю уровень представления: любое хорошееGUI-компоновщики для приложений Access?

Какие распространенные инструменты и API (платформы модульного тестирования, системы автоматизации сборки и т. Д.) Часто используют программисты MS Access?

Любые ссылки или ресурсы, которые вы используетепорекомендуете?

Звучит как довольно простое приложение: взять введенные данные, сравнить их с некоторыми таблицами и вывести некоторые данные на экран.Я довольно приличный программист, так что даже несмотря на то, что я никогда не делал программу Access, мне было бы не так сложно ее найти.

Спасибо за любые мысли или предложения!

1 Ответ

36 голосов
/ 18 июня 2011

Доступ в качестве интерфейса

Что ж, люди сильно относятся к 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, но вы по своей природе ограничены типом приложения, которое вы создаете, и тем, как пользователи получают доступ к его данным.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...