将 .net 远程处理替换为 WEB API、WCF、SignalR 或 Akka.net

Posted

技术标签:

【中文标题】将 .net 远程处理替换为 WEB API、WCF、SignalR 或 Akka.net【英文标题】:Replacing .net remoting to either WEB API, WCF, SignalR or Akka.net 【发布时间】:2018-03-01 09:17:47 【问题描述】:

我有一个通过 .net 远程处理与 widnows 服务通信的 Web 应用程序。这些应用程序位于同一台服务器上并且工作正常。 Web 应用程序有一个按钮,可触发使用 .net 远程处理在 Windows 服务中启动功能。 现在我们要将 Web 应用程序放在云上,而 Windows 服务将在客户端,两者之间的通信将由 Web API 进行。我们只需要相同的功能来触发 Windows 服务中的功能。你能建议我什么是最好的解决方案吗?我可以使用以下选项之一吗?

Web API(我已经在这两个应用程序之间使用)。 WCF(同时维护两个服务可能会更痛苦)。 SignalR(它是用于我的场景的选项吗?) Akka.net(我听说我的一位同事说这也是一种选择)。

请给我最好的解决方案,并提供一个例子。

谢谢。

【问题讨论】:

【参考方案1】:

Web Api 是一个不错的选择。如果您需要在客户端实时更新数据(Windows 服务),您可以将 signalR 与 web api 一起使用。

【讨论】:

【参考方案2】:

Akka.Remote 是一个简单的工具,您可以使用它来替换相同的功能,而无需自己编写序列化或连接管理位。它应该开箱即用。这是一个示例:https://github.com/akkadotnet/akka.net/tree/dev/src/examples/Chat

【讨论】:

您好 Aaronontheweb,我对 Akka 知之甚少,但我按照链接创建了一个运行良好的示例应用程序。还有几件事我需要澄清。 - 如果我在 Azure 上部署我的 Web API 并将客户端应用程序保留在客户端计算机上,这会正常工作吗? - 一旦收到并处理了消息,我可以从客户那里得到确认吗?请建议。谢谢。 是的,您可以 - 您只需将回复发送回线路另一端的远程参与者。尽管对于客户端-服务器类型的应用程序 Akka.Remote 可能不是最佳选择,因为它旨在帮助形成对等网络,因此它需要在连接的两端打开一个入站端点。如果您将软件部署到客户的机器上,这可能会很棘手。

以上是关于将 .net 远程处理替换为 WEB API、WCF、SignalR 或 Akka.net的主要内容,如果未能解决你的问题,请参考以下文章

.Net 远程处理与 WCF

远程连接到 .net core 自托管 web api

.net core3.1 web api中使用newtonsoft替换掉默认的json序列化组件

使用 Web Audio API 和 Wrtc 进行远程音频处理

远程 API/Web 服务层 MVC 的域逻辑和数据访问

ASP.NET 4.5 Web API 2.0,JWT 消息处理程序将状态 0 返回到 Angular 7 HTTP 拦截器