红联Linux门户
Linux帮助

ACE高性能网络编程

发布时间:2012-01-25 12:12:20来源:红联作者:xyath
ACE高性能网络编程
2010-10-25 11:19
一、课程目标

本次课程针对使用ACE工具包进行高性能网络应用开发,通过本次课程的学习,学员将具备以下能力:

* 了解ACE的架构和组件;
* 理解现代操作系统线程模型、并发以及同步机制;
* 熟练使用ACE线程管理和同步机制接口开发并发应用;
* 熟练使用ACE基本的IPC SAP接口,如SOCK_Stream、SOCK_Dgram等;
* 深刻理解现代操作系统中事件多路分离和分派机制如select、epoll等、了解异步I/O以及完成事件的分派;
* 熟练使用ACE Reactor组件、Acceptor-Connector组件、Proactor组件等构建稳定、高效和灵活的网络应用。

二、参训要求

参加本次课程的学员须具备以下能力:

* 熟练掌握C++语法,理解C++面向对象和泛型(模板)机制;
* 了解TCP/IP协议,有网络编程概念。

三、课程实践环境

* 学员自备电脑
* 实践平台 (以下二者之一):
o Win32 / Visual Studio 2008 (或更新)
o Linux 2.6.18+ x86-32 / GCC 4.1.2+ / Eclipse CDT 、vi
* ACE 6.0.0+

四、课程大纲

本次课程由以下几个部分构成:
1、 ACE简介

* 什么是ACE?
* ACE的使用范围;
* ACE工具包的架构层次;
* ACE的组件简介。

2、ACE基础的网络I/O对象

* 详细介绍ACE_SOCK、ACE_SOCK_Acceptor、ACE_SOCK_Connector、ACE_INET_Addr等class的使用。
* ACE Socket基类:ACE_SOCK;
* TCP主动连接对象:ACE_SOCK_Connector;
* 基于TCP、面向连接的Socket:ACE_SOCK_Stream;
* TCP被动连接对象:ACE_SOCK_Acceptor;
* 基于UDP、无连接的Socket:ACE_SOCK_Dgram (Unicast)、ACE_SOCK_Dgram_Mcast (Multicast)、ACE_SOCK_Dgram_Bcast (Broadcast)。

3、ACE并发编程:线程与同步

* 线程与进程之区别;
* 用户线程与内核线程;
* 不同操作系统中的线程模型;
* ACE线程管理:Thread_Manager;
* ACE线程同步:ACE_Guard、ACE_Thread_Mutex等;
* ACE Task框架:Message_Block、Message_Queue、ACE_Task。

4、ACE Reactor框架

ACE Reactor框架简化事件驱动程序的开发,而事件驱动是很多网络化应用的基本特征,这些应用常见的事件源包括I/O事件、Posix信号或 Windows句柄激发以及定时器到期等。

* 关于ACE Reactor框架;
* 关于事件多路分离和分派 (Event demultiplexing and dispatching );
* Linux下 I/O事件多路分离机制:select、epoll;
* 事件处理器 ACE_Event_Handler:
* I/O事件(输入、输出)、信号、超时事件、异常事件的捕获和处理;
* ACE_Timer_Queue和ACE_Time_Value:
* 定时器的应用;
* ACE_Reactor:ACE的反应器为ACE Reactor框架的核心,负责事件的检测、多路分离和事件处理器的分派;
* 例程:基于ACE Reactor框架实现一个多人聊天室。

5、ACE Acceptor-Connector框架

ACE Acceptor-Connector框架实现了Acceptor-Connector模式,这种模式通过解除:1,网络化应用中相互协作的对等服务的连接和初始化所需的活动、2,以及它们一旦连接和初始化后所执行的处理的耦合,增强了软件复用和可扩展性。

* 集成了Message_Queue的ACE_Event_handler:ACE_Svc_Handler;
* 接受器:ACE_Acceptor;
* 连接器:ACE_Connector;
* 例程:基于Acceptor-Connector框架实现一个转发服务器。

6、ACE Proactor框架

Proactor框架引入异步I/O机制,既保留了Reactor框架的事件多路分离,避免多线程的开销,同时还缓和了反应式的同步I/O的瓶颈效应。

* 关于Proactor模式和Proactor框架;
* 关于异步I/O;
* 异步I/O工厂类:
* ACE_Asynch_Read_Stream和ACE_Asynch_Write_stream;
* ACE_Handler;
* 前摄式Acceptor-Connector;
* 前摄器:ACE_Proactor;
* 例程:基于Proactor框架重新实现多人聊天室。

7、ACE实用工具

* ACE日志实用工具:ACE_Log_Msg;
* 读写配置文件:ACE_Configuration_Heap;
* Singleton模式 (单例模式) 的ACE实现:ACE_Singleton类模板。

8、高性能网络编程讨论

* 考究高性能网络编程中应该遵循的原则,讨论并发、同步、事件多路分离等机制的适用场合。
* 网络应用的瓶颈在何处?
* 事件多路分离 vs 一连接一线程 (Event demultiplexing vs One thread per connection);
* 同步I/O vs 异步I/O (Synchronous I/O vs Asynchronous I/O);
* 如何适当地使用多线程?
* 什么时候需要多个 事件多路分离线程?

9、应用层协议定义与实现

* 为什么要自定义应用层协议?
* 定义应用层协议 (以XMMEP协议为例);
* 用C++实现自定义的协议 (以XMMEP协议为例)。
* 注:XMMEP为X-Messenger Message Exchanging Protocol。
文章评论

共有 5 条评论

  1. hug1985 于 2012-12-31 13:01:00发表:

    这个是什么意思?

  2. afeikuo7 于 2012-07-21 07:43:44发表:

    还没学到~

  3. viforce 于 2012-07-18 12:21:38发表:

    表示难解(6)m:b

  4. your 于 2012-01-25 16:29:24发表:

    路过

  5. xyath 于 2012-01-25 12:12:45发表:

    [i=s] 本帖最后由 xyath 于 2012-1-26 13:14 编辑 [/i]

    Boost高性能网络编程
    一、课程目标

    本次课程围绕高性能网络编程这一主题,从众多的Boost类库中挑选出Boost.Asio、Boost.Thread以及其它配套的实用库,作为主要学习的内容,通过本次课程的学习,学员将具备以下能力:

    * 掌握智能指针、高阶函数对象、对象序列化/反序列化等类库的使用;
    * 理解现代操作系统线程模型、并发以及同步机制;
    * 熟练使用Boost.Thread线程管理和同步机制接口开发并发应用;
    * 深刻理解现代操作系统中事件多路分离和分派机制如select、epoll等、了解异步I/O以及完成事件的分派;
    * 熟练使用Boost.Asio构建稳定、高效和灵活的网络应用。
    四、课程大纲

    本次课程由以下几个部分构成:
    1、Boost.Serialization - 序列化

    * 基本类型和自定义类型的序列化;
    * 数组、指针和智能指针的序列化;
    * STL容器、std::string的序列化;
    * 识别类的版本;
    * XML格式的archive;
    * 二进制格式的archive。

    2、Boost.Smart_Ptr - 智能指针

    * 回顾std::auto_ptr<>;
    * 无Copyable 语义的scoped_ptr<>;
    * shared_ptr<>;
    * weak_ptr<>;
    * enable_shared_from_this<>;

    3、Boost.Bind and Boost.Function- 函数对象相关

    * 什么是函数对象?
    * 回顾std::bind1st()、std::bind2nd()、std::mem_fun()、std::ptr_fun()等适配器;
    * Boost bind();
    * Boost Function;
    * Boost ref()。

    4、Boost.Signals2 - 实现回调机制

    * Boost Signal2:线程安全的Signal-Slot机制 (Publishers → Signals/Subscribers → Slots),即Observer模式的实现;
    * 简单的回调;
    * 多个Slot回调;
    * 管理Connections;
    * 一些示例。

    5、一些实用类库

    * Boost.Property_Tree;
    * Boost.Format;

    6、Boost.Thread - 多线程

    * 线程与进程之区别;
    * 用户线程与内核线程;
    * 不同操作系统中的线程模型;
    * 线程管理:线程创建、中断、分离/连接等;
    * 同步机制:Mutex、Lock、Condition_variable、TSS等。

    7、Boost.Asio - 网络编程

    Boost.Asio库,通过对各类操作系统原生的socket API以及事件多路分离、异步I/O API的封装,构成了一个性能优秀、可移植性高、便于编程的网络编程框架,使复杂的网络编程任务变得简单、安全、并且高效。

    * Asio相关概念:同步I/O和异步I/O、Proactor模式、Asio和线程;
    * Linux 下 I/O事件多路分离机制:select、epoll;
    * TCP同步I/O Server/Client编程示例;
    * UDP同步I/O Server/Client编程示例;
    * TCP异步I/O Server/Client编程示例;
    * UDP异步I/O Server/Client编程示例;
    * Timer - 定时器;
    * Asio核心接口介绍。

    8、高性能网络编程讨论

    * 考究高性能网络编程中应该遵循的原则,讨论并发、同步、事件多路分离等机制的适用场合。
    * 网络应用的瓶颈在何处?
    * 事件多路分离 vs 一连接一线程 (Event demultiplexing vs One thread per connection);
    * 同步I/O vs 异步I/O (Synchronous I/O vs Asynchronous I/O);
    * 如何适当地使用多线程?
    * 什么时候需要多个 事件多路分离线程?

    9、应用层协议定义与实现

    * 为什么要自定义应用层协议?
    * 定义应用层协议 (以XMMEP协议为例);
    * 用C++实现自定义的协议 (以XMMEP协议为例)。

    注:XMMEP为X-Messenger Message Exchanging Protocol。

    六、课程资源

    可获取的课程资源见:教学资源。

    Gtalk:athzhang@gmail.com
    MSN : athxy@live.cn
    Q Q :570508473
    电 话:18912671348