Есть небольшое веб-приложение mysql+php. Пользователи вводят данные в браузере, данные сохраняются в БД и затем в браузере можно вывести отчеты. Все работает вполне хорошо и стабильно.
Но возникла задача: требуется вести те же данные локально и сохранять в БД на сервере время от времени. Писать десктоп-приложение с нуля не хочется, это и трудоемко достаточно, и бизнес-логика с течением времени рассинхронизируется между веб- и десктоп-приложениями.
Подскажите, куда копать? Самый интересный на мой взгляд вариант, запустить это веб-приложение локально и дописать утилиту, которая будет между локальной и удаленной базами данных синхронизировать записи.
Кто-то делал что-то подобное? Какой веб-сервер лучше использовать локально, чтобы ресурсов поменьше потреблял? А еще лучше, чтобы вообще запускался по требованию для обработки скрипта, наподобие как sqlite делает. Существует что-либо подобное?
samurdolph пишет:
> Но возникла задача: требуется вести те же данные локально и сохранять в > БД на сервере время от времени. Писать десктоп-приложение с нуля не > хочется, это и трудоемко достаточно, и бизнес-логика с течением времени > рассинхронизируется между веб- и десктоп-приложениями.
что понимается в виду под "локально"? обязательно pure desktop? Google
Chrome в режиме web app не подходит? В крайнем случае можно доваять
обертку-вебсервис на стороне пхп и простенького клиента на дотнете —
логика вся на сервере останется, а если там хоть немного был MVC —
переделки будут минимальные.
> Подскажите, куда копать? Самый интересный на мой взгляд вариант, > запустить это веб-приложение локально и дописать утилиту, которая будет > между локальной и удаленной базами данных синхронизировать записи.
Вам принципиально, будет ли браузер ходить на www.mysite.com или
localhost? Или там интернет не круглые сутки? Если запускать копию
локально — можно между базами настроить репликацию и запускать ее
вручную когда надо, вот только 2-way в мускуле будет несколько
геморройно сделать.
> Кто-то делал что-то подобное? Какой веб-сервер лучше использовать > локально, чтобы ресурсов поменьше потреблял? А еще лучше, чтобы вообще
apache for windows. В айдле есть только память, и ту можно укрутить по
самое нехочу.
> запускался по требованию для обработки скрипта, наподобие как sqlite > делает. Существует что-либо подобное?
Здравствуйте, Роман Дубров, Вы писали:
РД>samurdolph пишет:
>> Подскажите, куда копать? Самый интересный на мой взгляд вариант, >> запустить это веб-приложение локально и дописать утилиту, которая будет >> между локальной и удаленной базами данных синхронизировать записи.
РД>Вам принципиально, будет ли браузер ходить на www.mysite.com или РД>localhost? Или там интернет не круглые сутки? Если запускать копию РД>локально — можно между базами настроить репликацию и запускать ее РД>вручную когда надо, вот только 2-way в мускуле будет несколько РД>геморройно сделать.
То-то и оно, что интернет не круглые сутки. Поэтому получается две независимые программы с одинаковой логикой: десктоп-приложение и веб-приложение. Хочу по максимуму использовать код веб-приложения для создания десктопной версии.
Да, репликацию придется настроить.
>> Кто-то делал что-то подобное? Какой веб-сервер лучше использовать >> локально, чтобы ресурсов поменьше потреблял? А еще лучше, чтобы вообще
РД>apache for windows. В айдле есть только память, и ту можно укрутить по РД>самое нехочу.
Спасибо, буду копать в эту сторону.
>> запускался по требованию для обработки скрипта, наподобие как sqlite >> делает. Существует что-либо подобное?
РД>афаик, в sqlite нет встроенного вебсервера
sqlite я привел просто как аналогию. Т.е. mysql запускается как процесс, sqlite, по сути, маленькая библиотека, которая как отдельный процесс не запускается вовсе. И тот и другой, тем не менее, позволяют работать с таблицами БД.
Здравствуйте, samurdolph, Вы писали:
S>Коллеги, подскажите, плс, по такой задачке.
S>Есть небольшое веб-приложение mysql+php. Пользователи вводят данные в браузере, данные сохраняются в БД и затем в браузере можно вывести отчеты. Все работает вполне хорошо и стабильно.
S>Но возникла задача: требуется вести те же данные локально и сохранять в БД на сервере время от времени. Писать десктоп-приложение с нуля не хочется, это и трудоемко достаточно, и бизнес-логика с течением времени рассинхронизируется между веб- и десктоп-приложениями.
S>Подскажите, куда копать? Самый интересный на мой взгляд вариант, запустить это веб-приложение локально и дописать утилиту, которая будет между локальной и удаленной базами данных синхронизировать записи.
S>Кто-то делал что-то подобное? Какой веб-сервер лучше использовать локально, чтобы ресурсов поменьше потреблял? А еще лучше, чтобы вообще запускался по требованию для обработки скрипта, наподобие как sqlite делает. Существует что-либо подобное?
Если имеется техническая возможность установить mysql+php+apache на клиента то нужно их ставить и заливать свое приложение локально + писать модуль синхронизации баз.
Если же такой возможности нет то я бы посоветовал делать это как Sciter приложение — html+css+script.
Database в Sciter встроенная + встроенный template режим (<% ... %>).
+ опять же встроенный AJAX клиент с пом. которого делается синхронизация с сервером.
В любом случае Occasionally Connected Web Applications это вообще отдельная сущность — просто перенос (drop-in) с сервера на клиент кода как правило не работает ибо логика меняется достаточно сильно.
samurdolph пишет:
> То-то и оно, что интернет не круглые сутки. Поэтому получается две > независимые программы с одинаковой логикой: десктоп-приложение и > веб-приложение. Хочу по максимуму использовать код веб-приложения для > создания десктопной версии.
ну тогда получается классический толстый клиент с распределенной базой.
> Да, репликацию придется настроить.
+ мускулевские автоинкременты придется заменить на самописные безопасные
секвенсоры
> РД>apache for windows. В айдле есть только память, и ту можно укрутить по > РД>самое нехочу. > > Спасибо, буду копать в эту сторону.
у вас там что, один клиент только? Стоит ли из-за одного юзера огород
городить, мож будет дешевле gprs ему протянуть или 3g если доступно?
> sqlite я привел просто как аналогию. Т.е. mysql запускается как процесс, > sqlite, по сути, маленькая библиотека, которая как отдельный процесс не > запускается вовсе. И тот и другой, тем не менее, позволяют работать с > таблицами БД.
sqlite запускается как часть приложения, его использующего. Да, если это
приложение закрыто, sqlite, в отличие от апача с мускулем, тоже в памяти
не болтается. Ну да и фиг с ним, можно подумать что те 40-50 мб что они
сожрут так критичны для современного компа с минимум 512мб