从 web-> web api-> 控制台应用程序再返回的最佳通信方式是啥?

Posted

技术标签:

【中文标题】从 web-> web api-> 控制台应用程序再返回的最佳通信方式是啥?【英文标题】:What is the best way of communicating from web->web api->console app and back again?从 web-> web api-> 控制台应用程序再返回的最佳通信方式是什么? 【发布时间】:2015-09-13 19:32:08 【问题描述】:

我正在启动一个小代码项目来学习这个过程,但我不确定在不同部分之间进行交流的最佳方式是什么。

首先,我有一个纯 html/js 客户端,用户需要经常在其中获取实时更新。 其次,我正在考虑运行一个 Web api 应用程序来提供数据。 第三,我有一个控制台应用程序正在运行,它需要与 Web api 应用程序通信。

所以我正在考虑从客户端->web api->控制台应用程序一直使用 WebSockets,但我无法让它工作。我可以让控制台应用程序作为服务器工作,但我不知道如何让 Web api 作为客户端工作,以便在它启动时创建与控制台应用程序的连接,并保持打开状态以进行通信,同时它根据请求将数据传递给客户端。

我尝试了不同的实现,最终使用了 SignalR,因为这似乎是人们今天使用的 :)

由于我在连接时遇到了所有这些问题,我想知道是否有更好的方法来发送数据以满足我的要求? 如果 WebSocket(使用 SignalR)是可行的方法,您能否提供一些带有工作示例的链接?我已经尝试了谷歌的所有***链接,但没有成功^^

提前致谢

【问题讨论】:

【参考方案1】:

您的 WebAPI 项目也可以充当 WebSocket 服务器。检查使用IHttpHandler 的this link,但您也可以在WebAIP 的控制器中执行此操作:Using WebSockets with ASP.NET Web API

控制台应用程序应作为客户端连接,例如使用ClientWebSocket class。

WebSockets 是持久的全双工连接,因此一旦客户端连接,两端就可以将信息推送到另一端。

【讨论】:

谢谢。我明天回家看看。我看到我以前访问过这些链接,但我会再试一次。感谢您的输入:) 我会接受这个答案,因为我正朝着正确的方向前进。没有一个链接实际上提供了完整的故事,但有些元素很好,比如 IHttpHandler 和使用 Web API 应用程序作为唯一的服务器。解决我的问题的是关于 PluralSight 的一个非常棒的教程,称为 SignalR Introduction。他会指导您完成所有必要的步骤,我现在有一个工作示例:) SignalR 适用于小型应用程序,但它在可扩展性方面有很多限制;)在他们关于“Scaling Out”的文档中进行了解释。

以上是关于从 web-> web api-> 控制台应用程序再返回的最佳通信方式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

从 Web API 调用中获取模型属性的值

从 Web API 中的通用列表返回 Json

如何从 Laravel 8 中的自定义 Web 路由中删除“api/”前缀?

无法验证从 Azure AD 获得的访问令牌签名以保护 Web API

Canvas - Web API

Web Api 返回空响应