1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

新闻 acl 3.1.2 版本发布,网络通信与服务器编程框架 下载

本帖由 漂亮的石头2015-05-11 发布。版面名称:软件资讯

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    485,198
    赞:
    46
    acl 3.1.2 版本发布了,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 升级的主要内容有:修复了 acl redis 库中几处 BUG,增加了对 redis cluster 管理命令的支持;对 redis 客户端库提供了英文注释;提供了用于创建与维护 redis 集群的工具 redis_builder;增加了针对集群消息队列 disque 的支持;通用连接池模块功能的完善。

    acl 包括以下丰富的常用函数库:
    1、常见网络应用库: SMTP 客户端库/PING 库/memcache 客户端库/handlersocket 客户端库/beanstalk 客户端库/redis 客户端库/disque 客户端库
    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_define_win32.h 中的 socklen_t 的定义原来使用宏定义 #define 方式,有时会因为有些版本的 VC 提供了此类型而导致编译报错,现在改为 typedef 定义方式

    二、lib_protocol 库
    .无

    三、lib_acl_cpp 库
    .新特性:redis_client_cluster 类支持静态初始化哈希槽与服务结点的对应关系,从而避免了运行时的重定向
    .新特性:新增加类 redis_cluster,支持官方新公布的 CLUSTER 指令集
    .新特性:增加了 redis_slot 类及 redis_node 类,方便对集群中的 redis 结点进行管理
    .新特性:redis_cluster 类中的 cluster_nodes, cluster_slots, cluster_slaves, cluster_info 方法返回组织好的结果集
    .新特性:connect_monitor 连接池自动检测类支持应用重载 IO 处理过程,从而可以面向更复杂的通信协议处理情况
    .新特性:增加了分布式消息队列 disque 的客户端库模块

    .性能提升:HttpServletResponse::write 当采用 chunk 传输时由原来的多次调用系统 API write 方式改为只调用一次 writev,从而减少了系统调用次数

    .问题修复:redis_command.cpp 中最后三个 get_strings 函数在取得 rr 下标时有误
    .问题修复:redis_cluster 类中的 reset 方法与基类 redis_command 中的方法重名,造成了命名污染,现将 redis_cluster 中的所有方法都加了前缀 cluster_
    . 问题修复:acl::redis 类因为是虚继承了 redis_xxx 类,所以无法通过这些类的构造函数将参数传递给基类 redis_command 的构造函数,必须在 acl::redis 的构造函数中显示地将参数传递给基类 redis_command 的构造函数
    .问题修复:redis_client::get_redis_string 当数据长度为 0 时会出现异常, 从而兼容 redis 是允许数据值为空串的情况
    .问题修复:redis_command.cpp 中的 run 方法在处理服务器返回的 ASK 响应后应该向目标服务器先发送 ASKING 指令
    .问题修复:redis_command 类中的方法 get_client_addr 当采用集群模式时不能取得当前所用连接的服务端地址
    .问题修复:samples/connect_manager,异步检测对象应该是局部的,不应与 monitor 绑定在一起,增加了 check_async 回调类
    .问题修复:类 aio_timer_callback 中的方法 set_time 中在给成员变量 present_ 赋值时,在 32 位系统下会造成计算结果值的整形溢出

    四、示例
    1、app/redis_tools/redis_builder:该工具用于创建与管理 redis 集群
    2、lib_acl_cpp/samples/redis/redis_cluster:该例子于用测试 redis 中的 CLUSTER 命令集

    五、参考链接:

    oschina git: https://git.oschina.net/zsxxsz/acl/
    download:http://sourceforge.net/projects/acl/
    github:https://github.com/zhengshuxin/acl
    acl 3.1.2 版本发布,网络通信与服务器编程框架下载地址
     
正在加载...