Как обмениваться данными между ASP.NET и настольным приложением? - PullRequest
0 голосов
/ 05 октября 2018

У меня (возможно, нет, ups) простой вопрос об обмене данными между этими двумя платформами: ASP.NET и настольным приложением (лучше всего подходит для моей идеи WinForm, но также может быть консольным).

MyМой проект:

  1. Приложение ASP.NET Core MVC
  2. Настольное приложение для общих COM-портов

У меня есть встроенная система [STM32] Виртуальный COM, поэтому я хочу только отправлять / получать данные из этого и отправлять / получать заказы с сервера

Отправлять заказы через POST / GET и т. д. легко, я знаю .. Но!Я понятия не имею, как отправлять заказы в мое настольное приложение без вмешательства пользователя.

Я открываю это приложение только в фоновом режиме и что я говорю «только для общего порта»

1 Ответ

0 голосов
/ 05 октября 2018

Есть множество альтернатив, которые вы могли бы использовать для достижения этой цели.Как правило, это называется межпроцессное взаимодействие (IPC).

Из всех подходов я считаю встраивание веб-сервера в приложение Winforms наиболее гибким и простым решением, но имейте в виду, что это мой личный выбор.Я постараюсь дать вам другие возможные решения в этом посте:

1.Встроить сервер в ваше приложение Winforms

Это мой личный выбор.Вы можете углубиться в эту тему, ища больше о встраивании HTTP-сервера в Winforms, но вот несколько ссылок, которые могут дать указание на это:

Используя этот подход, выВ итоге получится полноценное приложение AspNet и легкое веб-приложение, которое напрямую интегрируется с кодом рабочего стола.Вы интегрируете эти два, как если бы вы интегрировали два веб-сервера: используя HTTP-вызовы и т. Д.

2 - Именованные каналы и TCP

Именованные каналы очень интересны, но вы должны тщательно выбратьмежду ними или TCP, так как у каждого есть свои плюсы и минусы.Вы можете найти пример Names Pipe / TCP здесь: https://github.com/jacqueskang/IpcServiceFramework

Для получения дополнительной информации об именованных каналах x tcp за и против, я нашел этот пост действительно полезным: http://saurabhsinhainblogs.blogspot.com/2015/09/what-is-difference-between-tcp-ip-and-Named-Pipes.html

3 - Очереди сообщений

Я как серебряная пуля.Огромная и тяжелая серебряная пуля, но все же серебряная пуля.Это прекрасно работает, в основном, с любым типом межпроцессного взаимодействия, поскольку у вас будет третий игрок, отвечающий за получение и передачу сообщений, и оба игрока (сервер / клиент) будут прослушивать или публиковать в этой очереди.Вы можете проверить NetMQ , RabbitMQ , MSMQ , RestBus , ActiveMQ , ZeroMQ или вы можете даже создать свой собственный, например, на основе SQL Server (хотя я бы не рекомендовал этого, если вы действительно не уверены в том, что делаете).

4 - Другие

У вас есть сокеты, файлы (с автоматическим контролем физической файловой системы) и множество других возможных подходов для выполнения интеграции без взаимодействия с пользователем.Даже если я приведу здесь 20 других подходов, скорее всего, будет пропущен один или два других.Просто найдите AspNet Core Interprocess Communication, и вы найдете множество ресурсов об этом:)

Некоторые другие полезные ресурсы:

В этом посте есть надежная подборка ссылок, которая поможет вам на каждом этапе IPC.может пожелать проверить: https://weblogs.asp.net/ricardoperes/local-machine-interprocess-communication-with-net

...