NetServ
NetServ 介紹
NetServ 是一組以 C# 寫的 Socket Server 類別 , 主要是給程式設計師一個快速實作 Socket Server 的方式
目前版本只做到 TCP/IP Server 的部分 , 內部運作方式採用非同步 Socket 來實作 , 效能還算可以 , 而且已經測試過在 Win32 .NET 2.0 及 Linux 上的 mono 2.4 可以運作
而在 .Net 中的非同步 Socket 有兩種 API , 就是 Socket.BeginXXX/Socket.EndXXX 及 Socket.XXXAsync , 而 NetServ 是採用 BeginXXX 的方式做的 , 因為經過我好多天的測試 , mono 上以 Socket.XXXAsync 的效能極差 … 甚至比 Select 還差 , 所以我才用比較舊的方式實作
目前的功能
- 目前 NetServ 只有一個 AsyncServerBase 物件可以給程式設計師實作 Socket Server
- 下載檔案中有一個 PerformaceTest 專案 , 是一個簡單的 Http Server , 甚麼功能都沒有 , 只會回應字串 , 提供給 ab(Apache Benchmark Tool) 測試效能用
- 經過測試可以接收大量連線 , 在 Linux + mono 環境上要設定 ulimit -n xxxx 以防止開啟太多 Socket , 因為 Linux 預設可能是 1024 , 所以若要讓 PerformanceTest 同時服務 2048 個連線 , 就必須先下 ulimit -n 2048
目前仍在撰寫的功能
- Unix Socket Server
- UDP Socket Server
- Comet Http Server (簡單的 Http Server , 讓程式設計師開發 Comet 應用邏輯)
- Comet Exchange Server (可讓任何程式語言開發 Comet 應用)
執行環境需求
- Windows XP 以上的微軟作業系統並且有安裝 .Net Framework 2.0 或 mono
- 其他非 Windows 作業系統 , 必須安裝 mono , 我已經測試過 ubuntu 9.10 內建的 mono 2.4.2.3 套件是百分百可用
下載 NetServ 0.1
效能測試
在之前曾經發表過 PHP Select 及 libevent 的比較 , 現在再與 NetServ 內的 PerformaceTest 專案實做出來的作成對比的表格 , 測試的結果是以跑 100000 次 Request 得到的秒數 , 可以發現 , PHP 靠北邊了
| Connections | select(PHP) | libevent(PHP) |
NetServ |
| 100 | 10.656 | 9.298 | 3.39 |
| 500 | 11.175 | 9.791 | 3.39 |
| 800 | 17.327 | 9.709 | 3.45 |
| 1000 | 23.282 | 9.749 | 3.45 |
要執行 PerformanceTest 專案很簡單 , 在 Windows 上只要進入 NetServ\PerformanceTest\bin\Release 執行 PerformanceTest.exe 就好了 , 然後可以用 ab -k -c 100 -n 100000 http://localhost:7788/ 測試效能 , 若在 mono 平台就是下 mono PerformanceTest.exe 即可
版權說明
- 本軟體為自由軟體 , 歡迎大家使用
- 不得將本軟體以任何形式販賣本軟體
- 未經作者同意 , 不得搭配任何產品使用及販售
- 未經作者同意 , 不得修改原始碼自行釋出軟體供他人下載或使用
- 作者 : Pigo (就是站長我啦)
使用方式
還在寫
最新回應