mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-11-30 02:47:56 +08:00
update REAMD.md
This commit is contained in:
parent
142e9f04ea
commit
81992fd937
15
README.md
15
README.md
@ -83,29 +83,40 @@ acl 工程是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD
|
||||
13. 获得当前文件流指针位置,类似于 ftell
|
||||
14. 获得文件尺寸
|
||||
15. 获得网络流的本地地址及远程地址
|
||||
|
||||
##### 1.2.1.2、网络操作模块
|
||||
该模块主要支持网络服务端监听(支持 TCP/UDP/UNIX 域套接口)、网络客户端连接(支持 TCP/UNIX 域套接口)、DNS 域名查询及结果缓存(支持调用系统 gethostbyname/getaddrinfo 函数和直接发送 DNS 协议两种方式)、套接口(socket)操作及取本机网卡等功能。
|
||||
|
||||
##### 1.2.1.3、非阻塞网络流
|
||||
支持非阻塞方式连接、读(按行读,规定长度读)、写(写行,写规定长度,写一组数据)等操作。
|
||||
|
||||
##### 1.2.1.4、常见网络应用协议库
|
||||
主要支持常见网络应用协议,诸如:HTTP、SMTP、ICMP,其中 HTTP、ICMP 两个模块实现了阻塞、非阻塞两种通信方式;此外,HTTP 协议在C++版的 lib_acl_cpp 中还支持服务端、客户端两种通信方式,当作为服务端使用时,支持类似于 JAVA HttpServlet 的接口使用方式,当作为客户端方式使用时,支持连接池与集群管理方式,该模块同时支持 cookie、session、HTTP MIME 文件上传、分块传输、字符集自动转换、自动解压缩、断点续传等丰富的功能。
|
||||
|
||||
##### 1.2.1.5、常见网络通信库
|
||||
支持 memcached、beanstalk、handler socket 客户端通信库,该通信库支持连接池方式。
|
||||
|
||||
#### 1.2.2、网络 IO 事件引擎
|
||||
支持 select(UNIX/LINUX/WIN32)、poll(UNIX/LINUX)、epoll(LINUX)、kqueue(BSD)、devpoll(solaris)、iocp(WIN32)、窗口消息(WIN32) 等系统事件引擎,同时支持 Reactor 及 Proactor 两种编程模型。
|
||||
|
||||
#### 1.2.3、网络服务器框架
|
||||
该模块是 acl 中最为重要的模块,提供了服务器编程中常用的基础设施,该服务器框架来源于著名的 Postfix,在其基础上进行了诸多扩展,目前已经支持的主要服务模型有:
|
||||
|
||||
##### 1.2.3.1、进程模型
|
||||
一个连接一个进程,这种模型的优点是编程简单、安全稳定,缺点是并发度不高;
|
||||
|
||||
##### 1.2.3.2、线程模型
|
||||
每个子进程是由线程池中的一组线程处理所有的客户端连接,采用 IO 事件触发方式,只有当连接有数据可读时才会将连接与一个线程进行绑定,线程处理完后立即归还给线程池,这种模型的最大优点是可以用少量的线程便可以处理大量的客户端连接,而且编程比较简单(相对于非阻塞模型);
|
||||
|
||||
##### 1.2.3.3、非阻塞模型
|
||||
每个子进程是由一个单独的非阻塞线程组成,该线程采用完全非阻塞 IO 方式处理外来的大量客户端连接(类似于 nginx/squid/ircd),该模型的优点是处理效率高占用资源少,可以处理大量客户端连接,缺点是编程比较复杂;
|
||||
|
||||
##### 1.2.3.4、协程模型
|
||||
虽然非阻塞服务模型可以获得大并发处理能力,但编程复杂度较高,协程模型综合了大并发的处理能力和较低的编程复杂度的特点,使编程人员可以顺序 IO 的编程方式简单实现业务逻辑;
|
||||
|
||||
##### 1.2.3.5、UDP通信模型
|
||||
该模型主要为了支持 UDP 网络过程而增加的服务模型;
|
||||
|
||||
##### 1.2.3.6、触发器模型
|
||||
该模型的实例主要用来处理一些定时任务的后台服务过程(类似于系统的 crontab)。
|
||||
|
||||
@ -116,6 +127,7 @@ acl 工程是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD
|
||||
|
||||
#### 1.2.5、HTTP 协议库
|
||||
提供了完整的 HTTP 协议实现,支持 HTTP/1.0、1.1 版本; 同时支持客户端模式及服务端模式:
|
||||
|
||||
##### 1.2.5.1、客户端模式
|
||||
1. 支持连接池方式;
|
||||
2. 支持 chunked 块传输;
|
||||
@ -124,6 +136,7 @@ acl 工程是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD
|
||||
5. 支持断点续传;
|
||||
6. 支持设置/获取 Cookies;
|
||||
7. 支持 Websocket.
|
||||
|
||||
##### 1.2.5.2、服务端模式
|
||||
1. 支持类似于 Java 的 HttpServlet 使用方式;
|
||||
2. 支持 chunked 块传输;
|
||||
@ -133,6 +146,7 @@ acl 工程是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD
|
||||
6. 支持设置/获取 Cookies;
|
||||
7. 支持 HTTP MIME 格式;
|
||||
8. 支持 Websocket.
|
||||
|
||||
#### 1.2.6、Redis 客户端库
|
||||
1. 支持 redis 集群模式及非集群模式;
|
||||
2. 支持连接池方式;
|
||||
@ -293,6 +307,7 @@ acl 工程是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD
|
||||
|
||||
## 五、使用许可
|
||||
- LGPL-v3 license (see [LICENSE.txt](LICENSE.txt) in the acl project)
|
||||
|
||||
## 六、参考
|
||||
- WEB 站点: http://zsxxsz.iteye.com
|
||||
- Github: https://github.com/acl-dev/acl
|
||||
|
Loading…
Reference in New Issue
Block a user