Как стать автором
Обновить

Комментарии 19

Шаблоны — это круто, и позволяют существенно меньше кода писать в некоторых случаях, экономя усилия по сравнению с другими языками. Но использование шаблонов только ради шаблонов работает наоборот — кода больше, размер генерируемого кода больше, читаемость хуже. Именно из-за этого столько холиваров, и всякие радикалы предлагают обходиться без шаблонов вообще.

В http клиенте все же лучше без шаблонов обходиться и не дискредитировать этот отличный инструмент языка. Вы это даже сами понимаете, судя по вашим осторожным оговоркам. Имхо.
А какие кстати есть хорошие реализации http серверов на С++? Или даже не http серверов, а CGI/FastCGI фреймворков, которые работают через штатные apache или nginx, установленные на сервере?
а CGI/FastCGI фреймворков
Вот не подскажу. Да и непонятно, зачем для написания CGI, например, иметь целый фреймворк…
cppcms — одно время игрался — очень интересная штука — за вечер сайт с регистрацией и блогом ( с комментариями, модерацией, тегами и прочими мелочами ) сделал. также kore — не игрался, но по документации вполне мощный аппарат.

Я два года назад искал, всё могло поменяться. На тот момент был proxygen от facebook и сервер от микрософта, забыл название.

proxygen, AFAIK, это фреймворк с полноценной реализацией встраиваемого http-сервера.

Сервер от Микрософта — это, скорее всего, C++ REST SDK. Опять же, это полноценный встраиваемый http-сервер. Но с никакой (на данный момент) производительностью под Unix-ами (это вроде как даже сами разработчики в обсуждениях на reddit-е подтверждали).
Fastcgi Daemon — фреймворк с открытым исходным кодом, разработанный в Яндексе и предназначенный для создания высоконагруженных FastCGI-приложений на C++.

Статья Веб-приложение на C++, или укрощение демона FastCGI.
append_header(restinio::http_field::content_type, "test/plain; charset=utf-8");

test/plain, а не text/plain это опечатка?

Опечатка, спасибо.
>>И нам время от времени приходилось создавать HTTP-точки входа в C++ компоненты.
А не дешевле было написать Node.JS плагин и потом обвязку на JavaScript?

Т.е. хочется знать, почему решили именно в плюсовом коде работать с сетью?
А не дешевле было написать Node.JS плагин и потом обвязку на JavaScript?
AFAIK, это выгодно делать в случае, когда на C++ пишется какой-то «тяжелый» вычислительный код, необходимый Web-приложению. Но даже и в таких ситуациях не всем нравится сопрягать Node.JS и C++.

Т.е. хочется знать, почему решили именно в плюсовом коде работать с сетью?
Чаще всего это были задачи, когда уже есть работающий C++ компонент, к которому нужно присобачить HTTP-вход для того, чтобы этот компонент научился работать с внешним миром по какому-нибудь REST-у или XML-RPC. Тут (в наших условиях) было бы проще встроить http-вход прямо в C++ный компонент, нежели приделывать сбоку что-то вроде Node.JS.
Во-вторых, кое-кого из нас, видимо, сильно покусал Александреску. И это до сих пор сказывается, хотя времени с тех пор прошло уже немало.

Если посмотреть на эту фотографию, то неудивительно, что он мог покусать:
image
В вашем репозитории не нашел cmake-finder-а для вашей библиотеки. Общепринятым подходом является поставлять либу с Finde.cmake скриптом. Рекомендую добавить его
У нас CMake не основная система сборки, так что косяки в поддержке CMake возможны.
Видимо, поддержку поиска RESTinio через CMake мы добавим когда будем опакечивать RESTinio для vcpkg и conan-а.
А раз так, то какой смысл отказываться от C++ных шаблонов или ограничивать себя в их использовании? Мы такого смысла не видим, поэтому и задействуем шаблоны в реализации RESTinio настолько активно, насколько это нам позволяет здравый смысл

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

Если это трехэтажные шаблоны, то какова, интрересно, этажность tuple или call.

Этажность tuple и call не видна пользователю.

А вообще было бы хорошо, если бы вы развернули свою мысль, а то осталось непонятно, что вы сказать хотели.

Посмотрел код на битбакете. Вы правы, шаблонов тоже много.
Но субъективно, tuple выглядит какой-то жуткой магией, а тут понятно, что происходит.
Возможно из-за того, что оформление лучше.

Но субъективно, tuple выглядит какой-то жуткой магией, а тут понятно, что происходит.
Ну мы еще в самом начале. Со временем код проще не станет :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории