|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
Добрый день Есть приложение, которое ведёт историю действий и имеет список состояний на текущий момент. Хочется сделать из него чёрную коробку, которую потом по желанию разработчиков можно "обернуть", например, консольным приложением, которое сможет выдавать в консоль состояния, и передавать введённые из консоли команды. Или GUI приложением, с логом и кнопками. Имеется ввиду отдельные приложения, которые смогут общаться с этим. Приложение, типа сервис. Вопрос : как лучше сделать общение с другими процессами? Нужно возвращать данные по запросам, а так же сигнализировать о смене состояний. Т.е. общение в две стороны. Моя идея: http. Универсально. Сервис может на запрос выдавать страничку со своим состоянием. Или лог. А через post им можно управлять. Т.е. можно просто взять браузер и посмотреть. Только как-то по http можно подписаться на события? Чтобы не клиент по таймауту опрашивал сервер, а сервер сам информировал? В tcp/ip это делалось двумя сокетами, в обе стороны. А тут как? Есть какие-то готовые http-сервера для c++? Типа встроить себе в код. Последний раз интересовался этой темой лет 20 назад, тогда народ использовал WinInet. Сейчас вроде как проще, где-то вроде бы даже скачивал примерчик на работе. Какие ещё есть варианты для общения с black-box? PS: возможно понадобится портировать на линупс. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2020, 20:11 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
CEMbВ tcp/ip это делалось двумя сокетами, в обе стороны. Вообще-то для этого и одного сокета хватает. И HTTP в управлении сервисом совершенно излишен. Как и вообще сеть. Достаточно вызова QueryServiceStatus() и ControlService() с кодами 128-255, раз уж у тебя это сервис. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2020, 20:18 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
CEMb Добрый день Есть приложение, которое ведёт историю действий и имеет список состояний на текущий момент. Хочется сделать из него чёрную коробку, которую потом по желанию разработчиков можно "обернуть", например, консольным приложением, которое сможет выдавать в консоль состояния, и передавать введённые из консоли команды. Или GUI приложением, с логом и кнопками. Имеется ввиду отдельные приложения, которые смогут общаться с этим. Приложение, типа сервис. Вопрос : как лучше сделать общение с другими процессами? Нужно возвращать данные по запросам, а так же сигнализировать о смене состояний. Т.е. общение в две стороны. Моя идея: http. Универсально. Сервис может на запрос выдавать страничку со своим состоянием. Или лог. А через post им можно управлять. Т.е. можно просто взять браузер и посмотреть. Только как-то по http можно подписаться на события? Чтобы не клиент по таймауту опрашивал сервер, а сервер сам информировал? В tcp/ip это делалось двумя сокетами, в обе стороны. А тут как? Есть какие-то готовые http-сервера для c++? Типа встроить себе в код. Последний раз интересовался этой темой лет 20 назад, тогда народ использовал WinInet. Сейчас вроде как проще, где-то вроде бы даже скачивал примерчик на работе. Какие ещё есть варианты для общения с black-box? PS: возможно понадобится портировать на линупс. Если я правильно понял ваш вопрос, у вас есть полезный код, который вы хотите обернуть в API, и выбираете этот самый API. Тут у вас богатый выбор, плюс разные платформы имеют дополнительные возможности. Сорок лет назад это скорее всего был бы RPC. Лет тридцать назад вы бы обернули его в DLL и дали C-шный интерфейс. Или ActiveX/OCX. Двадцать назад могли сделать через ДКОМ. Десять лет назад - был модным Веб сервис через SOAP. У каждого метода свои преимущества и недостатки, но обычно такое решение принимают исходя из нужд потребителя. Поинтересуйтесь кто хочет пользоваться вашим функционалом, и какой интерфейс они для этого предпочитают. Их мнение важнее. Одна из проблем со встроенным веб сервером - многие корпорации запрещают слушающие порты, которые они не могут котролировать и патчить. А вдруг у вас там дырка, и хакеры ее нашли? Т.е. для многих компаний это сразу нет. Если выбирать надо прям сейчас, посмотрите на LRPC. Его потом можно задокументировать, или обернуть во что угодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2020, 20:24 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
НеофитSQL, >Десять лет назад - был модным Веб сервис через SOAP. == сейчас REST На HTTP ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2020, 20:46 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
CEMb, Что выбрать для межпроцессного взаимодействия модулей приложений? Если линукс то имхо D-Bus. Ну и потом, надо смотреть что за команды будет клиент отдавать. Чтобы удобно ему было. Ведь REST это тоже почти названия методов с параметрами sql.ru/app/api/товар/12345/цена? update=345 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2020, 21:21 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp НеофитSQL, >Десять лет назад - был модным Веб сервис через SOAP. == сейчас REST На HTTP А я так сдерживался.. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2020, 23:05 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
Можно сделать REST сервер. А клиента написать на Python для простоты. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2020, 10:22 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
А еще можно делать "подписку". Клиент ходит на сервер и спрашивает его о чем-то (да хоть стандартный HTTP). Но при нужде - клиент может сам открыть слушающий порт и сообщить серверу (по базовому протоколу): "Я хочу знать когда случатся такие-то события. Шли сообщения на мой адрес, на такой-то порт". ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2020, 16:54 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
White Owl, WebSocket называется. В любом браузере есть. https://ru.m.wikipedia.org/wiki/WebSocket#:~:text=WebSocket — протокол связи поверх TCP,сервером в режиме реального времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2020, 16:58 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
Это слишком усложняет клиента. В простейшем случае (telnet, http) консоль ведет себя в режиме диалога. Клиент спрашивает. Сервер (black-box) отвечает. WebSocket потребует отдельный канал печати сообщений. Куда их печатать в режиме простой консоли - непонятно. Если туда-же где пользователь вбивает ввод - то будет путаница. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2020, 17:02 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp White Owl, WebSocket называется. В любом браузере есть. https://ru.m.wikipedia.org/wiki/WebSocket#:~:text=WebSocket — протокол связи поверх TCP,сервером в режиме реального времени. Но это вообще-то более общий подход, не привязанный к TCP/IP. Некоторые БД (SA например) поддерживают push на этом принципе. Даже ETL на email такое делали. В общем, это довольно универсальный и удобный подход для любого сервер-клиента, если клиенту нет нужды реагировать на каждый чих сервера, а только на те которые данному клиенту интересны. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2020, 17:04 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
White Owl, Я бы разделил веб проект или десктоп. Автор как то хочет все вместе. Слишком большой оверхед если вместе. Я бы не. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2020, 17:21 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
Я-бы еще разделил задачи мониторинга и управления на разные API. Например для мониторинга приложение может выставить порт SNMP и с этого порта (теоретически можно снимать метрики загрузки) и рисовать красивые графики нагрузки, клиентов и т.п. Я не работал с SNNP на С++ но убежден что либ - навалом. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2020, 17:26 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
mayton Я-бы еще разделил задачи мониторинга и управления на разные API. Например для мониторинга приложение может выставить порт SNMP и с этого порта (теоретически можно снимать метрики загрузки) и рисовать красивые графики нагрузки, клиентов и т.п. Я не работал с SNNP на С++ но убежден что либ - навалом. ^^^^^^___ правильно. Хоббисты предпочитают бесплатный софт и с исходниками, сами допилят. А профи, если готовы платить, то им недосуг к чему-то новому привыкать. Оно должно работать с тем, что у них есть (HP Open View, MoM3, и т.д.). На правах моего мнения :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2020, 23:46 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Достаточно вызова QueryServiceStatus() и ControlService() с кодами 128-255, раз уж у тебя это сервис. НеофитSQL Лет тридцать назад вы бы обернули его в DLL и дали C-шный интерфейс. Или ActiveX/OCX. Двадцать назад могли сделать через ДКОМ. НеофитSQL Сорок лет назад это скорее всего был бы RPC. Смотрите. Если я встраиваю http-сервер в своё приложение, клиент автоматически написан - это любой браузер. Проблему с сетями мы решим, заказчик - наша же корпорация. Достаточно будет запускать браузер локально, на той же машине. Если можно будет управлять удалённо - ну вообще чудно. Можно сделать через RPC, но тогда придётся делать свой клиент, к нему UI для настройки соединения, т.е. то же своё недо-http-сервер-браузер, но сильно упрощённое и с багами. В готовом http всё уже есть. Мелкие http-сервера должны быть в природе, я помню в 2002-м примерно году я встраивал очень мелкий http-сервер с сервлетами в апплет на яве. Это сейчас всё это разрослось до вебсфер и прочих монстров. НеофитSQL А профи, если готовы платить, то им недосуг к чему-то новому привыкать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 06:42 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
CEMb, RPC есть для всех платформ. Решили делать только через браузер? Нет проблем. Вы будете поддерживать SSL/TLS? Какие версии? Минимальная/максимальная длина ключа? Http 1.0 ещё актуален? Или 1.1 хватит? Максимальное число клиентов? Защита от DOS атак? Как загружать SSL сертификат? На каком порту слушать? Можно сделать субсайтом уже существующего сайта? Какой план распространять патчи (не ваши, веб серверские) Как конфигурировать все это? Юзеры и группы, с разными правами? Единый логин? (Интеграция с керберос?) Притащить сервер - это как вовлечь самосвал. Для некоторых грузов полезно, для трёх ящиков либонов - перебор. Вариант: сделать RPC API, и простой веб сервер использующий ваш RPC. Сервер послужит демонстратор ос фич, а за ним будет твердый API для серьезных пользователей. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 08:26 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
CEMb RPC же под Линупсом есть? Или DBus ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 08:43 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
CEMb Линупс, там нет сервисов CEMb RPC мне нравится Есть удаленный по сети и есть удаленный на той же машине но в другом процессе (Unix стиль) Вам какой? Или всё сразу? Тут верно написали про кажущуюся простоту веб сервиса на 80 порту. Там вагон новых вопросов Веб проекта в отличии от Десктоп проекта. Имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 11:04 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
НеофитSQL, PetroNotC Sharp, погодити-погодити :) Мне пока надо совсем просто: зайти браузером в localhost:port/app и получить страничку с настройками от приложения. У меня сейчас рабочее приложение, которое наружу никак не торчит,но работает запускает процессы, следит за ними, ещё что-то делает. Не хочу делать GUI, не хочу делать набор команд для консоли. Хочу web-UI, сервлеты, чтоб получил post, собрал страницу и отправил. Такое можно сделать? В идеале хочу ещё сам с сервера обновлять страницу, как некоторые делают, но это вообще не обязательно. Клиент один, групп нет, конфигируровать не надо, DDoS атак не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 19:25 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
CEMbТакое можно сделать? Можно, конечно. А осилишь?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 19:35 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
CEMb, Можно))))) - создай топик Ищу код минимального веб сервера. - создай топик Ищу пример минимальной веб странички (в js ветке) Ну и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 19:47 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Можно, конечно. А осилишь?.. PetroNotC Sharp создай топик Ищу код минимального веб сервера. Ладно, всем спасибо, я нашёл небольшой сервер на плюсах ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 20:01 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
CEMb я нашёл небольшой сервер на плюсах У прогеров любимая поговорка - Слона надо есть по частям. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 22:11 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
У веб-серверов есть недостаток. Их очень легко "валить". Просто открыв несколько страничек браузера и нажимая F5 можно создать таки проблемы. Поэтому уж если брать встраиваемый то он должен быть такой-же непробиваемый как nginx или лучше не брать ничего. Старые веб-консоли роутеров Dlink/TpLink были такие уродские в своей слабости что их даже валить не надо было. Они валились и зависали от простых хождений по менюшкам. Вобщем у любого http-клиента не то чтобы слабый контракт - а скорее полное его отсутствие. И надо хоть как-то защищаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 22:23 |
|
Архитектура для black box.
|
|||
---|---|---|---|
#18+
CEMb НеофитSQL, PetroNotC Sharp, погодити-погодити :) Мне пока надо совсем просто: зайти браузером в localhost:port/app и получить страничку с настройками от приложения. У меня сейчас рабочее приложение, которое наружу никак не торчит,но работает запускает процессы, следит за ними, ещё что-то делает. Не хочу делать GUI, не хочу делать набор команд для консоли. Хочу web-UI, сервлеты, чтоб получил post, собрал страницу и отправил. Такое можно сделать? В идеале хочу ещё сам с сервера обновлять страницу, как некоторые делают, но это вообще не обязательно. Клиент один, групп нет, конфигируровать не надо, DDoS атак не будет. В этих суженных условиях, для одного клиента - нет пределов творчеству. Пароль там будет? С возможностью смены? Восстановления если забыл? Самое быстрое - конфиг в текстовом файле. Издалека расшарил кому надо, сервис замечает если файл изменился. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 22:57 |
|
|
start [/forum/topic.php?fid=57&msg=40005953&tid=2017307]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 150ms |
0 / 0 |