2010-02-18 3 views
8

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

Идея 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 между веб-браузером и сервером, чтобы пользователь стал немного более плавным.

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

ответ

4

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

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

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

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

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

+0

честно, я не хочу ничего делать макет, связанный в моем приложении (как это то, что шаблонные классы и такие для). Я просто хочу обменяться важной информацией между веб-сервером и моим основным приложением и использовать более стабильную и безопасную технологию, чтобы сделать все остальное. Никогда не смотрел SOAP, немного почитать об этом. – BastiBen

3

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

+0

Я заглянул в FastCGI, но «официальная» библиотека C/C++ - настоящий беспорядок. Возможно, я что-то пропустил, но большинство веб-серверов подключаются к приложениям fastcgi с использованием TCP/IP; хотя официальная библиотека fastcgi не обеспечивает поддержку TCP/IP ...? – BastiBen

2

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

0

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

Смежные вопросы