2012-01-14 2 views
2

Мне нужно создать webapp для отображения и разрешить редактирование набора данных.Как обновить базу данных доступа удаленного MS?

Эти данные содержатся в файле базы данных доступа, который используется другим приложением (настольным приложением).

Я оцениваю лучший способ выполнить эту работу.

К сожалению, моя цель перехода на другое решение базы данных (rdbms, например MySQL или Postgres) была отклонена клиентом.

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

Все, что мне нужно сделать, это прочитать данные, сохранить отредактированные или новые данные, предоставить авторизованным пользователям интерфейс для просмотра новых вставленных данных, подтверждающих его, и импортировать их в исходную базу данных доступа.

Я нашел следующие возможные решения (для обновления настольных MDB копию), но каждый из них имеет плюсы и минусы:

  • удаленный доступ к машине окна
    • выставляет машину на несанкционированный доступ
  • использовать Rsync, чтобы сохранить файлы синхронизированы (один раз в день)
    • если MDB на клиенте был отредактировано с настольным приложением будет потеря данных
    • можно обновить только тогда, когда все данные были подтверждены
    • не будет реальный синхронизирована данные (пока Rsync не будет работать)
  • клиент-серверные приложения
    • может использовать защищенные слои для защиты данных от злоумышленников
    • 3-го приложения (на рабочем столе) требуются
    • требует синхронизации авторизованных пользователей использовать это приложение для 3-го импорт данных (которые будут запрашивать удаленный БД и обновлять локальные MDB)

Знаете ли вы какой-нибудь другой способ, который может помочь мне получить это сделано? Я ориентирован на модель клиент-сервер, также если это будет дороже, но это единственный способ, с помощью которого я могу сделать эту работу.

Вы видите некоторые другие плюсы и минусы целевого решения?

Я не выбрал PL для его разработки, но я думал использовать PHP или Python. Удаленная среда (для сервера) может быть либо Windows, либо * nix (предпочтительно).

Спасибо.

ответ

2

Первая мысль:

exposes the machine to unauthorized access 

Это на самом деле не является действительным аргументом. Открывается все, что вы помещаете в Интернет. Не похоже, что он не может быть дополнительно защищен через SSL/TLS. Например, даже RDP можно защитить через туннель SSH.

На мой взгляд, самый простой способ и самый элегантный способ - это использовать веб-службы (SOAP). Напишите код сервера, который вставляет/обновляет в базе данных Access что-то вроде Python или Java. Создайте WSDL из рабочего кода. Из WSDL вы можете создать клиент для PHP/Python. Теперь все, что вам нужно сделать, это написать веб-интерфейс, в котором используется клиент PHP/Python.

Для обеспечения безопасности с использованием SSL и обычной аутентификации должно быть достаточно (например, поддерживается SOAPpy в случае Python). Вы можете использовать pyodbc для подключения к базе данных Access.

+0

Возможно, я ошибаюсь, но это связано с тем, что мы работаем непосредственно с оригинальным mdb без дубликатов, верно? –

+0

Да, и из-за этого, это будет намного проще реализовать, чем пытаться реализовать вашу собственную синхронизацию. –

+0

Отличное решение! Я тоже назначу это! Это кажется идеальным решением (как против моей первой цели использовать лучший db). Спасибо! –

1

ну, вы можете использовать 2 дБ и синхронизировать изменения с помощью своего рода веб-сервиса между ними. Разделительный веб-сервер Db (который вы могли бы использовать с помощью современного mysql или любого другого) и текущий доступ. Db . Вы должны создать своего рода Rest Api, возвращающий новые или измененные записи по методу GET, удаляя метод DELETE и т. Д., Используя временную метку в метод http. , а затем вы можете запросить с каждой стороны запланированное задание для новых записей на другой стороне (передача с помощью json), что приведет к сохранению записей относительно insync.

Вы можете позаботиться о безопасности, предоставив приложение db только в определенном порту и только к http-запросам, исходящим из IP-адреса сервера webapp. также используя http auth, хэши и т. д. , если это не тяжелая загрузка, приложение с высоким уровнем параллелизма (что, я думаю, это не так, поскольку вы используете доступ как Db), это должно сработать.

вы могли бы построить такого рода мини-апи с любым питоном webframework как TurboGears 2.1, Джанго или мини-фреймворки типа bottle или колбой

PS Если вы предпочитаете питон (и почему вы не) не использовать pyodbc напрямую, работать с python beautiful orm - sqlalchemy намного лучше

+0

Конечно, я предпочитаю Python :-) Спасибо за это ясное объяснение! Думаю, я пойду с этим решением. –

1

Я думаю, что это действительно зависит от проблемы аутентификации и количества пользователей, которым необходимо пересмотреть данные.

Причина, по которой я спрашиваю?

Вы можете использовать Access 2010 и офис 365. Это позволяет связать таблицы с облаком, но на самом деле таблицы также кэшируются локально на рабочем столе Access. Это означает, что используется синхронизация данных в режиме реального времени, и это автоматически для Access 2010 (так что вам не нужно писать какой-либо код).

Это означает, что при запуске настольного приложения Access вы можете вытащить вилку в сеть, и она будет продолжать работать. В тот момент, когда у вас есть Wi-Fi или соединение, изменения в локальной сети синхронизируются до офиса 365. Еще лучше теперь вы можете создавать веб-формы в Access.

Данные, затронутые или отредактированные (или новые записи с обеих сторон), будут переданы на ваш локальный компьютер. Таким образом, вы добавляете репорты в Access Access, пользователи сети также будут видеть эти новые reocrds.

Таким образом, Access 2010 теперь имеет веб-публикации, и это работает с новым офисом 365.Цена начинается от 6 долларов США в месяц. И если только для нескольких пользователей, тогда им нужно войти в систему, используя одну учетную запись! Это означает, что вы можете запустить все это за меньшее время, чем потребовалось, чтобы сделать этот пост, и менее 10 долларов в месяц!

Для тех, кто не осведомлен, Access 2010 имеет веб-публикацию. Когда вы публикуете формы Access, они преобразуются в формы .net forms (zammel/XAML), а код преобразуется в JavaScript. Таким образом, код формы фактически работает со стороны браузера.

Поскольку система работает в офисе 365, тогда вы используете сверхмощный утюг, и вы можете в теории масштабировать миллионы пользователей для этой установки. Когда вы публикуете приложение Access в офисе 365, то на стороне сервера вы больше не используете файлы mdb или Access, а называете Access Web Services. Фактически таблицы становятся эквивалентными списками SharePoint. И новый для SP 2010 - эти списки теперь имеют такие реляционные функции, как cascade delete.

Настоящая красота этой системы заключается в том, что вы можете писать и создавать и делать все внутри доступа без необходимости изучать или касаться ЛЮБОГО ВИДА технологий на стороне сервера. Вот мое короткое видео, а на половине пути я запустил приложение Access только с веб-браузером.

http://www.youtube.com/watch?v=AU4mH0jPntI

Там нет ACTIVEX или требуется даже Silverlight. На самом деле приложения Access работают нормально на iPad, используя веб-браузер Safari.

Итак, вы можете продолжить использовать Access и просто опубликовать свое приложение в Интернете с новыми функциями Access 2010.

Смежные вопросы