`
zsxxsz
  • 浏览: 446508 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

      acl 3.0.14 版本 (项目主页: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

.新特性: acl_json.c 增加了 acl_json_node_duplicate 用于复制一个 JSON 结点对象到一个新的 JSON 结点中;增加了 acl_json_create 用于根据一个 JSON 结点创建一个完全的 JSON 对象

.新特性: acl_json_util.c 增加了 acl_json_node_build 用于根据一个 JSON 结点生成 JSON 字符串

.性能优化: acl_vstream.c,__sys_read 函数中当流的 sys_read_ready 为 1 时,则不会调用系统 API select 判断超时过程,从而减少一次系统调用,因为 sys_read_ready 标志位会在事件模块(event_xxx) 中被设置

.性能优化: acl_aio_server.c, acl_ioctl_server.c 服务器模块参加了控制参数:master_status_notify,当启动多个子进程时,该参数决定是否向acl_master 主进程汇报子进程的状态,当 master_prefork 预启动参数打开且该值 > 1 时,将 master_status_notify 设置为 0,则子进程不再向 acl_master 主进程汇报状态,有助于减少 acl_master 主进程的负载

.性能优化: acl_vstream.c, 在 acl_vstream_readn 中,为减少 read 次数,当输入缓冲区较小时,则自动启用双缓冲读方式

.问题修复: acl_json_parse.c,json_val() 函数中没有针对转义内容做特殊处理

问题修复: acl_vstream.c,在 acl_vstream_ctl 函数中,当控制参数为 ACL_VSTREAM_CTL_PATH 时,对 stream->addr_peer 的赋值有问题(此 bug 由高版本的 gcc4.8.2 检测出)

.编译: Makefile 支持 solaris 编译

.其它: 去掉了 event 目录下的 events_kernel2.c 及 events_kernel3.c

.其它: acl_msg.c,在函数 acl_last_serror() 中分配的线程局部变量在主线程中无法被正常释放,会导致 valgrind 报错

 

二、网络应用协议库:lib_protocol

.问题修复: http_chat_sync.c,在函数 http_res_body_get_sync 中,当为 chunked 传输方式时,需要设置 ctx->chunk.chunk_oper = CHUNK_OPER_HEAD

.编译: Makefile 支持 solaris 编译

.其它: http_hdr_res.c/http_hdr_req.c,内部的线程局部变量无法在主线程中释放,会导致 valgrind 报警告

 

三、功能丰富的C++库:lib_acl_cpp

.新特性: 新增加 event 模块,将 master_timer 定时器类改名为 event_timer 类放于 event 模块中

.新特性: 在基类 master_base 中添加了方法 proc_set_timer 用于添加进程级别的定时器,(同时移除了 master_threads 子类中的 proc_set_timer 方法),这样 master_base 的所有子类 (master_threads, master_aio, master_proc, master_udp, master_trigger) 都可以添加进程级别的定时器

.新特性: master 模块增加了定时器类 master_timer

.新特性: json 类增加了以下功能函数:

 a) 构造函数 json(const json_node&),可以根据一个 json 对象的某一个 json 结点创建一个新的 json 对象

 b) duplicate_node 根据一个 json 对象的某个 json 结点复制一个新的 json 结点

 c) to_string 新的将 json 对象转换为字符串的函数

.新特性: json_node 类增加了以下功能函数:

 a) to_string 根据 json 结点生成 json 字符串的函数

 b) set_tag 用来替换标签名

 c) set_text 当 json 结点为叶结点时用来替换标签值

.新特性: http_header 类丰富了 set_url 及请求构造函数的参数类型,允许 URL 参数中含有请求参数,且内部会自动解析 url 中的主机名及参数

.新特性: http_header 类添加了请求参数添加方法:add_int 及 add_format

.新特性: http_header add_param 允许参数值为空指针或空串

.新特性: http_header::set_host 仅是将主机字符串添加至成员变量 host_ 中

.新特性: http_header::set_url 中允许添加类似于 http://www.test.com 的 url(即末尾可以没有 '/')

.新特性: http_client 类增加了 chunked 传输方式;

.新特性: http_request 类增加流式写函数:write_head/write_body;

.新特性: http_response 类增加了流式写数据方式

.新特性: HttpServletRequest 类增加了几个获取 HTTP 请求头参数的方法

.新特性: http_utils::get_addr 的 url 参数既可以是 HTTP 也可以是 HTTPS

.新特性: master_threads 模板支持新的定时器

.问题修复: connect_pool::put 在归还连接给连接池时,为了让过期连接尽快回收,需要调用 push_front,原来调用了 push_back

.问题修复: http_header.cpp,http_header::date_format 在 WIN32 编译出错

.问题修复: json.cpp, json::getElementsByTags() 内部未对空指针做判断

.问题修复: http_header.cpp, http_header::date_format 在 UNIX 平台下 gmtime 是线程不安全的,所以需要使用 gmtime_r

.问题修复: http_download.cpp 的构造函数中调用 ACL_SAFE_STRNCPY 时第三个参数给出错误的尺寸大小(此 bug 由高版本的 gcc4.8.2 检测出)

.问题修复: Makefile 支持 solaris(x86) 编译

.新增示例: samples/json2, 用于测试级联提取数据的例子

.新增示例: samples/ 目录下新增加了 json 测试用例 json3/json4

.示例: samples/master_udp_threads: 该例子中的线程局部变量的静态用法 __thread 无法支持 solaris,改为动态方式使用线程局部变量方式

.注释: 修正 connect_manager::init 原来错误的参数格式描述

.注释: 消除了几个头文件中由 doxygen 检测出的错误注释

.其它: stream 模块的异步流部分,将 aio_timer_callback 等类声明从 aio_handle 类中移除成为独立的类

.其它: 调整类 http_client 中的两个函数 get_respond_head  和 get_request_head 的返回值限制,去掉 const 限定词

 

参考链接:

技术博客: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

 

分享到:
评论

相关推荐

    TeamSpeak_3.0.14_win64简体中文版

    TS3最新客户端,下载后直接安装,这是64位的哦,别看错了哦。。

    Engintime CP Lab Setup_3.0.14.msi

    做实验用的实验平台 编译原理,操作系统,计算机组成原理都可以

    HaneWin DHCP Server 3.0.14 绿色版

    HanWin DHCP BOOTP TFTP Server 绿色破解 功能齐全使用简单

    有点牛论坛小程序 tech_bbs 3.0.14.rar

    5. **API调用**:小程序开发者可以调用微信提供的各种API接口,如用户授权、网络请求、地图、支付等功能,以实现与服务器的交互和服务功能。 6. **数据存储**:小程序可能使用微信的本地缓存机制(wx....

    有点牛论坛小程序 tech_bbs 3.0.14.zip微信小程序模板源码

    11. **调试与发布**:开发者可以使用微信开发者工具进行小程序的调试、预览和发布,确保在不同设备上运行正常。 12. **性能优化**:源码可能包含了性能优化技巧,比如懒加载、数据缓存、减少网络请求等,以提升小...

    archive_ Django Web框架 v3.0.14 [江西新余电信].zip.zip

    这个名为"archive_ Django Web框架 v3.0.14 [江西新余电信].zip.zip"的压缩包很可能包含了关于Django 3.0.14版本的相关资料,可能是教程、源代码示例、文档或者是开发者工具。 Django 3.0.14是Django框架的一个稳定...

    Django Web框架 v3.0.14.zip

    在这个压缩包文件"Django Web框架 v3.0.14.zip"中,你可以找到Django框架的核心源码以及相关文档,这对于深入理解Django的工作原理和进行二次开发是非常有帮助的。下面将详细解释Django框架的一些核心概念和功能: ...

    Python库 | pyfaust-3.0.14-cp37-cp37m-manylinux1_x86_64.whl

    1. **Python库**:Python库是开发者可以导入到自己的项目中使用的预先编写好的代码集合,它们提供额外的功能或工具,如数据处理、网络通信、图形界面等。 2. **pyfaust**:Pyfaust是Python对Faust音频信号处理语言...

    sapjco3-linuxx86_64-3.0.14.tgz【x64】【201601】

    3. `libsapjco3.so`:这是一个动态链接库文件(在Linux中通常为`.so`),是SAP JCo的本地库,用于处理与SAP系统底层通信的低级操作,如网络通信和数据转换。 4. `Readme.txt`:通常包含安装指南、注意事项或软件的...

    dubbo-go服务框架 v3.0.14.zip

    《Dubbo-Go服务框架 v3.0.14详解》 Dubbo-Go是阿里巴巴开源的一款基于Go语言实现的高性能、轻量级的服务治理框架,它为微服务架构提供了强大的支持。本压缩包文件“dubbo-go服务框架 v3.0.14.zip”包含了该版本的源...

    VLCMediaPlayer3.0.14.zip

    5. **流媒体功能**:VLC不仅可以播放本地媒体文件,还能用作流媒体服务器,将本地媒体推送到网络上,或者接收并播放网络上的流媒体内容。 6. **播放控制**:VLC提供了丰富的播放控制选项,如快进、快退、暂停、播放...

    thymeleaf-3.0.14.RELEASE-API文档-中文版.zip

    赠送jar包:thymeleaf-3.0.14.RELEASE.jar; 赠送原API文档:thymeleaf-3.0.14.RELEASE-javadoc.jar; 赠送源代码:thymeleaf-3.0.14.RELEASE-sources.jar; 赠送Maven依赖信息文件:thymeleaf-3.0.14.RELEASE.pom;...

    Python库 | huaweicloudsdkkafka-3.0.14b0-py3-none-any.whl

    《Python库huaweicloudsdkkafka-3.0.14b0-py3-none-any.whl详解》 在Python编程中,库是至关重要的组成部分,它们为开发者提供了丰富的功能,大大简化了代码编写过程。本文将详细介绍名为“huaweicloudsdkkafka”的...

    apache-cxf-3.0.14

    这个"apache-cxf-3.0.14"是该框架的一个特定版本,发布于某个时间点,包含了CXF在3.0.x系列中的功能和改进。 CXF的核心功能包括: 1. **Web服务实现**:CXF允许开发者通过Java编程模型(如JAX-WS和JAX-RS)来创建...

    sapjco3.0.14

    总结,SAP JCo 3.0.14版本是Java与SAP系统集成的关键工具,其多平台支持和持续优化为开发者提供了更广泛的应用场景和更好的开发体验。通过深入理解和熟练运用SAP JCo,开发者能够高效地构建与SAP系统集成的Java应用...

    Python库 | phcli-3.0.14.tar.gz

    python库。 资源全名:phcli-3.0.14.tar.gz

    sapjco3-linuxintel-3.0.14.tgz【x86】

    标题 "sapjco3-linuxintel-3.0.14.tgz【x86】" 指示的是一个特定版本的 SAP Java Connector (SAP JCo) 针对 Linux x86 平台的软件包。SAP JCo 是 SAP AG 开发的一个软件组件,它允许Java应用程序与SAP系统进行通信,...

    Python库 | huaweicloudsdkcloudtest-3.0.14b0-py3-none-any.whl

    在Python编程中,库是预先编写好的代码集合,用于简化特定任务的实现,例如数据处理、网络通信、图形用户界面等。`huaweicloudsdkcloudtest` 是华为云提供的一款Python SDK,它使得开发者能够方便地在Python环境中与...

Global site tag (gtag.js) - Google Analytics