Что работает для веб-разработчика в C ++ - PullRequest
9 голосов
/ 23 апреля 2009

Я хочу создать веб-приложение, которое работает с очень небольшим объемом ОЗУ, и я думаю, что C ++ может помочь мне достичь этого.

Сейчас многие говорят, что C ++ не подходит для веб-разработки, потому что:

  • нет легкой манипуляции со строкой
  • - это небезопасный язык (переполнения и т. Д.)
  • длинные циклы изменения / сборки / тестирования
  • и т.д.

Но я уверен, что сообщество C ++ нашло способы облегчить все это (возможно, не время компиляции), поскольку я не постоянный пользователь, поэтому мне сложно оценить то, что я нахожу в Google.

Так что я прошу несколько указаний. Я был бы признателен, если бы вы поделились тем, что работает, какие инструменты / библиотеки текущие и живые. Какие стратегии могут помочь с веб-разработчиком в C ++? FastCGI или встроенный сервер (Asio / POCO / Pion / и т. Д.)? Как вы решаете проблемы безопасности?

Большое спасибо за любую помощь

Ответы [ 9 ]

13 голосов
/ 23 апреля 2009

Вы смотрели на http://www.tntnet.org/. Они создали ... хорошо, позвольте мне вырезать и вставить с их сайта:

Tntnet является модульным, многопоточным, высокопроизводительный сервер веб-приложений для C ++. Для создания веб-приложений Tntnet имеет язык шаблонов, который называется ecpp похож на php, jsp или mason, где вы можете встроить C ++ - код внутри HTML-страница для генерации активного контента. Файлы ecpp предварительно скомпилированы в c ++ - классы, называемые компонентами и составлен и связан в общий библиотека. Этот процесс делается в compiletime.

Я использовал его, и у него довольно небольшие накладные расходы, а также у него потрясающе быстрое динамическое генерирование страниц. Делает PHP, Ruby и т. Д. Улитками для сравнения, потому что с tntnet вы запускаете скомпилированный код C / C ++.

9 голосов
/ 23 апреля 2009

Это проект Wt . Он использует парадигму, аналогичную сигналам / слотам Qt.

7 голосов
/ 23 апреля 2009

Нет ничего неправильно при попытке создать веб-приложение на C ++. Это на самом деле очень весело. Что вам нужно это:

  • Система шаблонов
  • A CGI lib
  • Оболочка API базы данных, скорее всего, чтобы избежать работы с чем-то вроде низкоуровневого MySQL API
  • Регистратор
1 голос
/ 23 апреля 2009

Бэкэнд нашего веб-приложения на C ++ через CGI, и мы используем шаблоны Clearsilver вместе с HDF, который поставляется с ним.

1 голос
/ 23 апреля 2009

В вашем другом вопросе вы упомянули, что ваша встроенная система openwrt . Поскольку эта прошивка маршрутизатора уже поставляется со встроенным веб-сервером (для административного интерфейса), почему бы вам не использовать это и для своего приложения?

1 голос
/ 23 апреля 2009

Сервер ATL . Это тоже открытый исходный код! И, конечно, всегда есть ISAPI . Ах, плохие старые времена. :)

1 голос
/ 23 апреля 2009

ATL Server - это библиотека классов C ++, позволяющая разработчикам создавать интернет-приложения.

1 голос
/ 23 апреля 2009

Дайте нам еще несколько советов о том, что вы пытаетесь сделать.

Вы можете достаточно легко написать хорошую старомодную программу cgi на C ++ и запустить ее с помощью FastCGI. Мы привыкли делать это все время.

Вы также можете написать программу на C ++, в которую встроен облегченный HTTP-сервер.

Оба они гораздо больше, чем PITA, например Perl или Ruby.

Так почему C ++?

Обновление

Хорошо, понял. Главное в FastCGI - то, что он избегает fork-exec для запуска вашей CGI-программы, но это немного другой API. Это хорошо, но у вас все еще есть проблема с обработкой HTTP.

Однако существует несколько очень легких HTTP-серверов, таких как Cherokee и Lighttpd . В подобных ситуациях (создание веб-интерфейсов для устройств) я видел, как люди использовали один из них и запускали свои программы на C / C ++ под ними как CGI. Lighttpd, в частности, похоже, концентрируется на том, чтобы делать CGI-подобные вещи быстрыми и эффективными.

Еще одно обновление. Мне только что показали cgicc : http://www.gnu.org/software/cgicc/

Это может решить некоторые проблемы.

0 голосов
/ 28 января 2018

Вы можете попробовать Cutelyst C ++ 11, построенный с Qt, с одной из лучших позиций на TechEmpower Benchmarks .

Несмотря на то, что для Qt 5.6+ требуется полная CMS ( CMlyst ), она использует около 6 МБ ОЗУ, одновременно обслуживая около 3000 запросов в секунду на одном ядре.

И для вашей проблемы со строковыми манипуляциями QString - просто замечательный класс для этого.

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