Вопрос: мы запустили проект для клиента, который включает то, что обычно делалось бы с базой данных.
Однако клиент не хочет установленной базы данных, так как это - только небольшое приложение. Мы однако намереваемся снова использовать код для большего проекта, который будет использовать базу данных.
Проблемой является весь серверный код, будет отличаться, если я буду использовать XML или SQlite или Доступ.
Я склоняюсь к SQlite, но я не знаю. Был бы, добавляя базу данных в файле Доступа MS быть лучшим решением? Если я поместил бы его в базу данных доступа, клиенту нужен установленный Доступ MS или только MDAC MSFT? Если я использую Доступ DB, который будет работать в соответствии с Linux с Моно также или не является там никакой заменой MDAC?
Я бы подумал об использовании NHibernate, его можно подключить к SQLite, но позже можно обновить до полной базы данных, не меняя при этом много кода. Если вас это не интересует, я бы использовал SQLite непосредственно через XML файлы.
.Я бы использовал SQLite поверх Access - для SQLite нужно только поставлять DLL, для Access нужен инсталлятор (хотя я думаю, что он встроен в последние версии Windows). Также SQLite - это лучшая БД.
Или вы, конечно, можете абстрагироваться от механизма стоха данных, используя шаблон Репозитария или что-то в этом роде? Если вы должны были хранить данные в файле, а затем загрузить их и выставить из репозитория с помощью Linq-To-Objects, то в дальнейшем вы могли бы просто заменить их на Linq-to-SQL без изменения клиентского кода
. Для использования реактивного двигателя не требуется устанавливать Access. Насколько я помню, Jet устанавливается со всеми последними версиями Windows. Вы можете использовать Jet (Access) с Linux
. Jet требуется очень мало для управления базами данных по сравнению с альтернативными вариантами, включая SQLite.
Все последние версии окон вплоть до окон 7 поставлялись с копией JET (движок данных ms-доступа). Таким образом, вам не нужен ни mdac, ни вообще ms-access.
Вы даже можете написать скрипт windows на чистом окне windows без установленного программного обеспечения, и таким образом вы сможете читать данные из mdb (ms-access) файла.
Итак, проблема здесь не в установке, так как "JET" (движок базы данных, который использует ms-access) все равно поставляется с окнами.
Думаю, единственное исключение или соображение здесь - это то, что вы планируете работать над 64-битными редакциями os и использовать внутрипроцессные 64-битовые приложения?
Есть 64-битная редакция ms-access для Office 2010, и, насколько я знаю, также будет отдельная загрузка для установки движка JET (теперь называемого ACE) на 64 коробки.
Я планирую работать только на 32-битных машинах (или использовать 32-битные редакции своего ПО на 64-битной коробке), тогда вам не нужен ms-access, и вам не нужно будет ничего устанавливать, чтобы читать и использовать mdb (ms-access файлы).
Поскольку JET поставляется со всеми последними версиями окон, ваши решения не будут основываться на установке JET (вам не нужно), ваши решения будут другими вопросами, и если JET соответствует вашим требованиям.
.У вас могут возникнуть проблемы с использованием sqlite в средах со средним уровнем доверия (например, на общем хостинге). Если вы открыты для других решений, вы можете попробовать VistaDB. Она поддерживается всеми основными orm (nhibernate, openaccess, entityspaces, subsonic и многими другими).