网络与服务器编程框架库 acl_3.0.13 发布

标签: 软件更新新闻 | 发表时间:2013-11-04 20:56 | 作者:
出处:http://www.oschina.net/?from=rss

acl 3.0.13 版本 (项目主页:https://sourceforge.net/projects/acl/) 发布了,acl 是 one Advanced C/C++ library 的简称,主要包括网络通信库以及服务器框架库等功能,支持 Linux/Windows 平台;整个 acl 项目主要包含三个函数库:lib_acl(纯C开发的基础库,主要包含网络通信及服务器编程框架以及其它丰富的功能)、lib_protocol(包含 HTTP/PING/SMTP 通信协议的C语言实现)、lib_acl_cpp(基于 lib_acl 及 lib_protocol 两个C库,提供了更为强大的编程接口及丰富的功能类);本次 acl 升级除了一些常见 bug 修复外,主要针对 ACL 的C++(lib_acl_cpp)模块增加了 线程及线程池类库。

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 解析库采用有限状态机方式解析数据,处理方式更为灵活

一、基础库:lib_acl
. acl_debug.c: 调整了参数的表示方法,调整后的调试标签及级别字符串的格式: 1:1, 2:10, 3:8...  or 1:1; 2:10; 3:8...
. feature: acl_master 服务器模板添加了 master_debug 配置项,方便用户在使用 acl 的服务器框架时调试日志
. feature: acl_aio_app_main.c/acl_ioctl_app_main.c, 增加了配置项 master_deny_banner 允许用户自定义拒绝连接的内容信息
. feature: acl_pthread_pool.c 增加了 acl_pthread_pool_qlen 函数,提供当前线程池队列中未被处理的任务数量
. performance: acl_vstream.c,将 __vstream_sys_read 的读过程进行了优化,改名为 __sys_read,以允许将用户输入的缓冲区做为系统 read 的内存地址,从而在调用 acl_vstream_readn/acl_vstream_read 时避免了数据的二次拷贝
. compile: acl_aio_app_main.c, 其中在调用 write 时,需要判断返回值,否则会在高版本 gcc 上报警告
. bugfix: acl_mylog.c, 当通过 UDP 方式记录日志时,因为之前 acl_vstream.c 允许注册外部接口的改变而发生了不兼容性问题
. bugfix: acl_xml_util.c, acl_xml_tag_add() 在调用 acl_token_tree_add 时,第三个参数应该调用 ACL_TOKEN_F_STOP,原来是 ACL_TOKEN_F_PASS

二、功能丰富的C++库:lib_acl_cpp
. feature: 增加了线程类(stdlib/thread)及线程池类(stdlib/thread_pool)
. feature: thread 类分离出一个基类 thread_job,从而使逻辑更为清晰
. feature: 当使用 GCC 进行编译时,针对所有具有变参的函数接口定义添加了属性限定---__attribute__((format(printf, n, m))),这样便于在编译期就能发现因参数使用不当而导致的错误
. feature: HttpServletResponse 类支持 Transfer-Encoding: chunked 传输方式
. feature: connect_manager/connect_pool 允许动态添加、删除连接池对象
. bugfix: master_udp.cpp,当以 alone 方式运行时,没有将 socket_stream 赋给 ACL_VSTREAM::context,导致在 service_main 时又重新打开一次
. bugfix: thread.cpp,当线程为分离方式创建时 thread::thread_run 在调用完虚函数 run 后不得再引用线程对象的 return_arg_,否则会造成内存非法访问
. bugfix: db/db_mysql.cpp, 在打开 mysql 连接时设置字符集,判断是否设置成功的方法有误
. bugfix: master_udp.cpp, master_udp::service_main() 中的 socket_stream 是临时堆栈变量,如果被用户外部引用则可能造成内存非法访问
. samples: 增加了 master_udp_threads,该例子将线程池与 master_udp 模板结合
. samples: 增加了测试用例 thread_client,一个多线程网络客户端程序
. samples: 增加了测试用例 thread 用以测试线程类
. samples: 增加了测试用例 thread_pool 用以测试线程池类
. samples: 添加了 master_aio_proxy 用作纯 TCP 非阻塞代理

相关 [网络 服务器 编程] 推荐:

网络与服务器编程框架库 acl_3.0.13 发布

- - 开源中国社区最新新闻
acl 包括以下丰富的常用函数库:. 1、常见网络应用库: SMTP 客户端库/PING 库/memcache 客户端库/handlersocket 客户端库/beanstalk 客户端库. 2、HTTP 网络库:HTTP 客户端/服务端库,C++版 HttpServlet 类,HTTP COOKIE/HTTP SESSION 等.

使用 node.js 进行服务器端 JavaScript 编程

- jiaosq - IBM developerWorks 中国 : 文档库
node.js 是一个可以使用 JavaScript 开发服务器端应用的平台. 它依托于 Google V8 JavaScript 引擎,并采用事件 I/O 的架构,可以用来创建高性能服务器. 本文详细介绍了 node.js 的基本知识、模块化的结构、事件驱动的机制以及常用的模块.

替代 Apache 和 IIS 的轻量级网络服务器盘点

- Shearer - 开源中国社区最新新闻
说起当今的网络服务器,我想大家对Apache和IIS不会陌生,一般对于Windows的操作系统来说用的IIS比较多,而对于Linux来说,Apache 会占有比较大的优势. 但是,出色的网络服务器可并不只有Apache和IIS. 事实上,性能卓越,堪比Apache和IIS的其他网络服务器还有很多. 这 篇文章给大家介绍五款可以替代Apache和IIS的轻量级网络服务器.

epoll网络编程实例

- - CSDN博客推荐文章
       在前面已经经过了PPC、TPC、select之类( TPC就是使用进程处理data,TPC就是使用线程处理 ),前面两个的缺点大家应该都是知道的是吧,对于select( 其实poll和他差不多 ),缺点是能同时连接的fd是在是不多,在linux中一般是1024/2048,对于很大的服务器来说是不够的.

日本最大社交网络Mixi的服务器架构图解

- 铭文 - 服务器运维与网站架构|Linux运维|互联网研究
Mixi是日本最大的社交网站,已经成为了日本的一种时尚文化. 对于很多日本人特别是青少年来说,Mixi已经成为日常生活中的一部分,过度沉迷于Mixi的社群活动,使他们患上了Mixi依赖症. 这些Mixi迷很在意自己在其中的表现,无论是照片还是日记,会担心写得好不好,有没有人看,访问人数下滑了之类. 这也从另一方面反映了Mixi在日本当地用户中的地位.

高性能网络编程5--IO复用与并发编程

- - CSDN博客云计算推荐文章
对于服务器的并发处理能力,我们需要的是:每一毫秒服务器都能及时处理这一毫秒内收到的数百个不同TCP连接上的报文,与此同时,可能服务器上还有数以十万计的最近几秒没有收发任何报文的相对不活跃连接. 同时处理多个并行发生事件的连接,简称为并发;同时处理万计、十万计的连接,则是高并发. 服务器的并发编程所追求的就是处理的并发连接数目无限大,同时维持着高效率使用CPU等资源,直至物理资源首先耗尽.

开源软件实践之linux高性能服务器编程框架和选型(续)

- - CSDN博客架构设计推荐文章
    接着昨天的Proactor模式介绍.      proactor模式将所有IO操作交给主线程和linux内核来处理,工作线程负责业务逻辑. 异步IO实现这种模式的工作流程如下:. 1)主线程使用aio_read函数注册socket读完成事件,提供用户接收数据的缓冲区地址以及读操作完成时如何通知应用程序(有信号等手段);.

谈一谈网络编程学习经验(06-08更新)

- Leo - C++博客-首页原创精华区
PDF 版下载:https://github.com/downloads/chenshuo/documents/LearningNetworkProgramming.pdf. 本文谈一谈我在学习网络编程方面的一些个人经验. “网络编程”这个术语的范围很广,本文指用Sockets API开发基于TCP/IP的网络应用程序,具体定义见“网络编程的各种任务角色”一节.