acl --網絡及服務器編程框架庫 3.0.15 版本發佈

acl 3.0.15 版本 (項目主頁:https://sourceforge.net/projects/acl/,技術文章主頁:http://zsxxsz.iteye.com/)) 發佈了,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庫,提供了更爲強大的編程接口及豐富的功能類);本次 acl 升級除了一些 bug 修復外,主要優化了 ACL 中的網絡服務器框架及網絡通信庫的性能,此外,修復了一些在 solaris(x86) 上的一些不兼容性問題。

 

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

.新特性: 完善了 json 流式解析器,提供了更多的功能(如:可以提取某個結點標籤後的 json 字符串)

.新特性: acl_threads_server.c, 新添加的線程池服務器框架模板

.新特性: acl_threads_server.c 服務器模板增加了配置控制參數 ioctl_batadd, 用來控制是否採用任務添加批處理方式

.新特性: event.c, acl_events.c, 新增加了任務派發前及派發後的回調過程

.新特性: acl_pthread_pool.c, 新增加了 acl_pthread_pool_alloc_job, acl_pthread_pool_free_job, acl_pthread_pool_add_job(新的批量添加線程任務的接口)

.性能優化: acl_pthread_pool.c, 由原來線程池統一用一個線程條件變量改爲每個線程一個單獨的線程條件變量,從而大大減少線程之間的鎖衝突,因而提高了線程池的運行性能

.性能優化: acl_pthread_pool.c, 線程池任務調度優化,將任務分配至每個線程本身的任務隊列,從而將線程之間的競爭條件降至最低,大大提高了線程池任務調度的性能

.性能優化: acl_pthread_pool.c 線程池任務調度優化,當以批處理方式添加任務時,優先將任務分給空閒線程,減少線程競爭的概率

.問題修復: acl_json_parse.c,json_val() 函數中沒有針對轉義內容做特殊處理

問題修復: 修復了一些 json 解析器中的 bug

問題修復: 線程池服務器模板 (acl_threads_server.c) 應該在 acl_chroot_uid 調用之後再調用 set_core_limit,這樣才能使應用程序崩潰時產生 core 文件

.編譯: 去掉了 ACL_MS_WINDOWS 宏定義,在WINDOWS環境下統一使用 WIN32 來標識 VC 編譯環境

.編譯: 支持 vc2008 編譯器

 

二、網絡應用協議庫:lib_protocol

.編譯: 在高版本VC(>VC2008) 環境下,使用更爲安全的函數

 

三、功能豐富的C++庫:lib_acl_cpp

.新特性: master_threads2,新增加了服務器線程池模板

.新特性: socket_stream 類支持 ssl 傳輸(與 polarssl 結合); 去掉了 ssl_stream 類

.新特性: json 類支持將字符串對象添加至數組對象中

.新特性: http_request 類添加了方法 set_timeout 可以設置網絡超時及讀寫超時

.新特性: 在使用高版本 vc(_MSC_VER >= 1500,即 VC9 以上版本) 編譯器時,不再使用 _CRT_SECURE_NO_WARNINGS 宏來避免編譯器警告,而是使用 VC 建議的安全函數

.問題修復: json.cpp 中 json_node::set_text 誤把文本值賦予標籤變量

.問題修復: queue_file.cpp,queue_file::create 函數內在嘗試創建文件時可能會因爲文件系統出問題而進入循環過程,通過增加標誌位避免該問題

.問題修復: 新線程池服務器模板 master_threads2 類在調用 service_pre_jail 時應該通過 acl_threads_server_event 獲得事件引擎 (原來寫的是 acl_ioctl_server_event, 這個是舊的服務器模板獲取事件引擎的方法)

.問題修復: HttpServletRequest.cpp, HttpServletRequest::readHeader 在解析 POST中的數據體時,需要判斷請求頭中 Content-Length 爲 0 的情況

.示例: samples/json2, 用於測試級聯提取數據的例子

.示例: 將所有的 json 測試用例移至 samples/json 目錄下

.註釋: 修正 connect_manager::init 原來錯誤的參數格式描述

.安全: ipc 通信機制中增加了隨機數安全驗證功能,以防止外來干擾

 

參考鏈接:

技術博客: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/acl-dev/acl

 

發佈了13 篇原創文章 · 獲贊 1 · 訪問量 3856
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章