Net.Sockets、WCF 或 ASP.NET 进行实时聊天

Net.Sockets, WCF or ASP.NET for a real-time chat

我想实现我的想法,开发一个具有 client/server 端的应用程序并将客户端连接到服务器,以便它们能够实时传输消息。

所以我将使用 C# 进行开发,但问题是:我应该使用什么?我不知道那种聊天方式会更好。 我需要在 Net.Sockets、WCF 和 ASP.NET 之间做出选择。所以我请你帮我选择。如果我使用 ASP.NET,我将不得不使用 selfhost 的东西,因为我不想创建一个站点,或者类似的东西来使用聊天。

首先,让我们从您的变体开始

  1. Net.Sockets等级太低。很难制定可接受的协议。但您可以使用现有协议 - WebSockets。有一个教程如何在 c# 上编写 websocket 服务器:https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_server

  2. 可能的话,如果你选择WCF,你可以尝试使用WCF双工持久连接over netTcpBinding。制作自托管 WCF 服务很容易。但是 WCF 很复杂,我认为它对于简单的任务来说是很大的开销。另外,据我所知,双工连接通过使用长轮询来工作,这会浪费大量资源。请谨慎选择此变体。

  3. ASP.NET。如果你在谈论 MVC 或 Web Api 你应该使用长轮询,这会浪费大量资源并且不是实时的

还有另一种变体 - ASP.NET SignalR(使用 WebSockets 工作)

  1. 这里可以看看client的写法:https://github.com/SignalR/SignalR/wiki/SignalR-Client
  2. 在这里您可以找到关于 SignalR 自托管的教程:http://www.asp.net/signalr/overview/deployment/tutorial-signalr-self-host

正如@nsinreal 提到的,SignalR 可能是最好的选择。

网络上有很多示例 - 这里有一个可以帮助您继续:

http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr

这是一个聊天应用程序,不少:)