Я хотел бы заняться веб-разработкой, используя C ++ в качестве «языка сценариев» на стороне сервера. Моя серверная инфраструктура основана на * nix, поэтому веб-разработка на C ++ на Azure неприменима, а C ++ / CLI ASP.NET также не применима.
Отдельно от унаследованных CGI-приложений, можно ли заниматься веб-разработкой с использованием C ++?
web-development
c++
Скотт Дэвис
источник
источник
,
будут.
перенаправлены на сокет.Ответы:
Абсолютно.
Есть еще несколько структур для их развития, в том числе Wt , CppCMS , ПСУ и другие. Основная реализация FastCGI написана на C и напрямую поддерживает несколько языков , включая C ++.
Любой язык программирования, который может анализировать строки, может использоваться в CGI или в сервлете. Любой язык, который может реализовывать привязки с библиотеками C, также может использоваться для разработки модулей для ISAPI- или Apache-совместимых серверов.
Это не особенно легко в C ++, и хороших шаблонизаторов очень мало, но это можно сделать.
Конечно, вопрос о том, является ли это хорошей идеей, является совершенно другим вопросом. :)
Обратите внимание: крупные сайты, такие как Amazon.com, eBay и Google, используют C ++ для части своей инфраструктуры. Поймите, однако, что Google использует C ++ только для систем, критичных к скорости, а Amazon.com сравнительно недавно отказался от Lisp (что вызвало недовольство некоторых из их старших сотрудников :).
Ранее Facebook компилировал PHP в C ++, но с тех пор их компилятор HipHop (частично написанный на C ++) был переоборудован в виртуальную машину с байт-кодом.
источник
Почему бы нет?
Сайт знакомств OkCupid создан на C ++. Есть, вероятно, другие примеры.
Есть также вдохновленный Qt инструментарий для разработки веб-приложений на C ++ под названием Wt .
источник
Если вы планируете написать свое веб-приложение на C ++, было бы совершенно бесполезно использовать его как CGI.
Мое предложение состояло бы в том, чтобы построить это асинхронное использование ASIO (Асинхронный ввод / вывод). При этом вы можете создать невероятно быстрый веб-сервис (в сочетании с nginx в качестве обратного прокси-сервера и статического сервера для достижения наилучших результатов); Объедините это с библиотекой шаблонов, такой как Wt, и вы будете готовы обслуживать десятки тысяч запросов в секунду с одного сервера.
Является ли это практической альтернативой динамическим языковым веб-фреймворкам, это другой вопрос.
источник
Краткий ответ: НИЧЕГО можно использовать для написания веб-страницы, при условии, что она может читать входные данные, записывать интерпретируемые выходные данные и может выполняться веб-сервером.
Технически, любой язык может быть использован в качестве CGI-скрипта при условии, что он:
Есть и другие способы тоже. Perl может быть построен как обертка вокруг кода c / c ++, выступая в качестве интерпретирующего слоя между ними (и это не относится к модулям perl, которые полностью скомпилированы как C).
источник
в начале это было довольно распространенным явлением - первые веб-сайты, над которыми я работал в конце 1990-х, были расширениями ISAPI, написанными на C ++, и они работали довольно хорошо.
источник
Похоже, Microsoft думает, что может тоже. Проверьте Casablanca, который представляет собой новый набор инструментов для (кажется) Azure с использованием C ++.
источник
Для PHP вы можете написать свои собственные расширения C / C ++ и таким образом получить хорошую производительность. Если бы в моем веб-приложении была действительно интенсивная загрузка процессора, я бы, вероятно, создал бы небольшую библиотеку C ++, которая передавала бы эту обработку в расширение, а затем возвращала результат обратно в PHP, а затем PHP выводил его в браузер.
Другая вещь, которую люди не часто рассматривают, - это разгрузка определенной обработки ЦП на стороне клиента, например, JavaScript / jQuery. Если у меня есть веб-сервер, мне может потребоваться процессор с частотой 3 ГГц, чтобы выполнять интенсивную обработку ЦП для определенной функции (возможно, для обработки некоторых данных). Моя компания платит деньги за этот сервер каждый месяц, чтобы он работал. Если я хочу увеличить масштабы операций для 100 одновременно работающих пользователей, одновременно выполняющих эту задачу, интенсивно использующую ЦП, то, возможно, мне потребуется несколько ЦП и серверов, что увеличит затраты для моего бизнеса. Если я перенесу эту задачу, интенсивно использующую ЦП, на клиентскую сторону, то каждый пользователь, посещающий веб-сайт, может самостоятельно обрабатывать данные, и мне не нужно увеличивать возможности моего сервера, что экономит мои деньги.
В конце концов, благодаря совокупной мощности более 100 настольных компьютеров / планшетов / мобильных устройств, выполняющих обработку для вас, это намного больше энергии, чем ваш сервер, находящийся в центре обработки данных, где каждый месяц стоит деньги на ведение бизнеса. Потенциально тогда все, что будет делать ваш сервер, будет извлекать данные из базы данных, обслуживать контент и немного до / после обработки и проверки данных перед их сохранением в базе данных. Очевидно, что вы не сделаете код на стороне клиента слишком интенсивным ЦП, который может заблокировать / заморозить пользовательский интерфейс веб-браузера, вы можете запустить AJAX-запрос к серверу, получить данные и затем обработать данные асинхронно на стороне клиента, оставив Интернет -браузер UI полностью пригоден для использования.
источник
Да, это можно использовать. Другие упоминали различные подходы. Вот мой собственный подход. Преимущество состоит в том, что он является полностью переносимым и автономным, все выбранные библиотеки зависят только от ANSI C. Для его настройки требуется только ядро Linux и компилятор C (и такие очевидные вещи, как Busybox, bash и т. Д.) (Или Windows и компилятор), никаких дополнительных библиотек не требуется, никаких необычных огромных установок.
В результате получается одна программа, которая одновременно является веб-сервером и динамическим генератором страниц (заменяет как «apache», так и «php»), а также будет иметь доступ к базе данных через sqlite.
Использованные библиотеки:
createElement
Остальная часть этого ответа представляет собой полное руководство по настройке для Linux. И SQlite, и MiniXML не являются обязательными, но в руководстве описана полная установка. Вы можете закомментировать ненужные части, если вы заинтересованы в отключении sqlite или MiniXML.
1. Загрузите 3 библиотеки
2. Подготовьте свою папку
sqlite3.c , sqlite3.h
mongoose.c , mongoose.h
mxml.h
3. Скомпилируйте mxml
Возможно, вы заметили, что mxml.c отсутствует, потому что нам нужно создать статическую библиотеку mxml. Перейдите в папку, куда был загружен файл mxml tar.gz, и выполните:
После завершения компиляции будет создано много файлов, единственный интересующий нас
libmxml.a
файл - скопируйте этот файл в основную папку.3.1 Двойная проверка
Убедитесь, что в главной папке есть следующее:
mongoose.c, mongoose.h
libmxml.a, mxml.h
sqlite.c, sqlite.h
4. main.c
Давайте создадим саму программу, создадим
main.c
файл в главной папке, вот вам скелет для начала.Наконец, компиляция!
Давайте скомпилируем.
cd
в вашу основную папку и выполните эти:Теперь выполните server.out с помощью
/server.out
и перейдите кlocalhost:8080/hello
Выполнено :)
источник
Я предполагаю, что несколько встроенных систем (например, маршрутизаторы, принтеры, ...) имеют некоторый веб-сервер, управляемый C ++.
В частности, вы можете использовать некоторую библиотеку HTTP-сервера, такую как libonion, чтобы добавить некоторые веб-возможности в какую-либо программу на C или C ++ или разработать легкий сервер с некоторым веб-интерфейсом.
Некоторые люди кодируют свой веб-сервер или HTTP-интерфейс в Ocaml, используя Ocsigen . Не каждая вещь в Интернете - это PHP. А с FastCGI вы можете выполнять динамическую веб-обработку в вашем приложении.
источник