Использование приложения C ++ / Qt4 в качестве бэкэнда для веб-приложения - PullRequest
8 голосов
/ 18 февраля 2010

для одного из моих приложений я хотел бы предоставить минимальный веб-интерфейс. Это основное приложение написано на C ++ и использует Qt4 в качестве фреймворка. Поскольку я также использую некоторые библиотеки, которые я написал, чтобы вычислить некоторые вещи и выполнить сложное управление данными, я хотел бы использовать этот существующий код в качестве бэкэнда для веб-интерфейса.

Идея 1. Использование встроенного веб-сервера

Первое, что я попробовал (и в какой-то степени работало), - это использовал встроенный веб-сервер ( mongoose ). Как вы можете себе представить, это просто очень тонкая библиотека, и вы должны реализовать множество вещей самостоятельно (например, управление сеансами, файлы cookie и т. Д.).

Идея 2. Использование обычного веб-сервера и добавление бэкэнда fcgi / cgi / scgi в мое приложение

Следующим, что пришло мне в голову, было использование зрелого, но компактного веб-сервера (например, lighttpd) и простого предоставления ему бэкэнда fcgi / scgi / cgi. Я мог бы написать веб-приложение, используя хороший фреймворк, такой как Pylons, PHP или RoR, (...) и просто иметь префикс URL, такой как /a/..., который позволяет мне напрямую общаться с бэкэндом.

Я пытался внедрить libfcgi в свое приложение, но оно выглядит более грязным, чем нужно (например, вам нужно будет внедрить собственные сокеты TCP / IP для передачи данных между вашим приложением и веб-сервером и туннелирования через Библиотека FCGI, мех)

Идея 3: Создание версии моего приложения для командной строки, которая выполняет самые основные функции и использует обычный веб-сервер и инфраструктуру для выполнения всего остального

Это третья идея, которая пришла мне в голову. В основном речь идет о создании веб-приложения с использованием традиционного способа (PHP, RoR и т. Д.) И использовании версии моего приложения из командной строки для обработки данных и их возврата при необходимости.


У меня есть некоторый опыт создания веб-приложений, но мне никогда не приходилось делать что-то подобное, поэтому я хотел бы услышать некоторые идеи или предложения. Я хотел бы использовать JavaScript в браузерах (то есть AJAX) и передавать некоторые конструкции JSON между веб-браузером и сервером, чтобы сделать работу пользователя немного более гладкой.

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

Ответы [ 5 ]

4 голосов
/ 18 февраля 2010

Я бы никогда не выставлял пользовательское письменное приложение в сеть в качестве внешнего интерфейса, поскольку такие серверы, как apache или lighthttp, создаются. Они дают вам серьезную безопасность из коробки.

Что касается взаимодействия вашего приложения с этим веб-сервером, то это в некоторой степени зависит от нагрузки и того, какой у вас опыт написания программного обеспечения на PHP, Python или других языках, поддерживаемых вашим веб-сервером (конечно, через переводчика).

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

Более тяжелая нагрузка, и вы можете захотеть реализовать простой (SOAP?) Сервер с Qt и получить к нему доступ из скрипта python (или php).

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

3 голосов
/ 18 февраля 2010

В настоящее время я изучаю аналогичную ситуацию (пользовательский интерфейс веб-приложения, использующий Qt), и наименее плохим вариантом является FastCGI. Нашли что-то, что вас может заинтересовать. Не готов к работе без серьезного тестирования, но это может быть хорошей отправной точкой для взаимодействия Qt - FastCGI: FastCGIQt

2 голосов
/ 28 июля 2010

Я использовал библиотеку FastCGI Protocol Driver для аналогичного проекта (также приложения Qt), ссылка на скачивание находится в конце этой страницы [Libfastcgi]. Интеграция с приложением оказалась сравнительно простой. Lighttpd + mod_fastcgi использовался в качестве веб-сервера. Хотя ничего не могу сказать о FastCGIQt.

0 голосов
/ 30 марта 2015

Вот пример встроенного QML-сервера: https://github.com/ncp1402/ql-server

0 голосов
/ 14 октября 2010

You Wt хорошо работает для обеспечения веб-интерфейса для приложений на основе Qt. Оба имеют схожий стиль программирования, и есть пример, демонстрирующий интеграцию с Qt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...