發佈一個C++跨平臺事件驅動型網絡框架EasyNet

發佈一個C++跨平臺事件驅動型網絡框架EasyNet,github地址鏈接是EasyNet,代碼總行數不到一萬行,其中還包括了protobuf自動生成的一些代碼

EasyNet是基於Muduo改造過來的,Muduo是一個基於C++開發的Linux服務端高性能、事件驅動型的網絡框架,類似於Java中的Netty,python中的Twisted.但是Muduo僅支持Linux

EasyNet現支持的平臺 Windows、Linux、Vxworks多種常用的操作系統,稍加改動就可以支持Macos,android等操作系統

EasyNet相對於Muduo的幾點區別

  • 定時器的設計,Muduo使用了Linux獨有的Timerfd實現的高性能定時器,Windows等其他平臺並沒有相應的api,故EasyNet使用了最小堆
    實現的,最小堆的頂點是所有定時器中最先超時的,所以每次只用檢查最小堆頂點的定時器事件

  • EasyNet在Muduo的ProtobufCodec和FieldLength編解碼的基礎上新增加了基於行的Codec編解碼方式,有很多時候需要我們需要每次解析一行數據

  • EasyNet同時支持boost和C++11,很多老的編譯器是不支持C++11標準的,而EasyNet中使用了部分C++新標準中的功能,比如智能指針,函數對象相關(Function, Bind)等,基於此,EasyNet跟根據編譯器的版本選擇使用C++11或者Boost

  • EasyNet基於protobuf實現了RPC功能

TODO List

  • 添加日誌功能
  • 目前IO複用是用的是比較低效的Select,後面Linux中會加入Epoll機制,這樣fd管理會更加高效
  • 實現固定長度的消息編解碼方式
  • 對MacOS等其他操作系統的支持
  • 加入對UDP協議的支持

感謝

  • Muduo是一個高性能的網絡編程框架,代碼簡潔,屏蔽了網絡編程對應用層的開發難度,應用層只用關心業務邏輯
  • 感謝陳碩的高性能服務端網絡編程一書,這本書闡述了Muduo的實現細節,也講述了現代C++開發過程中的常用手段和注意事項,特別是其基於對象的工程實踐給了我很多啓發,再次感謝

歡迎隨時交流([email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章