認識SuperSocket 1.6.4

 SuperSocket 是一個輕量級的可擴展的 Socket 開發框架,由江振宇先生開發,之因此選用它是由於一下幾點剛好複合項目需求:windows

  • 開源,基於Apache 2.0協議,能夠無償使用到商業項目.
  • 高性能的事件驅動通訊.
  • 會話級別的發送隊列可以讓你經過會話併發的發送數據,並保持高性能和可控性.
  • 強大且高性能的協議解析實現工具幫你簡化了網絡數據的分析工做:自帶多種數據幀過濾器,可實現本身的數據幀過濾器,可自定義數據內容協議,粘包拆包都是浮雲.
  • 輕量級意味着組件能夠自由選擇使用,可根據環境變化變動.

 

 

 SuperSocket的架構和設計能夠在官方的中文文檔查詢到http://docs.supersocket.net/v1-6/zh-CN/Architecture-Diagrams 服務器

SuperSocket的工做流程如圖:網絡

每一個鏈接的客戶端都以session的方式管理,發送數據給客戶端也經過session的send方法,每一個客戶端發過來的數據流都通過ReceiveFilter過濾器(這裏便可自定義協議或者使用自帶的一些幀過濾器)到ReqestInfo,ReqestInfo包含了該條數據內容,固然若是是自定義的協議,能夠實現本身的ReqestInfo,把數據包內容直接裝入幀對象.session

 

 官方的文檔和demo也是花了一段時間才知道怎麼使用達到項目需求的功能,因爲項目是作採集設備數據的TCP服務器,通訊幀格式也是比較常見的設計,因此大概個需求明白了,官方的文檔和demo裏沒有詳細講解這一塊,可是也基本指引了咱們該怎麼去作這樣的一個服務程序.架構

首先,官方文檔最簡單示例是:Telnet服務器.併發

Telnet示例: 默認的AppServer是設計成了Telnet方式的協議,因此直接配置->啓動->註冊鏈接,斷開,數據接收事件->邏輯處理,就完成最簡單的功能了,用windows自帶的Telnet調試便可明白.同時學習SuperSocket的還有一點就是看下載的sourcecode的quickstrat項目,各類場景都涉及到了.框架

雖然SuperSocket是一個屌炸天的框架,可是默認的AppServer我相信仍是不符合大部分人是開發場景,我只想用裏面最普通的TCP服務器功能,收發下數據,管理下鏈接,又或者我要實現帶XXX協議的過濾的TCP服務器,我根本就不想用Telnet.因此,拓展AppServer那是必須的功課了.socket

爲了減小碼農的工做量,有時間去泡妹子,偉大的SuperSocket真是無微不至,自帶了各類常見的幀過濾器,內置的經常使用協議實現模版以下:工具

  • TerminatorReceiveFilter (SuperSocket.SocketBase.Protocol.TerminatorReceiveFilter, SuperSocket.SocketBase)
  • CountSpliterReceiveFilter (SuperSocket.Facility.Protocol.CountSpliterReceiveFilter, SuperSocket.Facility)
  • FixedSizeReceiveFilter (SuperSocket.Facility.Protocol.FixedSizeReceiveFilter, SuperSocket.Facility)
  • BeginEndMarkReceiveFilter (SuperSocket.Facility.Protocol.BeginEndMarkReceiveFilter, SuperSocket.Facility)
  • FixedHeaderReceiveFilter (SuperSocket.Facility.Protocol.FixedHeaderReceiveFilter, SuperSocket.Facility)

以上模板的使用可參考官方文檔http://docs.supersocket.net/v1-6/zh-CN/The-Built-in-Common-Format-Protocol-Implementation-Templates性能

這裏前幾個模板可能使用不是複雜,使用場景也比較少,至於BeginEndMarkReceiveFilter和FixedHeaderReceiveFilter的使用就稍微複雜,可是他們基本能夠知足比較經常使用的行業使用的協議.

 

後一篇將作一個demo使用FixedHeaderReceiveFilter來解析自定義的協議幀

 

本文由http://www.cnblogs.com/xiepeixing/原創,轉載請著名出處

相關文章
相關標籤/搜索