|
Уведомить .exe приложение о входящем REST запросе
|
|||
---|---|---|---|
#18+
Добрый день! У меня есть rest сервис на NetCore, один из методов которого успешно кладёт некое задание в очередь. И есть вторая половина - .exe файл, который должен обрабатывать некоторые записи из этой очереди. Не могу придумать, как сделать уведомление этого .exe о том, что в очередь поступил новый запрос, и его бы надо обработать. Спрашивать ежесекундно я не хочу. В голову приходит только PostMessage в процесс .exe, но не понятно, как сделать его в вэб сервисе. Кто нибудь делал что нибудь подобное ? Есть ещё варианты уведомления ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 12:48 |
|
Уведомить .exe приложение о входящем REST запросе
|
|||
---|---|---|---|
#18+
Valery_B, А почему спрашивать ежесекундно не хотите? Оно в любом случае так и работает. В конце-концов, спрашивайте ежеминутно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 13:04 |
|
Уведомить .exe приложение о входящем REST запросе
|
|||
---|---|---|---|
#18+
Valery_B некое задание в очередь. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 15:42 |
|
Уведомить .exe приложение о входящем REST запросе
|
|||
---|---|---|---|
#18+
Valery_B Есть ещё варианты уведомления ? А именованный event в ASP.NET можно создать? Если можно - должно подойти. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 16:58 |
|
Уведомить .exe приложение о входящем REST запросе
|
|||
---|---|---|---|
#18+
Valery_B, начни использовать очередь тbпа rabbit, а не что то сделанное на коленке и таких проблем в архитектуре не будет ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 17:13 |
|
Уведомить .exe приложение о входящем REST запросе
|
|||
---|---|---|---|
#18+
автор хочет post запрос сделать или я чего то не понимаю? В чем проблема то? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 22:22 |
|
Уведомить .exe приложение о входящем REST запросе
|
|||
---|---|---|---|
#18+
Roman Mejtes автор хочет post запрос сделать или я чего то не понимаю? В чем проблема то? Без ТС можно только предполагать, у меня сложилась такая схема: [Клиенты]<->[Сервис]->[Очередь]<->[.exe] Природа очереди не известна (файлы,СУБД, что-то доступное по http или чему-то подобному), ".exe" может читать очередь, но оповещения об изменении очереди нет, использовать периодический опрос очереди ТС не хочет, поэтому интресуется способом оповестить ".exe" о появлении нового задания. Неизвестным также является физическое расположение ".exe" - на одном устройстве с сервисом они или нет, но раз была идея о PostMessage, скорее всего, на одном. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 23:20 |
|
Уведомить .exe приложение о входящем REST запросе
|
|||
---|---|---|---|
#18+
x1ca4064, Да, всё верно. Я хочу оповестить любым доступным способ .exe о том, что бы он начал что-то делать. Может как то через activex ? x1ca4064 А именованный event в ASP.NET можно создать? Если можно - должно подойти. Что это такое ? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2021, 17:07 |
|
Уведомить .exe приложение о входящем REST запросе
|
|||
---|---|---|---|
#18+
Как оказалось, я ничего нового не придумал. У меня вот такая архитектура. Только как оповестить "backend component" о новом сообщении, если этот компонент - .exe ? Поднять на нём http сервер ? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2021, 17:13 |
|
Уведомить .exe приложение о входящем REST запросе
|
|||
---|---|---|---|
#18+
Valery_B Что это такое ? Это объект синхронихации Windows, на WinAPI создается функцией CreateEventA или CreateEventW из Kernel32.dll. В .NET должны быть обертки над event'ами. Если создаете именованный евент, то он будет доступен по имени всем приложениям (на данной WinStation или на всех, если у имени будет глобальный префикс). Идея состоит в следующем: при добавлении в очередь, сервис переводит евент в сигнальное состояние, поток в exe ожидает сигнального состояние этого евента функцией WaitForXXX (или соответствующим методом обертки), забирает новое задание из очереди и возвращается в состояние ожидания. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2021, 19:43 |
|
Уведомить .exe приложение о входящем REST запросе
|
|||
---|---|---|---|
#18+
Valery_B Поднять на нём http сервер ? Тогда логично и очередь реализовать в .exe ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2021, 19:55 |
|
Уведомить .exe приложение о входящем REST запросе
|
|||
---|---|---|---|
#18+
пару лет назад, использовали rerdis под виндовс, в линуксе то это было как бы аксиоматично, а вот под виндой брали сомнения на счет устойчивости, да ничо, на циклах 20 мс. уже работает 2 года на ура и без сбоев очередь создали в редиске, растянули ее горизонтално, гденить в осло запихиваем задание а в куалумпуре выгребаем на исполнение ну это так образно, тут локалхост и тянуть не надо, да и горячий кеш под рукой, всешь серваку полегче ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2021, 22:57 |
|
Уведомить .exe приложение о входящем REST запросе
|
|||
---|---|---|---|
#18+
Где-то в степи, почему не RabbitMQ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 08:31 |
|
Уведомить .exe приложение о входящем REST запросе
|
|||
---|---|---|---|
#18+
vb_sub, ну redis мы использовали как горячий фронт для postgres, держали там быстрые регистры, сам борокер уже была побочка -как бы довесок. хотя в данном случае выбрал бы ее, ну весит себе демоном есть пить не просит, придет время и состояния туда можно запихнуть или еще чо.. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 11:58 |
|
Уведомить .exe приложение о входящем REST запросе
|
|||
---|---|---|---|
#18+
как я понял, автору надо передать сигнал из одного приложения в другое на одном ПК. Задача сама по себе сомнительная, так как проще использовать очереди сообщений, с точки зрения архитектуры. Но если сильно хочется, то 1. можно использовать семафоры, можно будет передавать сигнал, делается на коленке за 5 минут, как сделать по хорошему, я не знаю, знаю только на коленке, но всё отлично работает. При этом передать данные можно через какой то неуправляемый ресурс типа файловой системы. Создайте 2 семафора в разных процессах, один будет ожидать в цикле, другой пропускать его. https://docs.microsoft.com/ru-ru/dotnet/api/system.threading.semaphore?view=net-5.0 2. через именованные каналы, подробнее по ссылке https://docs.microsoft.com/ru-ru/dotnet/standard/io/how-to-use-named-pipes-for-network-interprocess-communication Но это всё колхоз, есть куча других способов для interprocess-communication ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 13:05 |
|
Уведомить .exe приложение о входящем REST запросе
|
|||
---|---|---|---|
#18+
по-моему здесь решений море Приложение "A"-инициатор обработки(тот который кладет некое задание в очередь). Приложение "B"-обработчик заданий. Делаешь "B" AspCore WebApi c одним контроллером и HttpGet Action, в котором лежит метод обработки сообщений. Когда тебе из приложения А нужно сказать приложению B, чтобы он обработал задания, то просто посылаешь http-запрос через httpClient. И в качестве транспорта выбирай, что больше нравится http, signalr,grpc. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 13:25 |
|
|
start [/forum/topic.php?fid=18&msg=40106443&tid=1354479]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
95ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 272ms |
total: | 461ms |
0 / 0 |