文档章节

acl --网络及服务器编程框架库 3.0.15 版本发布

郑树新
 郑树新
发布于 2014/09/03 12:11
字数 1391
阅读 23
收藏 1

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/zhengshuxin/acl

 

© 著作权归作者所有

郑树新

郑树新

粉丝 105
博文 87
码字总数 161171
作品 2
昌平
程序员
私信 提问
acl -- 网络及服务器编程框架库 3.0.15 版本发布

acl 3.0.15 版本 (项目主页:https://sourceforge.net/projects/acl/,技术文章主页:http://zsxxsz.iteye.com/)) 发布了,acl 是 one Advanced C/C++ library 的简称,主要包括网络通信库以...

郑树新
2014/01/25
1K
2
acl_cpp 1.1.1.2 发布,C++网络框架库

经过了长时间的测试与项目实践,acl_cpp 1.1.1.2 版本终于发布了,acl_cpp 基于 C 语言版本的 acl 框架库而写的C++库,具备如下特性: 1)同步/异步网络通信框架;同步流既支持网络通信,又支...

郑树新
2012/08/19
1K
3
网络与服务器编程框架库 acl_3.0.13 发布

acl 3.0.13 版本 (项目主页:https://sourceforge.net/projects/acl/) 发布了,acl 是 one Advanced C/C++ library 的简称,主要包括网络通信库以及服务器框架库等功能,支持 Linux/Windows ...

郑树新
2013/11/04
1K
6
acl 跨平台网络通信与服务器框架 3.0.21 发布

acl 3.0.21 版本发布了,acl 是 one advanced C/C++ library 的简称,主要包括网络通信库以及服务器框架库等功能,支持 Linux/Windows/Solaris/FreeBsd/MacOS 平台;整个 acl 项目主要包含三...

郑树新
2014/10/31
2K
6
acl 3.1.1 版本发布,跨平台网络通信与服务器框架

acl 3.1.1 版本发布了,acl 是 one advanced C/C++ library 的简称,主要包括网络通信库以及服务器框架库等功能,支持 Linux/Windows/Solaris/FreeBsd/MacOS 平台;整个 acl 项目主要包含三个...

郑树新
2015/03/30
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

1. 加载动态链接库

c_long的大小和平台有关:(32)位。 64位 编译出来的dll如果和python的版本不一样,那么就会出现下面的错误 当前是64的,所以修改了之后就可以了。 #include<stdio.h>extern "C" void show()...

鬼上身跳不过门槛
7分钟前
0
0
宝塔授权版部署

宝塔授权版部署 宝塔安装授权源码教程 注意:3.0之后不支持从免费版升级到授权版。 授权源码购买后,大家登录Niushop官网,点击授权账号进入到个人中心,在首页就可以看到购买的授权信息,包...

Geek-Chic
27分钟前
2
0
GUAVA--基础工具(Throwables)

1、异常传播 有时候,你会想把捕获到的异常再次抛出。这种情况通常发生在 Error 或 RuntimeException 被捕获的时候,你 没想捕获它们,但是声明捕获 Throwable 和 Exception 的时候,也包括了...

MrYuZixian
44分钟前
8
0
电磁兼容入门篇之辐射发射(辐射骚扰)试验

今天我们一起学习的是四个EMI测试项之一:辐射发射(RE),较前两篇相比的话,今天可能会有一点点深度,不过不用担心,我们先做一个了解,等到测试时或测试后再回过来结合本文,就能掌握的更...

demyar
56分钟前
6
0
Redis 事务:将一组命令放在同一个事务中进行处理

事务 MULTI 、 EXEC 、 DISCARD 和 WATCH 是 Redis 事务相关的命令。事务可以一次执行多个命令, 并且带有以下两个重要的保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺...

须臾之余
59分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部