Кодирование сайта на C? - PullRequest
6 голосов
/ 03 марта 2009

Я только что прочитал страницу http://www.meebo.com/ О нас и прочитал эту строку: «плюс, мы одни из немногих, кто еще использует C!»

Учитывая, что meebo является клиентом онлайн-чата, как они работают с C? Как они могут использовать C для бэкэнда? Как это взаимодействует с внешним интерфейсом? Например, предположим, что пользователь создает новую учетную запись, и должен быть создан новый каталог, как информация передается от внешнего интерфейса к внутреннему?

Извините, если это неверный вопрос.

Спасибо

Редактировать 1: Введение в CGI было великолепным. Любые хорошие книги, которые я могу взять из моей библиотеки по этому поводу?

Большое спасибо за быстрый ответ, ребята!

Ответы [ 5 ]

9 голосов
/ 03 марта 2009

Я не знаю, как meebo это делает, но, учитывая, что это программное обеспечение для чата, они, вероятно, имеют собственный сервер, написанный на C, для обработки фактического трафика сообщений.

Однако Apache и большинство других HTTP-серверов всегда могли вызывать программы на C так же, как они могут вызывать PHP, CGI и другие языки для определенных запросов. Некоторые сайты даже написаны на Лиспе.

Бэкэнд должен быть скомпилирован каждый раз, в отличие от интерпретируемого языка, но это происходит при развертывании и является частью сценариев сборки / производства.

Необходимо тщательно выбирать предоставляемые разрешения и учетную запись пользователя, под которой запускается программа C, и, конечно же, веб-сайт C страдает от тех же проблем, которые могут возникнуть в любой другой программе C, таких как переполнение буфера, segfault, stackoverflow и т. Д. Пока вы запускаете его с ограниченными разрешениями, вы лучше защищены, и это не хуже, чем любой другой язык / платформа / архитектура.

Однако для серверов он все еще широко используется - наверное, золотой стандарт. Вы можете найти множество серверов, написанных на Java, C ++ и на любом другом языке, но C, кажется, только и остается.

-Adam

3 голосов
/ 03 марта 2009

Я свернул неблокирующие серверы HTTP 1.1 всего за 50 строк кода (разреженно) или за несколько сотен (лучше), примерно до 5 тыс. (Безопасно). Серверы будут загружать динамические общие объекты в виде модулей для обработки определенных видов запросов.

Родительский код будет обрабатывать отслеживание соединений, сохранять живые данные, запросы GET / POST / HEAD и передавать их обработчикам, которые были загружены при запуске. Я делал это, когда работал с ОЧЕНЬ маленькой комнатой для врезки на встроенных устройствах, которые должны были иметь какую-то панель управления на базе веб-сети ... в частности, устройство, которое контролировало розетки питания.

Точка входа в каждый DSO определяется URL-адресом и используемым методом (т.е. / foo ведет себя по-разному в зависимости от типа запроса, который он обслуживает).

Мой маленький сервер работал довольно хорошо, мог обрабатывать около 150 клиентов без разветвлений или потоков и даже имел симпатичную небольшую систему шаблонов, поэтому пользователи UI могли изменять страницы без необходимости держать их в руках.

Я бы определенно не использовал этот вид настройки на любом производственном сайте, даже на вашей основной домашней странице hello world с гостевой книгой.

Теперь, если все, что мне нужно сделать, это прослушивать порт 80/443, принимать запросы с небольшой полезной нагрузкой POST, обрабатывать их и пересылать их другим клиентам ... это немного по-другому. Но это сервер для конкретной задачи который притворяется веб-сервером, он не использует C для создания динамических страниц.

3 голосов
/ 03 марта 2009

Meebo использует пользовательский модуль Lighttpd под названием mod_meebo . Он не полностью отвечает на ваш вопрос, но я подумал, что вам это может быть интересно.

2 голосов
/ 03 марта 2009

На C можно выполнить множество серверных программ, не говоря уже о CGI-программировании . Они также могут быть Использование C с MySQL , что очень возможно. Но без доступа к их исходному коду мы не сможем узнать, сколько C они используют.

Утверждать, что они "одни из немногих, кто все еще использует C", было, вероятно, просто шуткой. С такой статистикой, как this по крайней мере я бы на это надеялся.

-John

1 голос
/ 03 марта 2009

Вы можете увидеть хороший пример веб-сайта на C с исходным кодом: fossil .

Он использует SQLite для серверной части.

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