SuperSocket基礎(一)——————基本概念服務器
項目中以前一直使用TCP socket服務框架,可是不利於擴展。最近剛接觸到開源的superSocket感受很不錯,特記錄一下。官方開源地址:http://www.supersocket.net/網絡
SuperSocket:是一個可擴展的Socket開源框架,是一個輕量級、跨平臺並且可擴展的.Net/Mono Socket 服務器程序框架。能夠輕鬆的使用SuperSocket開發出一款Socket服務軟件。架構
一、高性能的事件驅動通訊。併發
二、簡單易用,建立幾個類便可得到一個健壯的Socket服務器。app
三、內置的命令協議可以迅速建立一個網絡命令行接口服務器。框架
四、強大的性能的協議解析實現工具簡化了網絡數據的分析工做。socket
五、靈活的配置和友好的API。函數
六、多監聽器支持,讓一個服務器實例監聽多個客戶端。工具
七、多服務器的實例託管的支持複雜的部署需求。性能
八、應用程序域和進程級別的隔離可以知足大部分的宿主場景。
九、內置的SSL/TLS加密支持。
十、會話級別的發送隊列可以經過會話併發送數據,並保持高性能和可控性。
十一、SuperSocket的命令處理模式讓你的業務邏輯更清晰,更有條例。
十二、優良的可擴展 API 支持: Command Filter, Connection Filter, Command Loader;
1三、可替換的日誌框架可以知足喜歡的日誌組件。
1四、動態語言的支持,容許Python等腳本語言來實現命令。
1五、與Mono/Linux保持二進制級別的兼容。
層次示意圖:
層次解析:
SuperSocket 層次
1、設備層:基於flash和SilverLight的策略服務器和基於接收過濾器的協議實施。
2、應用層:可擴展的應用程序服務:包括多種API集成。會話容器和命令框架。
3、套接字層: 經過傳輸協議TCP和UDP的事件驅動套接字服務。
SuperSocket對象模型示意圖
模型解析:
一、應用服務AppServer 包括命令Commands, 會話容器Session contaioner。
二、對象層次:基本配置Config->命令過濾器Command Filters->日誌和日誌工廠Log/LogFactory->命令裝載機CommandLoaders->接收過濾器工廠ReceiveFilterFactory->鏈接過濾Connection Filters。
三、Socket 服務:多客戶端監聽,TCP1 、TCP二、。。。。UDP。
SuperSocket 請求處理模型示意圖
模型解析:
一、客戶端攜帶數據流與Server端Socket Listener創建鏈接以後,SuperSocket 服務就將這一個鏈接視爲一個Session會話。表示客戶端和服務器端的一個邏輯鏈接,數據的收發都是在這個Session中進行處理的(此過程當中的數據流爲二進制數據)。
二、攜帶數據流的Session經過默認或者自定的接受過濾器將過濾後的數據傳遞到RequestInfo對象。每個客戶端對象都得實例化一個RequestInfo類,將接收到的二進制流轉換成請求的實例。詳細的概念將在下文中進行整理總結。
三、根據RequestInfo執行Command命令,一個Command 包含一個Session和RequestInfo,在Command中根據需求解析數據。也可經過Session向客戶端發送數據,例若有些DTU或者RTU設備須要發送指令才能返回數據。
經過請求處理模型能夠總結基本的開發流程:
一、實例化AppServer對象,時刻監聽客戶端的會話。
二、定義RequestInfo實體類型,接收和處理二進制字符流。
三、定義數據接收過濾器,ReceiveFilter,接收過濾後的數據,並將數據賦值給RequestInfo實體類型。
四、在appServer的構造函數中繼承使用接收過濾工廠RequestFilterFactory,並執行自定的ReceiveFilter和RequestInfo。
五、在1的數據請求委託事件中解析並使用RequestInfo實體中對應的數據。
下一篇以官方實例爲例進行總結