如何在ASP.NET和桌面应用之间交换数据?

时间:2018-10-05 12:11:19

标签: c# asp.net-core desktop-application

关于(ASP.NET和桌面应用程序)这两个平台之间的数据交换,我有一个简单的问题(也许不是,不是)(对于我的想法,最佳选择是WinForm,但也可以是控制台)。

我脑海中的项目:

  1. ASP.NET Core MVC应用程序
  2. 用于共享COM端口的桌面应用程序

我在Virtual COM上嵌入了系统[STM32],所以我只想从中发送/获取数据,并从服务器发送/获取订单

通过POST / GET等发送订单很容易,我知道..但是!我不知道如何在没有用户干预的情况下将订单发送到我的桌面应用程序。

我仅在后台打开此应用,并说“仅用于共享端口”

1 个答案:

答案 0 :(得分:0)

您可以使用许多替代方法来完成此任务。作为一般领域,这称为进程间通信(IPC)。

从所有方法来看,我发现将Web服务器嵌入到Winforms应用程序中是最灵活,更轻松的方法,但是请记住,这是我个人的选择。不过,我会在这篇文章中尝试为您提供其他可能的解决方案:

1。在您的Winforms应用程序中嵌入服务器

这是我个人的选择。您可以通过搜索有关将HTTP服务器嵌入Winforms的更多信息来深入了解此主题,但是以下一些链接可能对此提供了指导:

使用这种方法,您将得到一个完整的AspNet应用程序和一个与桌面代码直接集成的轻量级Web应用程序。您将像集成两个Web服务器一样集成这两个:使用HTTP调用等。

2-命名管道和TCP

命名管道非常有趣,但是您应该在它们之间进行选择,或者在TCP通讯之间进行选择,因为它们各有利弊。 您可以在此处找到名称管道/ 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-消息队列

我就像银弹。巨大而沉重的银色子弹,但仍然是银色子弹。在几乎任何类型的进程间通信中,这种方法都可以正常工作,因为您将由第三个参与者负责接收和发送消息,并且两个参与者(服务器/客户端)都将侦听或发布到此队列。 您可以检查NetMQRabbitMQMSMQRestBusActiveMQZeroMQ,甚至可以基于SQL Server构建自己的数据库实例(尽管除非您真的确定自己在做什么,否则我不建议您这样做)。

4-其他

您具有套接字,文件(具有自动监视物理文件系统)和许多其他可能的方法,无需用户干预即可执行集成。即使我在这里使用其他20种方法,也很可能会错过另外一两种方法。只需搜索AspNet Core Interprocess Communication,您就会发现很多有关此的资源:)

一些其他有用的资源:

这篇文章有可靠的liks汇编,可帮助您测试每种IPC方法:https://weblogs.asp.net/ricardoperes/local-machine-interprocess-communication-with-net