Архитектура мобильного приложения: Python как серверная часть для мобильных приложений (веб-интерфейс)
Мы только что достигли какой-то кирпичной стены в нашем проекте и будем благодарны за некоторые комментарии, предложения или указатели, что угодно.
Постановка задачи
Создание мобильного / планшетного приложения на основе веб-технологий (html5 / canvas), которое может выполнять некоторую обработку естественного языка.
Наши ограничения
- Что касается пользовательского интерфейса, мы больше полагаемся на его прототипирование с использованием технологий html5, таких как Canvas api, SVG. Это во многом соответствует нашим навыкам и обладает необходимыми возможностями
- Библиотеки NLP более развиты и хорошо развиты в Python (например, NLTK)
Некоторые альтернативы, которые мы попробовали
- Библиотеки на основе Javascript для НЛП. Они могут быть не такими зрелыми, но могли бы оказаться более быстрой альтернативой, если бы были библиотеки JS для NLP.
- Мы нашли это:
- Естественный https://github.com/NaturalNode/natural
- Другие библиотеки на основе JS: http://www.chrisumbel.com/article/node_js_natural_language_nlp
- Но они оказались на основе Node, и мы не могли найти способ добавить их на страницу браузера, чтобы встроить ее в платформу типа "PhoneGap". Мы можем ошибаться.
- Мы нашли это:
- Чтобы использовать логику Python NLP в нашем мобильном приложении, мы попробовали несколько кроссплатформенных библиотек:
- PhoneGap http://phonegap.com/
- В этом ответе Stackru PhoneGap с Django Backend говорится, что "вы не можете запускать код Python на iOS или Android с помощью PhoneGap"
- Qt 5 http://qt-project.org/, Qt5-mobile http://qt.digia.com/qtmobile/
- Есть 2 многообещающие библиотеки Qt на основе Python: PyQt http://www.riverbankcomputing.com/software/pyqt/intro и PySide http://qt-project.org/wiki/PySide
- Это демо QML/Python/Qt http://qt-project.org/wiki/Using-QtWebKit-and-QML-with-PySide- почти то, что мы хотим:
- Существует бэкэнд Python с JS, вызывающим объекты Python, и наоборот, с использованием таких методов, как: sendData(), receiveJSON() ...
- Но, похоже, он не компилируется на наших машинах, и позже мы обнаружили, что разработка PySide находится в стагнации и поддерживает только до Qt4.8, тогда как Qt5+ обеспечивает поддержку разработки для мобильных устройств / планшетов.
- В этом блоге рассказывается, как некоторые разработчики приложений использовали Python для бэкенда и QML для пользовательского интерфейса http://blog.qt.digia.com/blog/2012/03/23/mixd-tv-leveraging-qt-quick-for-a-rich-desktop-ui-from-a-python-back-end/. Но это просто описательно, и не дает реальной информации.
- Киви http://kivy.org/docs/guide/packaging-ios.html:
- Несмотря на некоторые недоработки, похоже, что это работает, но у него нет способа разработать приложение для iOS, основанное на классах "UIWebView", для которого нам нужно использовать наш интерфейс на основе html5.
- Pythonista http://omz-software.com/pythonista/:
- Та же проблема, что и у Киви выше. Мы не хотим разрабатывать мобильное приложение с использованием Python, нам просто нужен бэкэнд Python для нашего веб-приложения на основе html5
- iOS: мы также проверили нативные библиотеки разработки для iOS, но не смогли найти простой способ встроить логику Python-интерфейса
- Android:? Кто-нибудь знает, можем ли мы встроить python в веб-приложение.
- PhoneGap http://phonegap.com/
- AJAX обращается к серверу Flask:
- Это последний вариант, в котором мы достаточно уверены. Размещайте логику Python на сервере Flask и совершайте AJAX-вызовы из веб-приложения. Но учитывая его для приложения для детей, мы могли бы в конечном итоге сделать множество AJAX-вызовов для одной и той же части речи
Любая помощь / предложения приветствуются.