用于实时聊天的Net.Sockets、WCF或ASP.Net

本文关键字:Net WCF ASP Sockets 聊天 用于 实时 | 更新日期: 2023-09-27 18:00:16

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

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

用于实时聊天的Net.Sockets、WCF或ASP.Net

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

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

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

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

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

  1. 在这里,您可以查看如何编写客户端: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

它适用于聊天应用程序:)