JAWS模块分析(小东子)
前言:学习ACE也已经有半年了,虽然还很肤浅,但感觉有那么一点意思了。最近分析了一下JAWS模块,拿出来跟大家共通交流。欢迎大家的讨论。杜绝商业目的,并保持文章的完整性。
本人信箱:yuanjiandong512@163.com
一 JAWS模块概况
总则:
JAWS主要有四个主要分块:并发策略(线程池、每个申请一个线程、单线程),I/O策略(同步,反应式,异步方式),协议处理(管道方式,模块方式),文件系统(LRU,LFU)。
JAWS主要的设计模式,单体模式,抽象工厂模式,工厂方法模式,反应器模式,主动对象模式,流水线模式,服务器运行时配置方式等)
JAWS的架构如图1-1所示:(总体方案)
图1-1 JAWS Web服务器构架
JAWS的并发策略如图1-2所示:
图1-2 JAWS 并发策略(线程池、Thread-per-Request)
JAWS的I/O策略如图1-3所示:
图1-3 JAWS I/O策略(同步策略、反应式、异步方式)
JAWS的协议流水线策略如图1-4所示:
图1-4 JAWS协议流水线策略
JAWS的文件缓存策略如图1-5所示:
图1-5 JAWS文件缓存策略
二 JAWS1程序分析
一 概述
JAWS1的程序实现没有完成全部JAWS的设计思想,主要进行了并发策略、I/O策略的完成。设计结构跟JAWS2比较,没有JAWS2的面向对象结构化强,没有它封装的好。
二 程序流程
第一阶段:MAIN()到数据库的INIT()
1、main() -> ACE_Service_Config.open()(采用运行时配置模式,svc.conf文件配置)加载生成的动态库(此处采用ACE自己的生产动态库的方式,参考书1,p24)(本分析采用默认选项:线程池,同步I/O)
2、http_server::init(),分析参数,根据参数选择并发策略(同步线程池、异步线程池、