2014-02-19 101 views
0

我必須開發一個使用TCP套接字的遊戲服務器應用程序。我一直在做一些研究,看看哪些技術最適合我的需求,也是在SO的幫助下。C#套接字vs NodeJS Socket.IO

目前我有兩個選擇留給自己。這是要麼在C#中創建一個服務器應用程序SocketAsyncEventArgs或與NodeJS和Socket.IO

我選擇了NodeJS,因爲我想他們已經完成了所有的努力並優化了他們的套接字庫。所以我所要做的就是簡單地使用它,也許稍微調整一下。

但我的主要問題是,NodeJS會足夠好嗎?

服務器需要是高性能套接字應用程序。我知道當我使用C#時,我可以得到很好的結果。但是,在C#套接字類或NodeJs Socket.IO之間真的存在巨大差異嗎?我應該期望從NodeJS減少嗎?

我找不到關於Winsock vs NodeJS/Socket.IO的任何信息。所以我希望這裏的任何人都對這兩件事有所瞭解。當你比較它們時,我可以期待從這兩者中得到什麼。


有關服務器將執行的操作的一些其他信息。

服務器將基本上將數據從一個客戶端傳遞到另一個客戶端。事情是,一個客戶端將發送大約3040小包(〜300字節)到服務器每秒。服務器會將每個請求發送給另一個客戶端。但同時另一個客戶端會每秒發回相同數量的數據。

服務器只是兩個客戶端之間的某種中介。同時,大約500對客戶端可以連接到服務器。所有通過服務器向對方發送數據。這就是爲什麼我需要一個性能良好的socket應用程序。我認爲CPU在我的情況下不會有問題,因爲它不會進行任何繁重的計算。

回答

0

但我的主要問題是,NodeJS會足夠好嗎?

讓我重新短語:

但我的主要問題是,哪種技術-X和技術-Y的更快呢?

其中只有一個答案:原型在選項和基準。

您沒有提供有關服務器性質的信息,所以我建議選擇套接字庫是選擇主要實現堆棧的一個非常糟糕的基礎。除非事情很奇怪,否則你將會受到CPU限制(大量業務邏輯/計算執行),或者IO限制在網絡或本地存儲(移動大量信息),除非你有非常胖的管道,否則更有可能。

選擇最適合您和您的團隊的技術堆棧:考慮團隊的(預期)需求和技能集合的總和。如果你擁有足夠的資源(時間,人力)和足夠低的風險,那麼採取新方法就可能會好起來。

+0

我添加了一些關於服務器對我的帖子做什麼的附加信息。我們也計劃做我們自己的基準。我只是希望那裏已經有了一些信息,因爲總能看到別人試過的東西以及他們從中得到了什麼樣的結果。 – Vivendi

+0

我懷疑如果寫得很好(即一切異步),任一方法都將足夠快。最後.NET和Node都是JIT編譯的,垃圾收集使用異步API。 – Richard