Мобильный/десктоп — какая стратегия имеет смысл

У моего босса большие мечты.

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

Все, с кем он разговаривает, продолжают навязывать ему HTML5/JavaScript в качестве решения с возможностью однократной записи и выполнения везде.

У меня нет большого опыта работы с такого рода средами — получением данных из базы данных с помощью JavaScript, ORM для JavaScript и тому подобными вещами. Я, может быть, забегаю вперед.

На что мне следует обратить внимание, когда я пытаюсь использовать стратегию, чтобы максимально приблизиться к его целям? Вот предположения и вопросы, которые у меня есть:

Ожидания/предположения

  1. Я ожидаю, что мне придется использовать одну из «встроенных» или локальных баз данных, которые, похоже, возникли с HTML5 и локальным хранилищем.
  2. Я ожидаю, что мне также придется найти способ синхронизировать эти данные с данными, которые хранятся где-то на сервере.
  3. Я ожидаю, что синхронизацию этих данных придется делать доморощенно.
  4. Я хотел бы иметь какой-то ORM, чтобы упростить работу с данными.
  5. Я ожидаю столкнуться со всевозможными странностями, связанными с размером локальной базы данных.
  6. Я ожидаю, что мне придется запускать весь код приложения на стороне клиента, поскольку предполагается, что они смогут запускать приложение без подключения к Интернету.

Вопрос

Что я делаю?

Я немного в растерянности, даже не зная, с чего начать.

Чтобы превратить это во что-то, что может иметь правильные/неправильные ответы, вот что было бы полезно знать:

  1. Является ли подход HTML5/JavaScript хорошим вариантом (учитывая цели периодически подключающихся, мобильных и настольных компьютеров)?
  2. Какие фреймворки и инструменты следует использовать, чтобы упростить разработку приложения?
  3. Он слишком много просит?

Заранее спасибо за любые советы/рекомендации, которые могут у вас быть.

По запросу: что делает приложение? Приложение представляет собой (более или менее) приложение для расчета цен на настраиваемый продукт. Есть куча продуктов (напольные шкафы, навесные шкафы и т.д.), куча стандартных настраиваемых опций (дерево, отделка, стиль двери) и куча (менее стандартных) модификаций к ним (уменьшить глубину, увеличить высоту, и т.д.).

В зависимости от выбранных вами стандартных настраиваемых параметров изменяется базовая цена каждого продукта. Затем вы можете добавить к ним модификации (которые также имеют свою цену).

Большая часть приложения уже существует (хотя и как приложение WPF без локально хранимых данных). Он был разработан таким образом, чтобы его можно было продавать различным производителям, которые производят эти настраиваемые элементы (в первую очередь кухонные шкафы и тому подобное). У каждого производителя есть свои правила относительно того, какую древесину/отделку/и т. д. они предлагают, и как они определяют базовую цену продукции (которая также различается), и как вы можете смешивать/сопоставлять различные породы дерева/отделки и т. д.

Бла, бла, бла, каждый производитель очень уникален.

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

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

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


person Anthony Compton    schedule 10.11.2011    source источник


Ответы (1)


  1. Does the HTML5/JavaScript approach sound like a good way to go (considering the targets of occasionally connected, mobile, and desktop)?
    • Yes. JavaScript is probably the way to go on this, however it won't be easy if you're not already JavaScript savvy. Large applications are a beast in JavaScript, especially on Mobile devices.
    • Я мало разбираюсь в хранении базы данных на стороне клиента, но для синхронизации серверной и клиентской баз данных почти наверняка потребуются преобразования AJAX и XML или JSON.
    • Учитывайте безопасность и размер данных на клиенте (должен ли клиент иметь доступ ко всем данным, хранящимся на его машине?).
  2. What sort of frameworks and tools should I be looking at to make the development of the application easiest?
    • I use jQuery for all DOM manipulation, event hooks, and AJAX. Plus I use many other features/plugins for other thinks. I highly recommend taking a look at it.
    • Firebug (‹-должен быть)
  3. Is he asking for too much?
    • The connectionless aspect may be too much. I wouldn't be surprised if it doubled the coding time.
    • Вы можете предоставить дополнительную информацию о том, что делает приложение. Если это огромная CMS с тяжелым пользовательским интерфейсом, этот проект может занять годы для одного человека. Однако, если это всего лишь приложение, похожее на Nerd Dinner, оно не так уж и плохо.

Изменить после обновления вопроса

Я бы сначала протестировал подход к базе данных на стороне клиента на мобильном устройстве. Вы можете столкнуться с непредвиденными ограничениями (скорость передачи данных, размер данных) в средах (браузер Android, Mobile Safari). Когда и что обновлять, когда у вас есть подключение к Интернету для работы, также является важным фактором, определяющим уровень усилий. На эти вопросы можно ответить, проверив ограничения базы данных на стороне клиента.

Остальное мне кажется довольно прямолинейным. Удачи. знак равно

person JoshNaro    schedule 10.11.2011
comment
Спасибо за ответ! Я знаком с JavaScript (и jQuery), но никогда не писал особо больших приложений с JavaScript в качестве основного языка. Чтобы ответить на один из ваших вопросов, пользовательский интерфейс не так сложен, как работа со всеми (абстрактными) вычислениями и отношениями между объектами. Существует много данных для хранения обо всем, и как только вы добавляете один из продуктов в заказ, изрядная его часть должна быть продублирована, чтобы он мог стать уникальным для этого конкретного заказа и быть измененным (по мере того, как пользователь настраивает его) . - person Anthony Compton; 10.11.2011