我想实现我的想法,开发一个具有客户端/服务器端的应用程序,并将客户端连接到服务器,以便他们能够实时传输消息。
所以我将使用 C# 进行开发,但问题是:我应该使用什么?我不知道哪种方法更适合那个聊天。我需要在 Net.Sockets、WCF 和 ASP.NET 之间进行选择。所以我请你帮我做选择。如果我使用 ASP.NET,我将不得不使用 selfhost 的东西,因为我不想创建一个站点或类似的东西来使用聊天。
我想实现我的想法,开发一个具有客户端/服务器端的应用程序,并将客户端连接到服务器,以便他们能够实时传输消息。
所以我将使用 C# 进行开发,但问题是:我应该使用什么?我不知道哪种方法更适合那个聊天。我需要在 Net.Sockets、WCF 和 ASP.NET 之间进行选择。所以我请你帮我做选择。如果我使用 ASP.NET,我将不得不使用 selfhost 的东西,因为我不想创建一个站点或类似的东西来使用聊天。
首先,让我们从您的变体开始
Net.Sockets 级别太低。很难制定可接受的协议。但是你可以使用现有的协议——WebSockets。有一个教程如何在 c# 上编写 websocket 服务器:https ://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_server
可能的话,如果你选择 WCF,你可以尝试使用 WCF 双工持久连接 over netTcpBinding。制作自托管 WCF 服务很容易。但是 WCF 很复杂,我认为它对于简单任务来说是很大的开销。另外,据我所知,双工连接通过使用长轮询来工作,这会浪费大量资源。仔细选择此变体。
ASP.NET。如果您在谈论 MVC 或 Web Api,您应该使用长轮询,这会浪费大量资源并且不是实时的
还有另一种变体 - ASP.NET SignalR(使用 WebSockets 工作)
正如@nsinreal 提到的,SignalR 可能是最好的方法。
网上有很多例子 - 这里有一个可以帮助你:
http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr
这是一个聊天应用程序,不少于:)