winforms应用添加双向web api的解决方案

Posted

技术标签:

【中文标题】winforms应用添加双向web api的解决方案【英文标题】:Solutions for adding bi-directional web api to winforms application 【发布时间】:2021-03-15 08:40:39 【问题描述】:

所以我希望这是提出这样一个问题的正确地方。我有一个通过 USB HID 与硬件交互的应用程序。这个应用程序很好地实现了它的目的,但我们一直需要向它添加一些类似“脚本”的代码片段来自动执行各种任务。

我们决定尝试向应用程序添加一个基于 Web 的 API,我们可以向其发送命令并从中接收事件。然后的想法是在 python 之类的东西中使用 GET 或 PUSH 请求来创建我们需要的这些简单的小设备测试脚本。

我的问题是这是否是正确的方法还是有更好的方法?如果这是正确的方法,我们如何处理从设备返回的需要以某种方式发送到脚本的事件?我知道您可以使用 webhook 或 SSE 之类的东西,但我对这些东西还不够熟悉,因此无法就在这种情况下使用什么做出一个好的选择。

目前我正在为内部 Web 服务器寻找像 OWIN 这样的东西,但我可能完全偏离了轨道。在这方面做了很多goolge'ing,我并没有真正看到明确的最佳或正确方法。任何建议表示赞赏。

【问题讨论】:

【参考方案1】:

这听起来与我不久前构建的应用程序非常相似。我们有 USB 现金抽屉,需要通过 Web 应用程序进行控制和监控。解决方案是构建一个可以与本地硬件交互的小型 shim 应用程序。我们使用了 ASP.NET SignalR。 https://dotnet.microsoft.com/apps/aspnet/signalr

本质上它的工作原理是本地代码和网络服务器可以有一个双向通信通道。这使 Web 服务器能够从本地运行的代码推送命令或请求数据。本地代码不需要运行 Web 服务器。事实上,只需很少的代码就可以启动并运行它。

我建议您看看 SignalR。如果您还有其他问题,请随时提问!

【讨论】:

好的,所以在这种情况下需要运行服务器然后与设备通信的应用程序是 .NET 4.6.1 应用程序。据我所知,您应该将 .NET Core 5.0 用于最新版本的 SignalR,但也有旧版本。此时更新应用程序可能是一个问题。您对如何处理这个问题有任何进一步的建议吗?

以上是关于winforms应用添加双向web api的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

webapi怎么获取视频浏览数量

C# 调用动态链接库读取二代身份证信息

winform调用webservice假死怎么解决

我可以将 Web API 和播放按钮小部件用于第 3 方 Spotify 移动应用程序吗?

在手机上运行的 Web 应用程序和服务器之间进行实时双向通信的最佳解决方案是啥?

winform 自定义控件