У моего босса большие мечты.
Он хочет написать приложение, которое работает как на настольных, так и на мобильных устройствах. Кроме того, он хочет, чтобы он время от времени подключался (может работать без подключения к интернету). Приложение будет в значительной степени полагаться на данные из базы данных.
Все, с кем он разговаривает, продолжают навязывать ему HTML5/JavaScript в качестве решения с возможностью однократной записи и выполнения везде.
У меня нет большого опыта работы с такого рода средами — получением данных из базы данных с помощью JavaScript, ORM для JavaScript и тому подобными вещами. Я, может быть, забегаю вперед.
На что мне следует обратить внимание, когда я пытаюсь использовать стратегию, чтобы максимально приблизиться к его целям? Вот предположения и вопросы, которые у меня есть:
Ожидания/предположения
- Я ожидаю, что мне придется использовать одну из «встроенных» или локальных баз данных, которые, похоже, возникли с HTML5 и локальным хранилищем.
- Я ожидаю, что мне также придется найти способ синхронизировать эти данные с данными, которые хранятся где-то на сервере.
- Я ожидаю, что синхронизацию этих данных придется делать доморощенно.
- Я хотел бы иметь какой-то ORM, чтобы упростить работу с данными.
- Я ожидаю столкнуться со всевозможными странностями, связанными с размером локальной базы данных.
- Я ожидаю, что мне придется запускать весь код приложения на стороне клиента, поскольку предполагается, что они смогут запускать приложение без подключения к Интернету.
Вопрос
Что я делаю?
Я немного в растерянности, даже не зная, с чего начать.
Чтобы превратить это во что-то, что может иметь правильные/неправильные ответы, вот что было бы полезно знать:
- Является ли подход HTML5/JavaScript хорошим вариантом (учитывая цели периодически подключающихся, мобильных и настольных компьютеров)?
- Какие фреймворки и инструменты следует использовать, чтобы упростить разработку приложения?
- Он слишком много просит?
Заранее спасибо за любые советы/рекомендации, которые могут у вас быть.
По запросу: что делает приложение? Приложение представляет собой (более или менее) приложение для расчета цен на настраиваемый продукт. Есть куча продуктов (напольные шкафы, навесные шкафы и т.д.), куча стандартных настраиваемых опций (дерево, отделка, стиль двери) и куча (менее стандартных) модификаций к ним (уменьшить глубину, увеличить высоту, и т.д.).
В зависимости от выбранных вами стандартных настраиваемых параметров изменяется базовая цена каждого продукта. Затем вы можете добавить к ним модификации (которые также имеют свою цену).
Большая часть приложения уже существует (хотя и как приложение WPF без локально хранимых данных). Он был разработан таким образом, чтобы его можно было продавать различным производителям, которые производят эти настраиваемые элементы (в первую очередь кухонные шкафы и тому подобное). У каждого производителя есть свои правила относительно того, какую древесину/отделку/и т. д. они предлагают, и как они определяют базовую цену продукции (которая также различается), и как вы можете смешивать/сопоставлять различные породы дерева/отделки и т. д.
Бла, бла, бла, каждый производитель очень уникален.
Чтобы решить эту проблему, мы создали подход, основанный на формулах, где после того, как вы настроили свои продукты/опции/и т. д., вы можете написать несколько формул, чтобы определить не только взаимосвязь между ними, но и то, как их оценить.
В нашей текущей модели приложение запускается на ПК пользователя, а данные находятся на веб-сервере, к которому приложение обращается. Он хочет превратить все это в периодически подключаемое мобильное приложение, которое мы можем использовать и на настольных компьютерах.
С ним связано довольно много данных, так как данные любого производителя будут содержать изображения, описания, примечания, тысячи товаров/модификаций и множество информации о них (ширина, высота, глубина, количество дверей и т.д.).