程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 1、發布C++實現的TCP網絡框架Khala,tcpkhala

1、發布C++實現的TCP網絡框架Khala,tcpkhala

編輯:C++入門知識

1、發布C++實現的TCP網絡框架Khala,tcpkhala


1、Khala簡介

  Khala(卡拉)是用C++實現的TCP網絡框架。底層采用muduo網絡庫作為網絡IO+線程模型,並封裝實現了網絡實現與業務邏輯分離的多線程網絡框架,具有超時退出、多設備多事件注冊支持、設備生命周期管理、設備間通信等功能。

項目托管地址:https://github.com/moyangvip/khala

 

2、底層支持

  Khala底層采用muduo作為網絡IO支持。muduo類似於市面上一些常用開源event-driven網絡庫(如libevent),實現了基於Reactor模式的非阻塞IO 機制,線程部分采用 one loop per thread + thread pool 模型。muduo源碼:https://github.com/chenshuo/muduo。關於muduo更多的介紹可參見陳碩的《Linux多線程服務端編程》一書。

 

3、設備繼承

  用戶在使用Khala框架時,無需關心底層網絡IO及多線程模型的實現,只需為具體設備定制業務邏輯所需的消息響應事件。同時用戶定義的設備支持多級繼承。比如可以定制一類設備叫"燈設備",並為"燈設備"定制"開關"事件。然後可以定制一類新的設備叫"智能燈",並繼承"燈設備"和定制"光照強度檢測"事件,則"智能燈"將不但擁有"光照強度檢測"的響應事件,還具有"燈設備"能夠支持的所有響應事件。通過這種機制能夠很好的實現不同設備的多級繼承體系。

 

  Khala框架組成的多級設備繼承圖,下一級設備類型在注冊自己的消息響應事件的同時,也將繼承支持上一級設備類型支持的全部消息響應事件,同時還能對上一級設備類型實現的某些消息響應事件進行重新實現。

 

4、設備生命周期

  Khala默認實現的設備類型分為兩類,即臨時設備類型和登錄設備類型。臨時設備類型裡面可以提供一些基礎的對所有設備的通用消息響應事件,比如查詢當前設備類型、查詢系統當前時間等。用戶同樣可以在此注冊符合自己業務需求的通用的消息響應事件。

  同時Khala提供了登錄管理設備類型。在登錄管理設備類型中,Khala提供了設備的生命周期管理。

  在設備生命周期中,Khala提供了相關的接口給用戶,用於實現在不同時期進行不同操作和制定相關消息響應。

 

  為了防止某些非法連接長期與服務端建立連接,占用系統資源,Khala支持超時檢測退出機制。用戶可以設置最大連接時間,一個連接在該時間段內未發送有效事件消息,將被強制斷開連接。目前超時連接只針對臨時連接設備,未來考慮對登錄連接設備同樣支持超時檢測退出。

 

  最後Khala還提供了設備管理支持,用戶能夠通過相關接口查詢相關連接信息和登錄設備信息。並實現在不同設備間進行消息通信功能。

 

5、適用場景

  局域網內基於tcp長連接的設備管理,多設備間通信等。同時對於最常見的聊天室等功能,Khala也只需用戶編寫極少數代碼即可實現。

 

6、關於Khala

  Khala來源於StarCraft,是StarCraft中Protoss信仰的一種宗教。同時它也是Protoss間的精神網,能夠對每一個連接了Khala的Protoss提供精神連接。

  Khala框架最開始起源於我對某個智能家居項目的思考。在學習了陳碩的muduo網絡庫後之後,我產生了基於該網絡庫進行進一步封裝的想法,並一個人用三周時間完成了這個開源框架的設計和大致代碼實現。在之前並沒有太多C++相關的項目經歷,對於服務端編程的經驗也僅學習自《UNP卷一》和陳碩介紹muduo相關的《Linux多線程服務端編程》,在開發過程中並無導師、大牛的指點,本質上是一款供學習交流類型的代碼。設計出於個人的思考理解,代碼寫得也不好看,估計還有很多bug,功能也不完善。待日後慢慢學習慢慢改吧。

  希望自己能夠每周發布1-2篇相關的學習文檔。 也希望對這方面有經驗的同學能夠多多拍磚,或者對這方面有興趣的加入我一起學習一起交流。

  學習文檔將在http://www.cnblogs.com/moyangvip/category/767591.html進行發布。

     1、發布C++實現的TCP網絡框架Khala

     2、Khala的安裝

     3、HelloKhala示例說明

  郵箱:[email protected]

7、參考書目

W.Richard Stevens:《UNIX網絡編程 卷一》

陳碩:《Linux多線程服務端編程》

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved