1. 程式人生 > >SuperSocket基礎一

SuperSocket基礎一

command 動態語言 建立 nds ext mage 平臺 服務器 tor

SuperSocket基礎(一)——————基本概念


項目中之前一直使用TCP socket服務框架,但是不利於擴展。最近剛接觸到開源的superSocket感覺很不錯,特記錄一下。官方開源地址:http://www.supersocket.net/

基本概念:

SuperSocket:是一個可擴展的Socket開源框架,是一個輕量級、跨平臺而且可擴展的.Net/Mono Socket 服務器程序框架。可以輕松的使用SuperSocket開發出一款Socket服務軟件。

功能特點:

1、高性能的事件驅動通信。

2、簡單易用,創建幾個類即可獲得一個健壯的Socket服務器。

3、內置的命令協議能夠迅速創建一個網絡命令行接口服務器。

4、強大的性能的協議解析實現工具簡化了網絡數據的分析工作。

5、靈活的配置和友好的API。

6、多監聽器支持,讓一個服務器實例監聽多個客戶端。

7、多服務器的實例托管的支持復雜的部署需求。

8、應用程序域和進程級別的隔離能夠滿足大部分的宿主場景。

9、內置的SSL/TLS加密支持。

10、會話級別的發送隊列能夠通過會話並發送數據,並保持高性能和可控性。

11、SuperSocket的命令處理模式讓你的業務邏輯更清晰,更有條例。

12、優良的可擴展 API 支持: Command Filter, Connection Filter, Command Loader;

13、可替換的日誌框架能夠滿足喜歡的日誌組件。

14、動態語言的支持,允許Python等腳本語言來實現命令。

15、與Mono/Linux保持二進制級別的兼容。

架構設計示意圖:

層次示意圖:

技術分享

層次解析:

SuperSocket 層次

一、設備層:基於flash和SilverLight的策略服務器和基於接收過濾器的協議實施。

二、應用層:可擴展的應用程序服務:包括多種API集成。會話容器和命令框架。

三、套接字層: 通過傳輸協議TCP和UDP的事件驅動套接字服務。

SuperSocket對象模型示意圖

技術分享

模型解析:

1、應用服務AppServer 包括命令Commands, 會話容器Session contaioner。

2、對象層次:基本配置Config->命令過濾器Command Filters->日誌和日誌工廠Log/LogFactory->命令裝載機CommandLoaders->接收過濾器工廠ReceiveFilterFactory->連接過濾Connection Filters。

3、Socket 服務:多客戶端監聽,TCP1 、TCP2、。。。。UDP。

SuperSocket 請求處理模型示意圖

技術分享

模型解析:

1、客戶端攜帶數據流與Server端Socket Listener建立連接之後,SuperSocket 服務就將這一個連接視為一個Session會話。表示客戶端和服務器端的一個邏輯連接,數據的收發都是在這個Session中進行處理的(此過程中的數據流為二進制數據)。

2、攜帶數據流的Session通過默認或者自定的接受過濾器將過濾後的數據傳遞到RequestInfo對象。每一個客戶端對象都得實例化一個RequestInfo類,將接收到的二進制流轉換成請求的實例。詳細的概念將在下文中進行整理總結。

3、根據RequestInfo執行Command命令,一個Command 包含一個Session和RequestInfo,在Command中根據需求解析數據。也可通過Session向客戶端發送數據,例如有些DTU或者RTU設備需要發送指令才能返回數據。


通過請求處理模型可以總結基本的開發流程:

1、實例化AppServer對象,時刻監聽客戶端的會話。

2、定義RequestInfo實體類型,接收和處理二進制字符流。

3、定義數據接收過濾器,ReceiveFilter,接收過濾後的數據,並將數據賦值給RequestInfo實體類型。

4、在appServer的構造函數中繼承使用接收過濾工廠RequestFilterFactory,並執行自定的ReceiveFilter和RequestInfo。

5、在1的數據請求委托事件中解析並使用RequestInfo實體中對應的數據。


下一篇以官方實例為例進行總結

SuperSocket基礎一