powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Архитектура для black box.
25 сообщений из 31, страница 1 из 2
Архитектура для black box.
    #40005952
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день

Есть приложение, которое ведёт историю действий и имеет список состояний на текущий момент. Хочется сделать из него чёрную коробку, которую потом по желанию разработчиков можно "обернуть", например, консольным приложением, которое сможет выдавать в консоль состояния, и передавать введённые из консоли команды. Или GUI приложением, с логом и кнопками. Имеется ввиду отдельные приложения, которые смогут общаться с этим.

Приложение, типа сервис.
Вопрос : как лучше сделать общение с другими процессами? Нужно возвращать данные по запросам, а так же сигнализировать о смене состояний. Т.е. общение в две стороны.

Моя идея: http. Универсально. Сервис может на запрос выдавать страничку со своим состоянием. Или лог. А через post им можно управлять. Т.е. можно просто взять браузер и посмотреть.
Только как-то по http можно подписаться на события? Чтобы не клиент по таймауту опрашивал сервер, а сервер сам информировал? В tcp/ip это делалось двумя сокетами, в обе стороны. А тут как?

Есть какие-то готовые http-сервера для c++? Типа встроить себе в код. Последний раз интересовался этой темой лет 20 назад, тогда народ использовал WinInet. Сейчас вроде как проще, где-то вроде бы даже скачивал примерчик на работе.

Какие ещё есть варианты для общения с black-box?

PS: возможно понадобится портировать на линупс.
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40005953
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbВ tcp/ip это делалось двумя сокетами, в обе стороны.

Вообще-то для этого и одного сокета хватает. И HTTP в управлении сервисом совершенно
излишен. Как и вообще сеть. Достаточно вызова QueryServiceStatus() и ControlService() с
кодами 128-255, раз уж у тебя это сервис.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40005954
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CEMb
Добрый день

Есть приложение, которое ведёт историю действий и имеет список состояний на текущий момент. Хочется сделать из него чёрную коробку, которую потом по желанию разработчиков можно "обернуть", например, консольным приложением, которое сможет выдавать в консоль состояния, и передавать введённые из консоли команды. Или GUI приложением, с логом и кнопками. Имеется ввиду отдельные приложения, которые смогут общаться с этим.

Приложение, типа сервис.
Вопрос : как лучше сделать общение с другими процессами? Нужно возвращать данные по запросам, а так же сигнализировать о смене состояний. Т.е. общение в две стороны.

Моя идея: http. Универсально. Сервис может на запрос выдавать страничку со своим состоянием. Или лог. А через post им можно управлять. Т.е. можно просто взять браузер и посмотреть.
Только как-то по http можно подписаться на события? Чтобы не клиент по таймауту опрашивал сервер, а сервер сам информировал? В tcp/ip это делалось двумя сокетами, в обе стороны. А тут как?

Есть какие-то готовые http-сервера для c++? Типа встроить себе в код. Последний раз интересовался этой темой лет 20 назад, тогда народ использовал WinInet. Сейчас вроде как проще, где-то вроде бы даже скачивал примерчик на работе.

Какие ещё есть варианты для общения с black-box?

PS: возможно понадобится портировать на линупс.


Если я правильно понял ваш вопрос, у вас есть полезный код, который вы хотите обернуть в API, и выбираете этот самый API.

Тут у вас богатый выбор, плюс разные платформы имеют дополнительные возможности.

Сорок лет назад это скорее всего был бы RPC.
Лет тридцать назад вы бы обернули его в DLL и дали C-шный интерфейс. Или ActiveX/OCX.
Двадцать назад могли сделать через ДКОМ.
Десять лет назад - был модным Веб сервис через SOAP.

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

Одна из проблем со встроенным веб сервером - многие корпорации запрещают слушающие порты, которые они не могут котролировать и патчить. А вдруг у вас там дырка, и хакеры ее нашли? Т.е. для многих компаний это сразу нет.

Если выбирать надо прям сейчас, посмотрите на LRPC. Его потом можно задокументировать, или обернуть во что угодно.
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40005957
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,
>Десять лет назад - был модным Веб сервис через SOAP.
== сейчас REST На HTTP
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40005960
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb,

Что выбрать для межпроцессного взаимодействия модулей приложений?
Если линукс то имхо D-Bus.
Ну и потом, надо смотреть что за команды будет клиент отдавать.
Чтобы удобно ему было.
Ведь REST это тоже почти названия методов с параметрами
sql.ru/app/api/товар/12345/цена? update=345
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40005975
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
НеофитSQL,
>Десять лет назад - был модным Веб сервис через SOAP.
== сейчас REST На HTTP


А я так сдерживался.. :)
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40006042
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно сделать REST сервер. А клиента написать на Python для простоты.
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40006301
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще можно делать "подписку".
Клиент ходит на сервер и спрашивает его о чем-то (да хоть стандартный HTTP).
Но при нужде - клиент может сам открыть слушающий порт и сообщить серверу (по базовому протоколу): "Я хочу знать когда случатся такие-то события. Шли сообщения на мой адрес, на такой-то порт".
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40006305
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40006306
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это слишком усложняет клиента. В простейшем случае (telnet, http) консоль ведет себя
в режиме диалога. Клиент спрашивает. Сервер (black-box) отвечает.

WebSocket потребует отдельный канал печати сообщений. Куда их печатать в режиме
простой консоли - непонятно. Если туда-же где пользователь вбивает ввод - то будет
путаница.
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40006308
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
White Owl,
WebSocket называется. В любом браузере есть.
https://ru.m.wikipedia.org/wiki/WebSocket#:~:text=WebSocket — протокол связи поверх TCP,сервером в режиме реального времени.
Ну, да. Есть такое.
Но это вообще-то более общий подход, не привязанный к TCP/IP.
Некоторые БД (SA например) поддерживают push на этом принципе.
Даже ETL на email такое делали.

В общем, это довольно универсальный и удобный подход для любого сервер-клиента, если клиенту нет нужды реагировать на каждый чих сервера, а только на те которые данному клиенту интересны.
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40006317
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,
Я бы разделил веб проект или десктоп.
Автор как то хочет все вместе.
Слишком большой оверхед если вместе. Я бы не.
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40006321
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я-бы еще разделил задачи мониторинга и управления на разные API.
Например для мониторинга приложение может выставить порт SNMP
и с этого порта (теоретически можно снимать метрики загрузки) и рисовать
красивые графики нагрузки, клиентов и т.п. Я не работал с SNNP
на С++ но убежден что либ - навалом.
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40006415
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Я-бы еще разделил задачи мониторинга и управления на разные API.
Например для мониторинга приложение может выставить порт SNMP
и с этого порта (теоретически можно снимать метрики загрузки) и рисовать
красивые графики нагрузки, клиентов и т.п. Я не работал с SNNP
на С++ но убежден что либ - навалом.


^^^^^^___ правильно.

Хоббисты предпочитают бесплатный софт и с исходниками, сами допилят.
А профи, если готовы платить, то им недосуг к чему-то новому привыкать.
Оно должно работать с тем, что у них есть (HP Open View, MoM3, и т.д.).

На правах моего мнения :)
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40014700
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Достаточно вызова QueryServiceStatus() и ControlService() с
кодами 128-255, раз уж у тебя это сервис.
Был план отказаться от сервиса (и он воплощён в жизнь уже). В перспективе возможен Линупс, там нет сервисов

НеофитSQL
Лет тридцать назад вы бы обернули его в DLL и дали C-шный интерфейс. Или ActiveX/OCX.
Двадцать назад могли сделать через ДКОМ.
хочется отказаться от Windows-технологий по максимуму.
НеофитSQL
Сорок лет назад это скорее всего был бы RPC.
RPC же под Линупсом есть? RPC мне нравится, но для него надо будет писать отдельный клиент.

Смотрите.

Если я встраиваю http-сервер в своё приложение, клиент автоматически написан - это любой браузер. Проблему с сетями мы решим, заказчик - наша же корпорация. Достаточно будет запускать браузер локально, на той же машине. Если можно будет управлять удалённо - ну вообще чудно. Можно сделать через RPC, но тогда придётся делать свой клиент, к нему UI для настройки соединения, т.е. то же своё недо-http-сервер-браузер, но сильно упрощённое и с багами. В готовом http всё уже есть. Мелкие http-сервера должны быть в природе, я помню в 2002-м примерно году я встраивал очень мелкий http-сервер с сервлетами в апплет на яве. Это сейчас всё это разрослось до вебсфер и прочих монстров.

НеофитSQL
А профи, если готовы платить, то им недосуг к чему-то новому привыкать.
я готов привыкать ко всему новому (и хорошему), но цель сейчас - сделать универсально, быстро и удобно. Приоритеты именно в таком порядке. И забыть про это
есть ещё куча интересных дел, которыми охота заняться
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40014708
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CEMb,

RPC есть для всех платформ.

Решили делать только через браузер?
Нет проблем.

Вы будете поддерживать SSL/TLS? Какие версии?
Минимальная/максимальная длина ключа?
Http 1.0 ещё актуален? Или 1.1 хватит?
Максимальное число клиентов?
Защита от DOS атак?
Как загружать SSL сертификат?
На каком порту слушать?
Можно сделать субсайтом уже существующего сайта?
Какой план распространять патчи (не ваши, веб серверские)
Как конфигурировать все это?
Юзеры и группы, с разными правами?
Единый логин? (Интеграция с керберос?)

Притащить сервер - это как вовлечь самосвал.
Для некоторых грузов полезно, для трёх ящиков либонов - перебор.

Вариант: сделать RPC API, и простой веб сервер использующий ваш RPC. Сервер послужит демонстратор ос фич, а за ним будет твердый API для серьезных пользователей.
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40014713
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb
RPC же под Линупсом есть?
UNIX сигналы для межпроцессного взаимодействия.
Или
DBus
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40014763
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb
Линупс, там нет сервисов
они просто называются другим словом - демоны.

CEMb
RPC мне нравится

Есть удаленный по сети и есть удаленный на той же машине но в другом процессе (Unix стиль)
Вам какой? Или всё сразу?
Тут верно написали про кажущуюся простоту веб сервиса на 80 порту.
Там вагон новых вопросов Веб проекта в отличии от Десктоп проекта.
Имхо
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40015014
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL, PetroNotC Sharp, погодити-погодити :)

Мне пока надо совсем просто: зайти браузером в localhost:port/app и получить страничку с настройками от приложения. У меня сейчас рабочее приложение, которое наружу никак не торчит,но работает запускает процессы, следит за ними, ещё что-то делает. Не хочу делать GUI, не хочу делать набор команд для консоли. Хочу web-UI, сервлеты, чтоб получил post, собрал страницу и отправил. Такое можно сделать?
В идеале хочу ещё сам с сервера обновлять страницу, как некоторые делают, но это вообще не обязательно.
Клиент один, групп нет, конфигируровать не надо, DDoS атак не будет.
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40015019
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbТакое можно сделать?

Можно, конечно. А осилишь?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40015023
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb,
Можно)))))
- создай топик Ищу код минимального веб сервера.
- создай топик Ищу пример минимальной веб странички (в js ветке)
Ну и т.д.
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40015035
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Можно, конечно. А осилишь?..
Да
PetroNotC Sharp
создай топик Ищу код минимального веб сервера.
Смишно

Ладно, всем спасибо, я нашёл небольшой сервер на плюсах
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40015074
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb
я нашёл небольшой сервер на плюсах
ну вот.
У прогеров любимая поговорка - Слона надо есть по частям.
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40015081
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У веб-серверов есть недостаток. Их очень легко "валить". Просто открыв несколько страничек браузера
и нажимая F5 можно создать таки проблемы. Поэтому уж если брать встраиваемый то он должен быть
такой-же непробиваемый как nginx или лучше не брать ничего. Старые веб-консоли роутеров Dlink/TpLink
были такие уродские в своей слабости что их даже валить не надо было. Они валились и зависали
от простых хождений по менюшкам.

Вобщем у любого http-клиента не то чтобы слабый контракт - а скорее полное его отсутствие. И надо
хоть как-то защищаться.
...
Рейтинг: 0 / 0
Архитектура для black box.
    #40015096
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CEMb
НеофитSQL, PetroNotC Sharp, погодити-погодити :)

Мне пока надо совсем просто: зайти браузером в localhost:port/app и получить страничку с настройками от приложения. У меня сейчас рабочее приложение, которое наружу никак не торчит,но работает запускает процессы, следит за ними, ещё что-то делает. Не хочу делать GUI, не хочу делать набор команд для консоли. Хочу web-UI, сервлеты, чтоб получил post, собрал страницу и отправил. Такое можно сделать?
В идеале хочу ещё сам с сервера обновлять страницу, как некоторые делают, но это вообще не обязательно.
Клиент один, групп нет, конфигируровать не надо, DDoS атак не будет.


В этих суженных условиях, для одного клиента - нет пределов творчеству. Пароль там будет? С возможностью смены? Восстановления если забыл?

Самое быстрое - конфиг в текстовом файле.
Издалека расшарил кому надо, сервис замечает если файл изменился.
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Архитектура для black box.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]