ACE高性能网络编程

一、课程目标

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

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

二、参训要求

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

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

三、课程实践环境

  • 学员自备电脑
  • 实践平台 (以下二者之一):
    • Win32 / Visual Studio 2008 (或更新)
    • 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。

五、时间安排

课程时间:3天,以每天6小时计,具体安排如下:

  • Day1

    • 1 - ACE简介
    • 2 - ACE基础的网络I/O对象
    • 3 - ACE并发编程
  • Day2
    • 4 - ACE Reactor框架
    • 5 - ACE Acceptor-Connector框架
  • Day3
    • 6 - ACE Proactor框架
    • 7 - ACE实用工具
    • 8 - 高性能网络编程讨论
    • 9 - 应用层协议定义与实现
    • 课程回顾与总结

六、课程资源

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

http://www.xuanyuan-soft.cn

QQ:570508473

ACE高性能网络编程——学习大纲相关推荐

  1. Java架构师 学习大纲

    下图是我总结出目前最应该学习的源码知识点: 二.分布式架构 分布式系统是一个复杂且宽泛的研究领域,学习一两门在线课程,看一两本书可能都是不能完全覆盖其所有内容的. 总的来说,分布式系统要做的任务就是把 ...

  2. 学习嵌入式的书籍推荐,嵌入式编程入门教程学习大纲

    嵌入式系统是当前热门.具发展前景的IT应用领域之一,很多数字包括手机.电子字典.可视电话.数字相机.数字摄像机.机顶盒.智能玩具医疗仪器和航空航天设备等都是典型的嵌入式系统.越来越多的人想要了解学习嵌 ...

  3. Interview之AI:人工智能领域岗位求职面试—人工智能算法工程师知识框架及课程大纲(AI基础之数学基础/数据结构与算法/编程学习基础、ML算法简介、DL算法简介)来理解技术交互流程

    Interview之AI:人工智能领域岗位求职面试-人工智能算法工程师知识框架及课程大纲(AI基础之数学基础/数据结构与算法/编程学习基础.ML算法简介.DL算法简介)来理解技术交互流程 目录 一.A ...

  4. linux高性能网络编程,Linux高性能网络编程的介绍

    Linux高性能网络编程 一.课程目标 本次课程深入讲解Linux下的socket编程,并以此为基础,着重讨论如何提高网络服务端应用的性能,通过本次课程的学习,学员将收获以下方面的成果: 熟练使用so ...

  5. Boost高性能网络编程

    Boost高性能网络编程 Boost高性能网络编程    2010-10-25 13:04 一.课程目标 本次课程围绕高性能网络编程这一主题,从众多的Boost类库中挑选出Boost.Asio.Boo ...

  6. 谈一谈网络编程学习经验(06-08更新)

    谈一谈网络编程学习经验 陈硕 giantchen@gmail.com blog.csdn.net/Solstice 2011-06-08 PDF 版下载:https://github.com/down ...

  7. ACE网络编程模式比较

    ACE将网络编程进行了模式化,以便你不必每次都重复相同的代码. 网络编程需要处理的事情多括中断,并发,多线程等,程序格式相对固定,但是健壮的网络程序则相对复杂.为了处理这些情形,ACE内建了几个网络编 ...

  8. 电脑编程教学_东莞沙田mastercam编程学习怎么收费

    东莞沙田mastercam编程学习怎么收费 深圳卓越培训中心UG综合班主要课程:1,软件介绍,界面熟悉 ,快捷键,图层使用.2,草图使用,三维曲线绘制修改,草图线3D线互相转换.3,建模,绘制3D图形 ...

  9. html零基础学习入门,nlp网站例:HTML零基础入门-HTML学习大纲.doc

    nlp网站例:HTML零基础入门-HTML学习大纲 一.课程目标 掌握HTML语言,能够直接编写网页程序: 学会使用层叠样式表技术: 了解最常用的客户端脚本语言JAVASCRIPT,能够编写客户端的常 ...

最新文章

  1. 京东11.11大促背后,那些系统架构经历了些什么
  2. 浅谈OFBiz之权限设计
  3. 【BZOJ3700】发展城市 [LCA][RMQ]
  4. JAVA 对象引用,以及对象赋值
  5. AI:一个20年程序猿的学习资料大全—前端/后端/架构师/运维各种很多教程资料——只有你不想要的,没有你找不到的
  6. linux删除文件夹提示没找到,Win10中遇到删除文件夹提示找不到该项目的解决过程...
  7. c语言ascii码表_新手小白整理C语言笔记备忘,带你十分钟理解C语言
  8. 对正则表达式又重新学了一遍,笔记方便以后查阅
  9. 微信支付开发(1) JS API支付V3版(转)
  10. Visio 2007 下载安装
  11. MyBatis出现参数索引越界
  12. 芒果云 在线代码编辑器
  13. 如何利用matlab根据excel画三维图像
  14. 如何根据公司名称来筛选快递
  15. EXCEL编程经验总结
  16. 在线编码工具_每个新编码员都需要25种工具
  17. c++nullptr(空指针常量)、constexpr(常量表达式)
  18. php抖音小程序登录后端代码
  19. 一份完整的单机版slurm部署
  20. BZOJ 1367 [Baltic2004]sequence

热门文章

  1. 用ASK模型剖析马谡失街亭的必然性
  2. 【NOJ1144】【算法实验二】农场灌溉问题
  3. 如何在CSDN博客Markdown中插入视频/GIF
  4. QT+百度AI 手势识别
  5. 记录常用软件(以防忘记)
  6. 万亿市场爆发,机械制造业电商该如何破局
  7. 电商+小程序直播,前景如何?
  8. hive中字段长度函数_Hive常用函数总结
  9. mobilenetv1,v2,v3简要介绍
  10. 【技术文档】学术论文配色大全