设为首页 加入收藏

TOP

C++网络编程 卷1 运用ACE和模式消除复杂性――笔记1(一)
2016-09-16 23:03:10 】 浏览:607
Tags:网络编程 运用 ACE 模式 消除 复杂性 笔记

第0篇

0.3.1 面向对象中间件层

1、常见面向对象中间件体系结构:

1)主机基础设施中间件:对并发和ipc机制封装,如JavaPackage、ACE

2)分布式中间件:扩充1),使一些网络编程任务(连接管理和内存管理、整编、解编、端点和请求的多路分离)自动化,即只需向目标对象请求操作,不关心目标的位置、语言、OS、硬件,核心是ORB(Object Request Broker),如COM+、Java RMI、CORBA,主要是管理支持“面向对象”分布式编程模型的终端系统资源,

3)公共中间件服务:扩展2),定义了更高层次、独立于特定领域的服务,如事件通知、日志记录、持久性安全且可恢复的事务,是对整个分布式系统中的各种资源进行分配、调度和协调

4)特定领域中间件服务:满足特定领域(如电信、电子商务、医疗保健、过程自动化、航空电子)的特定需求,面向“纵向市场”(其他中间件层提供的是广泛复用、横向的机制和服务)

0.4 ACE工具包

1、 ACE软件包基础:

1)ACE OS Adaptation层:封装了原始的基于C的OS API,提供统一的OS接口

2)ACE C++ Wrapper Facade层:在类型安全的面向对象接口中封装了一些C++类,而不再是独立的C函数

3)ACE framework层:集成、扩充2),运用高级的并发和网络编程模式,具体化ACE中多组相关类之间的标准控制流程和合作,获得更大范围的软件可复用性

a)事件多路分离和分发框架:Reactor和Proactor框架,自动处理和应用相关的处理程序的多路分离和分发,以相应各种基于I/O、计时器、信号、同步的事件

b)连接建立和服务初始化框架,Acceptor-Connertor框架,将主动和被动初始化角色,和初始化结束后通信对等服务所执行的应用处理,分离开来

c)并发框架:Task框架,实现主要的并发模式(Active Object、Half-Sync/Half-Async),将方法的执行/请求、同步/异步处理分离开来

d)服务配置起框架:Component Configurator组建配置起模式,支持开发后期动态组装,运行期间动态重新配置

e)流框架:Pipes and Filters模式,每个处理步骤封装在过滤模块。

4)ACE网络服务组件层:网络服务库,库中的服务被包装成组件,ACE库本身不包含这些组件,它们被捆绑在ACE软件的发行包中,提供的功能有,演示ACE功能的常见使用方式、提取客服用的网络应用构件

第1篇 面向对象网络编程

第1章 通信设计空间

1.1 无连接与面向连接

无连接提供“面向消息”服务,即每个消息独立寻址发送,不保证到达次序,不保证一定会到达,如用户数据报协议UDP/IP,可直接用于多媒体应用,允许一定程度的数据丢失,还是支持不可靠的多播、广播

面向连接提供可靠、有序、不重复的发送服务,如传输控制协议TCP,用于面向会话的应用,设计时必须考虑:

(1)数据成帧策略:某些面向连接(TP4、XTP)协议支持面向消息发送策略,而TCP是字节流协议,不保护应用程序消息的边界,因此要在字节流上实现数据分帧机制

(2)连接多路复用策略

1)多路复用:多线程的客户请求都通过一条TCP连接传递给服务器进程,优点节省OS资源,缺点编程难、效率低、确定性低

2)非多路复用:每个库户通过不同的连接和对等服务程序通信,优点可以更好控制通信的优先级,同步开销小,发送和接收双向请求不需要额外的锁定工作,缺点使用更多OS资源,某些环境(如大容量电子商务服务器)伸缩性不是很好

1.2 同步、异步消息交换

管理请求-应答协议交换策略:同步、异步,选择时考虑的因素请求之间的关联性、底层协议或传输介质的延迟

(1)同步请求-应答协议:锁步次序交换,即每个请求必须同步接收到一个应答,才能发送下一个请求,使用场合:

1)请求的结果决定后续请求

2)应用程序中交换的信息需要在低延迟网络中执行短期处理

3)比异步性能提高

(2)异步请求-应答协议:将请求连续发送到服务端,不需要等应当再发下一个请求,因此需要一种策略来检查请求的丢失或失败,然后重新发送,使用场合:

1)无需应答就可以决定后续请求,每个请求是独立的

2)通信延迟和请求所需处理事件密切相关

1.3 消息传递、共享内存

消息传递:明确地通过IPC(Inter Process Communication,进程间通信)机制交换字节流和“面向记录”的数据,IPC机制:通过IPC信道,将数据以消息形式从一个进程或线程传输给另一个进程或线程

共享内存:允许相同或不同主机上的多个进程访问、交换数据,就像数据位于没一个进程的本地地址空间一样,两种形式:

(1)本地共享内存:进程拥有一个或多个共享内存区,可以被映射到不同的虚拟地址范围

1)System V UNIX共享内存,shmget()创建或返回共享内存区,进程通过shmat()将该内存去挂接到自己的虚拟地址空间

2)内存映射文件,文件的全部或局部映射到虚拟内存区,该虚拟内存区被多个进程共享,内存映射文件的内存可以转存至永久存储器中

(2)分布式共享内存DSM:程序设计的一种抽象,扩张了OS虚拟内存机制,以供应程序所需,通过全局/共享内存中的数据尽心透明的进程间通信,提现共享内存多处理器和分布式系统这两种计算范式的结合

第2章 Socket API 概述

2.1 操作系统IPC机制

操作系统IPC机制分为两类:
本地IPC:位于同一计算机上实体间通信,如共享内存、管道、UNIX领域、socket、门、信号等
远程IPC:允许配置或分布在一个网络上的实体间通信,如Internet邻域socket、X.25电路、Win32命名管道

2.2 Socket API

Socket API包含大约20多个系统函数,分为五类:

1)本地环境管理,管理本地环境信息,这些信息通常存储在OS内核或系统库中

socket()、bind()、getsockname()、getpeername()、close()

2)连接的建立和终止

connect()、listen()、accept()、shutdown()

3)数据传输机制,通过socket句柄发送和接收数据

send()、recv()通过特定I/O口传送和接收数据缓冲区

sendto()、recvfrom()交换“无连接”数据包,每一个sendto调用都要提供接收方IP

UNIX上还可用于其他类型的I/O句柄,如文件和终端设备,read()和write()、readv()和writev()、sendmsg()和recvmsg()

4)选项管理,可改变缺省的socket行为,来支持多播广播,能修改/查询传输缓冲区大小

setsockopt():在协议栈的不同层修改选项

getsockopt():在协议栈的不同层查询选项

5)网络地址,将可读性名称解析为地基网络地址

gethostbyname()、gethostbyaddr()处理主机名和IPv4地址在指尖的网络地址映射

getipnodebyname()、getipnodebyaddr()处理主机名和IPv4/IPv6地址之间的网络地址映射

getservbyname()通过具有可读性的名称标识服务

Socket API常用来编

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++异步调用利器future/promise实.. 下一篇C++侵入式智能指针的实现

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目