to myself 的分类学习日志

做自己想做的事
posts - 232, comments - 6, trackbacks - 0, articles - 0

ACE读书笔记

Posted on 2013-09-03 13:38 kongkongzi 阅读(386) 评论(0)  编辑 收藏 引用 所属分类: c++ network library
目录
1. 整体说明
2. ACE C++ Wrapper Facade
3. ACE框架
4. 参考
附1. 单播、多播和广播
附2. 深入C++丛书


1. 整体说明

应用环境下的面向对象中间件层次(4层):

1) 主机基础设施中间件:封装OS API

2) 分布式中间件:在1)的基础上提供更高级的服务,例如连接管理和内存管理、同步、多线程等。CORBAACE ORBTAO)?

3) 公共中间件服务:为各种具体应用抽取出公共的服务,例如事件通知、日志记录、持久性、安全且可恢复的事务等。

4) 特定领域中间件服务:为特定的领域(例如电信、电子商务等)提供特定的服务。

 

分析过程、领域分析(domain analysis

问题空间(problem space):面对的是“软件体系及设计”方面的问题。

方案空间(solution space):涉及的是“实现应用程序的软件工具和技术”。

设计空间(design dimension),属于问题空间(?),了解领域内的抽象概念,达成共识。

 

ACE的层次化体系结构:

1) ACE OS Adaptation层(10%):由一个名为ACE_OS的类构成,包含500多个C++静态方法,这些方法封装了原始的、基于COS API

2) ACE C++ Wrapper Façade层(50%):在以面向对象的方法将1)中的方法封装成C++类。

分类:通信服务、连接/通信角色、通信领域。

3) ACE framework层(40%):加强类间的关联,提供更大粒度上的软件复用。(参考《c++网络编程 2》)

2. ACE C++ Wrapper Façade

     Network <-->Socket related <--> Message Block related <--> I/O CDR related

   其中Socket related包括:Address ConnectorAcceptorStream

服务器的并发设计: I/O操作是否频繁、计算任务是否繁重(“计算密集”型服务)。

     在整个ACE中使用统一的返回约定,即0表示成功,-1表示失败,失败的原因保存在errno中。

3. ACE框架













4. 参考

Advanced CORBA Programming with C++

http://ace.ece.uci.edu/

http://www.riverace.com

http://www.cs.wustl.edu/~schmidt/ACE.html

 

Douglas C.Schmidt

美国Vanderbilt大学电子工程与计算机科学系的教授。除了学术研究而外,Schmidt教授在面向对象通信系统构建方面已经拥有超过十年的经验。他是面向对象框架Adaptive Communication Environment(ACE)的首席架构者和开发者,该框架可自由获取、并得到了广泛使用,其中含有一组丰富的组件,实现了用于高性能和实时通信系统的各种设计模式。


 

附1. 单播、多播和广播

1, 单播(unicast):有具体目标地址的帧从源到达目标地址的过程。比如你对小月喊小月,那么只有小月答应你 。单播是说,对特定的主机进行数据传送。例如给某一个主机发送IP数据包。这时候,数据链路层给出的数据头里面是非常具体的目的地址,对于以太网来 说,就是网卡的MAC地址(不是FF-FF-FF-FF-FF-FF这样的地址)。现在的具有路由功能的主机应该可以将单播数据定向转发,而目的主机的网 络接口则可以过滤掉和自己MAC地址不一致的数据。

2, 多播(multicast):也叫组播。仅应用于UDP。就是帧送往定义在一组内的地址。比如你喊:是男人都过来一人发一百块钱。哪么男的都会过来女的就不会过来因为没有钱发她不会理你。多播组?帧仅传送给属于多播组的多个主机。使用多播,主机可加入一个或多个多播组。这样,网卡将获悉该主机属于哪个多播组,然后仅接收主机所在多播组的那些多播帧。Internet组管理协议(IGMP)、多播路由协议(如PIMDVMRP等)?当一台主机欲加入某个多播组时,会发出主机成员报告IGMP消息通知多播路由器。当多播路由器接收到发给那个多播组的数据时,便会将其转发给所有的多播主机。多播路由器还会周期性地发出主机成员查询IGMP消息,向子网查询多播主机,若发现某个多播组已没有任何成员,则停止转发该多播组的数据。此外,当支持IGMP v2的主机(如Windows 98/2000计算机)退出某个多播组时,还会向路由器发送一条离开组IGMP消息,以通知路由器停止转发该多播组的数据。但只有当子网上所有主机都退出某个多播组时,路由器才会停止向该子网转发该多播组的数据。IP多播应用的编程方法?

参考:http://baike.baidu.com/view/378050.htm

3, 广播(broadcast):仅应用于UDP。就是把帧发往所有能到达的地址。比如学校的广播中喊今天放假。哪么全校的同学都会响应,大叫爽死了。广播是主机针对某一个网络上的所有主机发送数据包。这个网络可能是网络,可能是子网,还可能是所有的子网。如果是网络,例如A类网址的广播就是 netid.255.255.255,如果是子网,则是netid.netid.subnetid.255;如果是所有的子网(BIP)则是则是 netid.netid.255.255。广播所用的MAC地址FF-FF-FF-FF-FF-FF。网络内所有的主机都会收到这个广播数据,网卡只要把 MAC地址为FF-FF-FF-FF-FF-FF的数据交给内核就可以了。一般说来ARP,或者路由协议RIP应该是以广播的形式播发的。

附2. 深入C++丛书





 


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理