ACE读书笔记

1. 整体说明

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

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

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

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

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

 

分析过程、领域分析(domainanalysis)

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

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

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

 

ACE的层次化体系结构:

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

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

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

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


2. ACE C++ Wrapper Facade

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

         其中Socket related包括:Address 、Connector、Acceptor和Stream。

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

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


3. ACE框架









 4. 参考

《Advanced CORBA Programmingwith C++》

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

http://www.riverace.com

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


Douglas C.Schmidt

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


附1. 单播、多播和广播

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

2, 多播(multicast):也叫组播。仅应用于UDP。就是帧送往定义在一组内的地址。比如你喊:是男人都过来一人发一百块钱。哪么男的都会过来女的就不会过来因为没有钱发她不会理你。多播组?帧仅传送给属于多播组的多个主机。使用多播,主机可加入一个或多个多播组。这样,网卡将获悉该主机属于哪个多播组,然后仅接收主机所在多播组的那些多播帧。Internet组管理协议(IGMP)、多播路由协议(如PIM、DVMRP等)?当一台主机欲加入某个多播组时,会发出“主机成员报告”的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++丛书


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值