2016-08-04 61 views
0

我想實現我的想法,開發一個應用程序,將有客戶端/服務器端和客戶端連接到服務器,所以他們將能夠轉移消息實時。Net.Sockets,WCF或ASP.NET的實時聊天

所以我會開發使用C#,但問題是:我應該使用什麼?我不知道什麼方法會更好的聊天。 我需要在Net.Sockets,WCF和ASP.NET之間進行選擇。所以我請你幫我選擇。如果我使用ASP.NET,我將不得不使用selfhost的東西,因爲我不想創建一個站點,或者類似的東西來使用聊天。

回答

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或網頁API,你應該使用長輪詢,浪費了大量的資源,而不是真正的實時

還有另一種變體 - 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
+0

1.是的,我對不起,我在問關於WebSockets。 2.我希望這個項目能夠從一個簡單的任務中發展壯大,所以我會選擇考慮現在和未來。^_^ 3.那麼簡單的WebSocket和使用SignalR的WebSocket有什麼區別。 告訴我你選擇與這項任務合作。 – Max

+0

@Max SignalR只是一個Websockets的框架。我絕對會選擇SignalR作爲解決方案。如果我在SignalR中遇到一些問題,那麼很容易通過Websockets編寫定製解決方案。此外,SignalR支持另一種傳輸(當客戶端不支持WebSocket時,它會很有用)。也看看集線器的功能:http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-net-client - 它已經爲你實施 –