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

时间:2016-08-04 13:25:41

标签: c# asp.net wcf system.net.sockets

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

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

2 个答案:

答案 0 :(得分:0)

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

  1. Net.Sockets太低了。制作可接受的协议很难。但您可以使用现有协议 - 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或Web Api,你应该使用长轮询,这会浪费大量资源并且不是真正的实时

  4. 还有另一种变体 - 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

答案 1 :(得分:0)

正如@nsinreal所提到的,SignalR可能是最好的方式。

网上有很多例子 - 这里有一个让你上手的例子:

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

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