SuperSocket基礎一

 

 

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實體中對應的數據。


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

相關文章
相關標籤/搜索