SuperSocket源碼解析之開篇

一 簡介

  官方介紹:SuperSocket 是一個輕量級, 跨平臺並且可擴展的 .Net/Mono Socket 服務器程序框架。你無須瞭解如何使用 Socket, 如何維護 Socket 鏈接和 Socket 如何工做,可是你卻可使用 SuperSocket 很容易的開發出一款 Socket 服務器端軟件,例如遊戲服務器,GPS 服務器, 工業控制服務和數據採集服務器等等。編程

  地址:http://www.supersocket.net/設計模式

     目前所閱讀的版本是:1.6.4.0服務器

  本筆記的基本思路爲:Supersocket是什麼,主要功能,組成結構,啓動過程,工做機制,如何高性能,如何高併發,以及如何可擴展等方面進行多線程

二  基礎知識

1 Net4.0以上編程基礎,熟悉lamada表達式,Tpl多核並行異步編程,泛型編程(很是重要),多線程(線程池),反射,特性等基礎知識;併發

2 熟悉常見的設計模式,工廠模式,命令模式,代理模式,其中工廠模式在SuperSocket配置系統中大量使用,也是具備高擴展性重要基礎之一;框架

3 Tcp/ip基本概念,通訊過程;異步

4 IOCP(完成端口)相關概念;socket

5 Log4Net日誌組件;異步編程

6 常見的服務器會話機制;高併發

 

三 主要功能

  如官方介紹所言,能夠做爲輕量級的服務器程序框架,其核心在於進程之間經過Socket進行通訊達到數據交換的目的,固然也能夠做爲一款三方通訊組件,其主要做用在於創建服務端與客戶端或者其餘端點的通訊,管理,維護,並提供常見的通訊協議,解析等,也能夠自定義協議和協議處理相關接口,因此說SuperSocket在首先知足通訊前提下同時提供常見的協議處理,也提供直接做爲應用程序的服務器應用程序框架。

 

四  組成結構

援引官方的對象模型示意圖能夠知道,SuperSocket主要分爲SocketServer,AppServer以及與之對應的SocketSession、AppSession組成

1 其中SocketServer是SocketSession的容器,負責SocketSession的管理(建立,初始化,啓動,關閉等);

 

2 SocketSession則是一個最小的通訊單元也就是客戶端與服務端一個Socket一條通訊信道封裝,負責消息發送,接收;

 

3 AppServer則是服務器的一個工做單元,一個服務器能夠有多個AppServer共同組成,實現對不一樣端口進行Tcp或者Udp連接監聽,並做爲AppSession的容器和管理者,負責AppSession建立,初始化,啓動,關閉等管理,向外界提供配置接口,日誌接口,命令接口,鏈接過濾接口,接收過濾接口等等;

 

4 相應的AppSession則是工做在SocketSession上層的服務器會話單元,其主要職能在於負責將接收到的數據進行過濾,解析,以及路由到命令並執行,如上圖所示

 

五 工做機制

  

 

  我的以爲上圖從左至右第一個Session應細化成SocketSession更合適。

其工做機制也就是服務器什麼時候開始工做,怎樣工做,怎樣處理接收和發送消息,這裏能夠參考官方給出的請求處理模型示意圖,其具體步驟以下所述

1 SocketSession會話階段

 服務器啓動監聽器,進入監聽狀態等待客戶端鏈接,當接收到一個客戶端請求,驗證並建立一個SocketSession會話;

2 AppSession會話階段

  當接收到客戶端一個Socket請求,封裝成一個SocketSession時該會話已具有收發消息的能力,可是要處理數據還得有AppSession來處理,因此由AppServer根據SocketSeeion建立AppSession,並讓該會話啓動開始工做

3 消息處理階段

 當SocketSession接收到一個消息時,將交由AppSession進行處理,首先進行原始數據完整性和過濾特性進行處理,主要過濾掉一些不合法的消息或者被特性標記的,並將消息交由IReciveFilter進行協議解析封裝成RequestInfo一類的結構,再路由給具體的命令執行單元進行具體處理執行

 

以上三步驟將客戶端發送一條消息或者說一個數據包,在經歷接收,檢查,解析,命令處理過程,這些步驟經由SocketSession和AppSession工做在一個由AppServer負責啓動的一個線程單元中,也就是說每個 會話都將是一個線程在負責,而這些線程是交由ThreadPool負責管理,因此通篇都看不到一個顯式的Thread建立並啓動代碼

 六 層次劃分

 

七  示例

在官方源碼QuickStart文件夾中給出了一些列完整示例,能夠直接啓動並接收簡單消息的處理,這些示例能夠參考到文檔中結合起來理解和使用

相關文章
相關標籤/搜索