для одного из моих приложений я хотел бы обеспечить минимальный веб-интерфейс. Это базовое приложение записано в C++ и использует Qt4 в качестве платформы. Так как я также пользуюсь некоторыми библиотеками, которые я записал, чтобы вычислить некоторые вещи и сделать некоторое сложное управление данными, я хотел бы использовать этот существующий код как бэкенд к веб-интерфейсу.
Идея 1: Используя встроенный веб-сервер
Первая вещь, которую я попробовал (и который работал до некоторой степени) использовала встроенный веб-сервер (мангуста). Как можно предположить, это - просто очень тонкая библиотека, и необходимо реализовать много вещей сами (как управление сеансами, cookie, и т.д.).
Идея 2: Используя нормальный веб-сервер и добавление fcgi/cgi/scgi бэкенда к моему приложению
Следующая вещь, которая прибыла в мою голову, использовала сформировавшийся, но компактный веб-сервер (например, lighttpd) и простой предоставляют fcgi/scgi/cgi бэкенд ему. Я мог записать веб-приложение с помощью хорошей платформы, как Опоры, PHP или RoR, (...) и просто иметь префикс URL, как /a/...
который позволяет мне непосредственно говорить с бэкендом.
Я пытался реализовать libfcgi в свое приложение, но это выглядит более грязным, чем необходимый (например, необходимо было бы реализовать собственные сокеты TCP/IP для передачи данных между приложением и веб-сервером и туннелем это через библиотеку FCGI, meh),
Идея 3: Создание версии командной строки моего приложения, которое делает самые основные вещи и использовать нормальный веб-сервер и платформу, чтобы сделать остальных
Это - третья идея, которая прибыла в мою голову. Это в основном о создании веб-приложения с помощью традиционного пути (PHP, RoR, и т.д.) и с помощью версии командной строки моего приложения, чтобы обработать данные и возвратить его при необходимости.
У меня есть некоторый опыт с созданием веб-приложений, но я никогда не должен был делать что-то вроде этого, таким образом, я хотел бы услышать некоторые идеи или предложения. Я хотел бы использовать JavaScript на браузерах (Ajax, который является), и передайте некоторые конструкции JSON между веб-браузером и сервером для создания пользовательского опыта немного более гладким.
Таким образом, каковы Ваши предложения, идеи об этом? Я не хочу изобретать велосипед, честно.
Я бы никогда не стал выставлять пользовательское написанное приложение в сеть в качестве внешнего интерфейса, поскольку для этого созданы серверы, такие как apache или lighthttp. Они дают вам серьезную защиту из коробки.
Что касается взаимодействия вашего приложения с этим веб-сервером, это немного зависит от нагрузки и опыта написания программного обеспечения на PHP, Python или других языках, поддерживаемых вашим веб-сервером (конечно, через интерпретатор).
Небольшая нагрузка, и инструмент командной строки, доступный из PHP, может сработать отлично.
Более тяжелая нагрузка, и вы, возможно, захотите реализовать простой (SOAP?) Сервер с Qt и получить доступ к нему из скрипта python (или php).
Таким образом, вам не нужно делать макет в вашем приложении, и вам также не нужно так сильно внедрять безопасность.
В настоящее время я изучаю похожую ситуацию (пользовательский бэкенд веб-приложения с использованием Qt), и наименее плохим вариантом является FastCGI. Нашел кое-что, что может вас заинтересовать. Не готово к производству без серьезного тестирования, но это может быть хорошей отправной точкой для взаимодействия Qt и FastCGI: FastCGIQt
Я использовал библиотеку FastCGI Protocol Driver для аналогичного проекта (тоже Qt-приложение), ссылка на скачивание находится в конце этой страницы [Libfastcgi]. Интеграция с приложением оказалась на самом деле сравнительно простой. В качестве веб-сервера использовался Lighttpd + mod_fastcgi. А вот про FastCGIQt ничего сказать не могу.