網絡與服務器編程框架庫,acl_3.0.19 版本發布

jopen 10年前發布 | 18K 次閱讀 acl

acl 3.0.19 版本發布了,acl 是 one advanced C/C++ library 的簡稱,主要包括網絡通信庫以及服務器框架庫等功能,支持 Linux/Windows/Solaris/FreeBsd/MacOS 平臺;整個 acl 項目主要包含三個函數庫:lib_acl(純C開發的基礎庫,主要包含網絡通信及服務器編程框架以及其它豐富的功能)、lib_protocol(包含 HTTP/PING/SMTP 通信協議的C語言實現)、lib_acl_cpp(基于 lib_acl 及 lib_protocol 兩個C庫,提供了更為強大的編程接口及豐富的功能類);

特性如下:

  • data structure: array/htable/ring/stack/avl
  • socket/file stream(sync stream and async stream)
  • http/icmp/smtp protocol
  • json/xml/mime/base64/qp/uucode, etc parse lib
  • thread/process pool
  • mysql/sqlite connection pool
  • event(select, poll, iocp, epoll, kqueue, devpoll, win32 message)
  • server framework(threads pool/proccess pool/aio/trigger/udp, etc)
  • HttpServlet for C++; http client/server lib
  • log/configure lib
  • file queue
  • handler socket/memcached/beanstalkd client
  • zlib/iconv wrapper
  • session manager
  • unit test framework
  • </ul> 本次 acl 升級主要包含一些 BUG 修復及功能特性增加。
     
    acl 包括以下豐富的常用函數庫:
    1、常見網絡應用庫: SMTP 客戶端庫/PING 庫/memcache 客戶端庫/handlersocket 客戶端庫/beanstalk 客戶端庫
    2、HTTP 網絡庫:HTTP 客戶端/服務端庫,C++版 HttpServlet 類,HTTP COOKIE/HTTP SESSION 等
    3、郵件解析庫:mime解析庫/RFC2047/RFC2048/mime base64/mime qp/mime uucode 等
    4、網絡通信庫:阻塞/非阻塞網絡 IO 庫(其中 lib_acl_cpp 庫通過嵌入 polarssl 而具備了 SSL 的能力)
    5、服務器框架:包括進程池模式、線程池模式、非阻塞模式、UDP通信模式及觸發器模式
    6、事件引擎:支持 select、poll(for unix)、epoll(for linux)、kqueue(for bsd)、devpoll(for solaris)、iocp(for win32)、win32 窗口消息(for win32)事件引擎
    7、通用連接池庫:高效的連接池基礎類庫,支持豐富的功能
    8、數據庫客戶端庫:對原生的數據庫客戶端庫進行了二次封裝,使編程更為簡易,功能更為豐富
    9、xml/json 流式解析庫:區別于網上其它已有的 xml/json 解析庫,acl 中的 xml/json 解析庫采用有限狀態機方式解析數據,處理方式更為靈活

    一、基礎 C 庫:lib_acl
    .新特性:acl_scan_dir.c 增加了一些功能接口
    .新特性:服務器框架 acl_master 支持非 root 用戶身份運行
    . 性能優化:線程池庫(acl_pthread_pool.c), worker_wait() 函數將空閑線程添加至線程池和從線程池中移除的操作放在 pthread_cond_timedwait 等待循環的外面,這樣既可以減少添加/移除操作的次數,同時又可以使等待任務超時的線程遲早地退出
    . 刪除:去掉了 acl_ioctl_app_main.c/acl_aio_app_main.c,將 acl_aio_app_main.c 功能分別合并至 acl_aio_server.c 中;將 acl_ioctl_server.c 的接口申明為過期,建議用戶使用 acl_threads_server.c 中的功能接口
    .問題修復:acl_vstream.c 中函數 acl_vstream_ftell 問題修復
    .問題修復:acl_aqueue.c 異步線程消息隊列支持無限等待方式

    二、lib_protocol 庫
    .問題修復:http_hdr_req.c 中函數 http_hdr_req_cookies_parse 解析處理 cookie 時存在內存沖突
     
    三、lib_acl_cpp 庫
    .新特性:文件類 fstream(fstream.cpp)增加了 ftell 方法,用來表示當前文件指針位置
    .新特性:連接類 connect_client(connect_client.cpp)增加了設置/獲取連接池對象的方法
    .新特性:字符串類 string(string.cpp)增加了多個功能接口,方便對字符串的操作
    .新特性:增加了目錄掃描類 scan_dir(scan_dir.cpp),可以非常方便地對目錄進行掃描等操作
    .新特性:連接池管理類 connect_manager(connect_manager.cpp)增加了連接池故障自動恢復功能
    .問題修復:異步處理服務器類 master_aio(master_aio.cpp)在析構函數中不應調用異步處理函數,否則會引起內存沖突
    .問題修復:http 處理類 http_client(httpclient.cpp) 構造函數中未對緩沖區 buf 初始化,當調用 reset 方法會造成內存沖突

    參考鏈接:
    技術博客:http://zsxxsz.iteye.com/
    download:http://sourceforge.net/projects/acl/
    svn:svn checkout svn://svn.code.sf.net/p/acl/code/trunk acl-code
    github:https://github.com/zhengshuxin/acl
    QQ 群:242722074

     本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
     轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
     本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!