LINUX.ORG.RU
ФорумJob

К библиотеке на с++ добавить поддержку http server-а

 


0

2

Примерное ТЗ,с пониманием на текущий момент.
Есть библиотека(далее либа) компилируется под Debian10 и выше, есть пример ее использования. Исходники библиотеки не передаются (есть лицензионные условия ее пользования, возможно через подпись документов и можно будет передать, пока не знаю как), только заголовочные файлы, сама либа, пример ее использования,какие то доки к ней.

Либа представляет собой сервис(демон), у которого встроен интерфейс взаимодействия с внешним миром с такими же либами запущенными где то в интернете, либа должна работать в режиме 24х7. В фоне выполняет различные операции,пишет логи во время своей работы при взаимодействии с внешним миром, крутит внутренние шестренки. При первом запуске грузит много инфы с внешних серверов (10-15минут, так написано в документации).

Можно взять любой стабильный веб сервер из инета nginx или CrowCpp/Crow или другой соответствующий/подходящий для решения задачи) и внутрь его внедрить либу. Иначе можно сказать - к либе прикручиваем HTTP server и выполняем код либы с HTTP server ом в оперативке в режиме 24х7.

Mожно в main web сервера засунуть запуск библиотеки и дергать ее API.

Алгоритм работы/взаимодействия с web сервером прикрученному к либе. Отправляем web серверу POST запрос с токеном и двумя строками, сервер переформатирует запрос и вызвает метод либы. Либа умеет работать асинхронно, через передачу методу запроса и коллбека. В случае ответа либы (вызвался коллбек), пишем данные из ответа в нужном формате (TXT|CSV) в файл с именем = токену. GET запросом к серверу забираем файл с токеном.

Логи пишем на ФС - тайминги когда пришел на сервер запрос с токеном, когда либа вызвала коллбек. С Вас исходники,компоновка, (Make файл), описание как все собрать с нуля,какие зависимости, репозиторий делаем на гитлаб (к примеру). Возможно лучше (сразу) сделать в doker контейнере.

Цена договорная, предлагайте.

Могу помогать чем смогу)))

★★★★

Последнее исправление: Vlad-76 (всего исправлений: 6)

за 4ре часа можно собрать либу и web сервер

Ну пусть сделает. Или он очень занят, как раз сейчас времени нет, а то б запросто?

thesis ★★★★★
()

PS. Как мне объяснил знакомый программист за 4ре часа можно собрать либу и web сервер.

Удали эту строчку из поста, она тебе всю жизнь испортит. И никогда так не пиши больше.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от thesis

ладно уберу строчку[br] чем же она смущает только не пойму.

Vlad-76 ★★★★
() автор топика
Ответ на: комментарий от Vlad-76

Я промолчу, щас тебе и без меня объяснят =) На восприятие потенциального разработчика это сильно влияет. Ну и банально некомпетентный подход называния скоров от балды по мнению левого человека. Ты этот срок обозначил, значит на него опираешься. Не надо. Подрядчик возьмётся оценивать, оценит сроки назовёт тебе и ты уже решишь подходит тебе или нет. Или ты обозначаешь сроки сам, ибо у тебя лимит времени. А тут, а тут прозвучало то что не надо. Это у разработчика вызовет просто приступ злости от (пусть для тебя и не явной) наглости.

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

LINUX-ORG-RU ★★★★★
()

Как мне объяснил знакомый программист за 4ре часа можно собрать либу и web сервер.

В смысле компилятор будет 4 часа работать? А так-то, разобратся в самой задаче до написания кода может выйти даже больше 4 часов.

goingUp ★★★★★
()

Обычно для такого использования делают со стороны либы JSON интерфейс, методы: client_create, exec, send, read.

В этом случае уже можно цеплять любой внешний интерфейс на чём угодно (т.е. на питоне), лишь бы что угодно умело бы в shared libraries, например в питоновских терминах это ctypes.CDLL.

Можно конечно и без JSON, но лучше с ним.

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 1)
Ответ на: комментарий от goingUp

нет), уже устранили смысловой конфликт

Vlad-76 ★★★★
() автор топика

хотите смешать ежа и носорога. Не выйдет. По описанию «либа» и веб сервер немного сильно разного класса софт и вместе они не смогут быть никак.

Веб-сервер - отдаёт ответы на запросы. «Либа» 24x7 взаимодействует с другими «либами» и прочими ресурсами. Они блджатЪ устроены категорично по разному. Внутрь web-сервера вы не упихаете её никак

MKuznetsov ★★★★★
()
Последнее исправление: MKuznetsov (всего исправлений: 1)
Ответ на: комментарий от MKuznetsov

либа в одном потоке работает, сервер в другом. Работают и друг другу не мешают. ресурсов общих для конфликтов у них нет.

Vlad-76 ★★★★
() автор топика
Ответ на: комментарий от Vlad-76

будем посмотреть

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

Это rest-api сервис делается с вашей «либой» в виде демона или по запросу (хоть cgi/fast-cgi). И большой веб-сервер (rev proxy на самом деле) будет рулить туда запросы и отдавать ответы вопрошающим.

судя по постановке вопроса, срок у вас выйдет не 4 часа, а месяца 3 как минимум. С соотв.бюджетом - если задача изначально сформулирована криво, то обходится она бешеных денег.

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

Сформулировал задачу как смог. РАзработчик, будет же смотреть все окружение чтобы понять реализуемость задачи?
К nginx модули пишут? Модули к nginx в виде либы? модуль в отдельном потоке?
для задачи по идее хватит TCP или UDP сервера к этой либе. Запросы и ответы будут мизерные.
Заговорил про web сервер только потому что их много готовых, а писать парсер запросов в сервере TCP или UDP, как по мне так это дольше. Хотя как знать
Число запросов не больше 100 -150 в секунду.

Vlad-76 ★★★★
() автор топика
Последнее исправление: Vlad-76 (всего исправлений: 1)
Ответ на: комментарий от Vlad-76

Заговорил про web сервер только потому что их много готовых

С парсингом HTTP разберется даже школьник на чистых сокетах. Судя по описанному ТЗ, даже nginx здесь избыточен.

Как уже написали ранее, проще сделать бинарь а не либу, принимающий HTTP запросы и выполняющий нужную логику.

iron ★★★★★
()
Ответ на: комментарий от Vlad-76

можно в main web сервера засунуть запуск библиотеки

Зачем тебе именно библиотека? При любых изменениях ABI веб-сервера, ее нужно будет пересобирать или даже переписывать. Завязываться на какой-то веб-сервер — не лучшая идея.

iron ★★★★★
()

Могу взяться, $50/час, оптимистичная оценка 2-3 дня (20 часов), умеренно пессимистичная оценка 1 неделя (30-40 часов), более точная оценка после того, как увижу технические подробности (существующий код, API, требования к окружению исполнения), контакты в профиле.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)

Wt это же Qt для веб. Судя по документации - врядли чем поможет.

Скорее нужно смотреть в сторону restbed и тп, если нужен встраиваемый http сервер.

Есть решение проще - запускать вашу тестовую программу через lighttpd + cgi, параметры запроса будут передаваться в переменных окружения по rfc3875

Собственно из параметров вам потребуется «прикрутить» только getenv(«QUERY_STRING») ж)

zudwa
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.