Mobile/Desktop - какая стратегия имеет смысл
У моего босса большие мечты.
Он хочет написать приложение, которое будет работать как на настольных, так и на мобильных устройствах. Кроме того, он хочет, чтобы он иногда подключался (может работать без подключения к интернету). Приложение будет в значительной степени полагаться на данные из базы данных.
Каждый, с кем он общается, продолжает настаивать на своем HTML5/JavaScript, чтобы найти решение для однократного запуска везде.
У меня нет большого опыта работы с такой средой - получение данных из базы данных с использованием JavaScript, ORM для JavaScript и тому подобное. Возможно, я забегаю вперед.
На какие вещи я должен обращать внимание при попытке выработать стратегию, максимально приближенную к его целям? Вот предположения и вопросы, которые у меня есть:
Ожидания / Предположения
- Я ожидаю, что мне придется использовать одну из "встроенных" или локальных баз данных, которые, кажется, возникли в HTML5 и Local Storage.
- Я ожидаю, что мне также нужно будет найти способ синхронизировать эти данные с данными, которые где-то находятся на сервере.
- Я ожидаю, что синхронизация этих данных должна быть доморощенной.
- Я хотел бы иметь какой-то ORM, чтобы облегчить работу с данными.
- Я ожидаю столкнуться со всевозможными странными вещами, связанными с размером локальной базы данных.
- Я ожидаю, что мне придется запускать весь код приложения на стороне клиента, поскольку предполагается, что они смогут запускать приложение без подключения к Интернету.
Вопрос
Что я делаю?
Я в недоумении, даже зная, с чего начать.
Чтобы превратить это во что-то, что может иметь правильные / неправильные ответы, вот что полезно знать:
- Звучит ли подход HTML5/JavaScript как хороший путь (учитывая цели иногда подключенных, мобильных и настольных компьютеров)?
- На какие рамки и инструменты мне следует обратить внимание, чтобы сделать разработку приложения максимально простой?
- Он просит слишком много?
Заранее благодарим за любые советы / рекомендации, которые вы можете иметь.
По запросу: что делает приложение? Приложение является (более или менее) приложением цен / предложений для настраиваемого продукта. Существует множество продуктов (базовые шкафы, настенные шкафы и т. Д.), Множество стандартных настраиваемых параметров (дерево, отделка, стиль дверей) и множество (менее стандартных) модификаций к ним (уменьшение глубины, увеличение высоты, так далее.).
В зависимости от выбранных вами стандартных настраиваемых параметров, изменяется базовая цена каждого продукта. Затем вы можете добавить к ним модификации (которые также имеют свою цену).
Большая часть приложения уже существует (хотя и как приложение WPF без локально сохраненных данных). Он был разработан таким образом, чтобы его можно было продавать различным производителям, которые производят эти настраиваемые элементы (в первую очередь, кухонные шкафы и тому подобное). У каждого производителя есть свои собственные правила относительно того, какую древесину / отделку / и т.д. они предлагают, и как они определяют базовую цену продукции (которая также варьируется) и как вы можете смешивать / сочетать различные виды дерева / отделки и т. Д.
Бла, бла, бла, каждый производитель очень уникален.
Чтобы решить эту проблему, мы создали подход, основанный на формулах, где после настройки их продуктов / опций / и т. Д. Вы можете написать некоторые формулы, чтобы определить не только отношения между ними, но и способы их оценки.
В нашей текущей модели приложение работает на компьютере пользователя, а данные находятся на веб-сервере, на который приложение обращается. Он хочет превратить всю эту штуку в мобильное приложение, которое иногда подключается, которое мы можем использовать и на настольных ПК.
С ним связано довольно много данных, поскольку данные любого производителя будут содержать изображения, описания, заметки, тысячи продуктов / модификаций и много информации о них (ширина, высота, глубина, количество дверей и т. Д.).
1 ответ
- Звучит ли подход HTML5/JavaScript как хороший путь (учитывая цели иногда подключенных, мобильных и настольных компьютеров)?
- Да. Вероятно, JavaScript - это то, что нужно, но это будет нелегко, если вы еще не разбираетесь в JavaScript. Большие приложения являются чудовищным JavaScript, особенно на мобильных устройствах.
- Я мало знаю о хранении баз данных на стороне клиента, но для синхронизации баз данных сервера и клиента почти наверняка потребуются преобразования AJAX и XML или JSON.
- Учитывайте безопасность и размер данных на клиенте (должен ли клиент иметь доступ ко всем данным, хранящимся на его компьютере?).
- На какие рамки и инструменты мне следует обратить внимание, чтобы сделать разработку приложения максимально простой?
- Я использую jQuery для всех манипуляций с DOM, перехватов событий и AJAX. Плюс я использую много других функций / плагинов для других идей. Я настоятельно рекомендую взглянуть на это.
- Firebug (<- должен иметь)
- Он просит слишком много?
- Аспект без связи может быть слишком много. Я не удивлюсь, если это удвоит время кодирования.
- Вы можете предоставить дополнительную информацию о том, что делает приложение. Если это огромный CMS с пользовательским интерфейсом, этот проект может занять годы для одного человека. Однако, если это всего лишь небольшое приложение, похожее на Nerd Dinner, оно не должно быть слишком плохим.
Изменить после обновления вопроса
Сначала я бы протестировал подход базы данных на стороне клиента с помощью мобильного устройства. Вы можете столкнуться с непредвиденными ограничениями (скорость передачи данных, размер данных) со средами (браузер Android, Mobile Safari). Когда и что обновлять, когда у вас есть интернет-соединение для работы, также является важным определяющим фактором уровня усилий. Эти вопросы могут быть получены путем тестирования ограничений базы данных на стороне клиента.
Остальное кажется довольно простым для меня. Удачи. знак равно