Архитектура мобильных приложений: Python как серверная часть мобильных приложений (веб-приложений)

Мы только что достигли своего рода кирпичной стены в нашем проекте и были бы признательны за комментарии, предложения или указания, вообще что угодно.

Постановка задачи

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

Наши ограничения

  • Что касается пользовательского интерфейса, мы больше полагаемся на его прототипирование с помощью технологий html5, таких как Canvas API, SVG. Он во многом соответствует нашим навыкам и обладает необходимыми возможностями.
  • Библиотеки NLP более зрелые и хорошо разработаны на Python (например, NLTK).

Некоторые альтернативы, которые мы пробовали

  1. Javascript based libraries for NLP. They might not be as matured, but could have proved a faster alternative if there were JS libraries for NLP.
    1. We found these:
      1. Natural https://github.com/NaturalNode/natural
      2. Другие библиотеки на основе JS: http://www.chrisumbel.com/article/node_js_natural_language_nlp
    2. Но оказалось, что они основаны на Node, и мы не смогли найти способ добавить их на страницу типа браузера, чтобы мы могли встроить их в платформу типа «PhoneGap». Мы можем ошибаться.
  2. To use Python NLP logic in our mobile app, we tried some cross platform libraries:
    1. PhoneGap http://phonegap.com/
      1. This StackOverflow responsePhoneGap with Django Backend suggests that "you cannot run python code on iOS or Android using PhoneGap"
    2. Qt 5 http://qt-project.org/, Qt5-mobilehttp://qt.digia.com/qtmobile/
      1. There 2 promising Python Based Qt libraries: PyQthttp://www.riverbankcomputing.com/software/pyqt/introand PySide http://qt-project.org/wiki/PySide
      2. This QML/Python/Qt demohttp://qt-project.org/wiki/Using-QtWebKit-and-QML-with-PySideis almost exactly what we want:
        1. There is a Python backend with JS calling python objects and vice versa using methods like: sendData(), receiveJSON() ...
        2. Но, похоже, он не компилируется на наших машинах, и позже мы обнаружили, что разработка PySide застопорилась и поддерживается только до Qt4.8, тогда как Qt5+ поддерживает разработку для мобильных устройств/планшетов.
      3. В этом сообщении блога подробно рассказывается, как некоторые разработчики приложений использовали 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/. Но это всего лишь описание и не дает реальной информации.
    3. Kivi http://kivy.org/docs/guide/packaging-ios.html#:
      1. Despite some niggles, it does seem to work but it doesn't seem to have a way to develop a 'UIWebView' class based iOS app, which we need to use our html5 based UI.
    4. Pythonista http://omz-software.com/pythonista/:
      1. Same problem as Kivi above. We don't want to develop the mobile app using Python, we just need a python backend for our html5 based webapp
    5. iOS: мы также проверили собственные библиотеки разработки iOS, но не смогли найти простой способ встроить бэкэнд-логику Python.
    6. Андроид: ? Кто-нибудь знает, можем ли мы встроить python в веб-приложение.
  3. AJAX calls to Flask server:
    1. This is the last option, that we are fairly confident about. Host python logic on a Flask server and make AJAX calls from the webapp. But given its for an application for kids, we might end up making numerous AJAX calls for same part-of-speech tagging

Любая помощь/предложения приветствуются.


person Shreyas    schedule 08.03.2014    source источник
comment
Мое предложение состояло бы в том, чтобы взять мобильное решение Kivy и сократить их процесс сборки до просто Python, то есть удалить всю часть Kivy. Возьмите это и сделайте видимым для PhoneGap через плагин. (Хотя лично я бы предпочел QML вместо HTML5 для кроссплатформенных мобильных приложений.)   -  person David K. Hess    schedule 31.03.2014
comment
Спасибо Дэвид за ответ. Однако мы нашли эту библиотеку PythonQt. Но, как и во всем Qt, документации очень мало.   -  person Shreyas    schedule 01.04.2014
comment
PythonQt выглядит красиво и чисто, но не похоже, что он поддерживает мобильные сборки? Возможно, вы могли бы использовать процесс сборки Kivy, чтобы получить эту часть. Кроме того, если приложение на основе QML является вариантом, проверьте это: pyotherside.readthedocs.org/en/ последний   -  person David K. Hess    schedule 01.04.2014
comment
Вот это да. Это действительно интересно. Спасибо @DavidK.Hess   -  person Shreyas    schedule 02.04.2014
comment
@DavidK.Hess, предположим, я хочу написать приложение CPython 3.x для Android с довольно приятным графическим интерфейсом, похожим на родное приложение. Не могли бы вы помочь объяснить причину (причины) удаления Kivy и замены его PhoneGap? PhoneGap разработан Adobe (я уверен, вы знаете). Разве вы не беспокоитесь о том дне, когда он перестанет быть бесплатным, с закрытым исходным кодом и будет стоить подписку/лицензию? У меня сложилось впечатление, что бесплатный и открытый исходный код и история использования Python обычно считаются более популярными, чем более проприетарные варианты. Да, QtPython хорошо выглядит для разработчика Windows с интегрированной средой разработки Visual Studio 2015.   -  person codeReview    schedule 29.07.2015
comment
Эта рекомендация была действительно в контексте их конкретной проблемы. Я лично не являюсь поклонником каких-либо гибридных платформ HTML5 и вместо этого использую QML для создания кроссплатформенных приложений. Если нет большого количества исходного кода Python, который необходимо использовать в мобильном приложении, я бы просто реализовал все это на Javascript. Хотя я люблю и предпочитаю Python, экономическая сторона работы с вашей средой выполнения и инструментами по сравнению с использованием определенного языка обычно не стоит того.   -  person David K. Hess    schedule 29.07.2015