2015年软考系统架构设计师学习笔记第十章(1)
发布时间:2010/12/4 22:32:22 来源:城市学习网 编辑:ziteng
构建平台与典型架构
10.1 OMG 方式
对象管理组 OMG,通过规范化对象 开放市场的 所有层次上的互操作性。
10.1.1 对象请求代理
CORBA 的主要目标就是使用不同语言、不同实现、不同平台 能进行交互。
CORBA 三个基本部分:一套调用接口、对象请求代理 ORB、一套对象适配器。
10.1.2 公共对象服务规范
两类服务:一类服务应用于企业计算系统。一类服务应用于细粒度的对象操作,但目前这些服务的实用价值较差。
1、支持企业分布式计算的服务
1.命名服务、交易器服务
命名服务 允许 任意地给对象赋予一个名字,这个名字在其所属的命名语境中是唯一的。
命名语境所形成的层次结构,使得所有的名字形成名字树。
交易器服务 允许给对象 赋予一个复杂的描述,从而允许客户基于该描述来定位所需的对象。
搜寻结果往往是 满足查询条件的 一组对象列表。
2.事件服务、通告服务
事件服务 允许定义那些 从 时间生产者 被 发送到时间消费者 的事件对象。
信息只能从生产者流向消费者,事件必须通过事件通道传播,事件可以具有类型,而通道可以根据类型过滤事件。
事件通道支持“推”“拉”两种方式 的事件通告模型。
通告服务为事件服务增加了几个重要的特征——服务质量 QoS 规范和管理。
3.对象事务服务
对象事务服务OTS,是建立分布式应用最重要的服务之一。
OTS 实现必须支持平坦事务,而嵌套事务是可选的。
在基于构件的系统中,嵌套事务似乎不可避免。
平坦事务在构件系统中的价值有限,实际上,现有的主流事务中间件也不支持嵌套事务。 [NextPage] 6.并发控制服务
支持对象资源进行 加锁、解锁。
锁必须依赖于 事务的语境 或 其他语境才能获得。
读锁、写锁、升级锁。
读锁允许多个客户同时执行读操作,写锁允许一个客户写操作,升级锁是可以升级为写锁的读锁 支持互斥读。
每个受保护的资源都拥有一个锁集合。锁集合 不是事务型 就是非事务型,并可与其他锁集合建立关联。
8.生命周期服务
支持 创建、复制、移动、删除 CORBA对象,及其相关的对象组。
包含关系支持嵌套复制。
11.外部化服务
支持对象网 和 对象流 之间的双向映射。对象网外部化后 再内部化 意味着创建该对象网副本。
外部化服务并不保证引用的完整性,仅保留同时外部化的对象之间的引用。
对象必须实现 Streamable 接口才能被外部化。
12.属性服务
允许将任意的属性与对象关联起来,被关联的对象必须实现 ProperySet接口。
13.对象查询服务
依靠属性定位对象。
15.时间服务
拥有众多异步时钟的分布式系统 固有的误差问题。
10.1.3 CORBA 构件模型
CORBA 对象适配器主要的作用 就是在一个 ORB 和 真正接收调用并且返回结果的 对象之间 进行交互。
10.2 SUN 公司的方式
Java 构件技术的概述
Java中,编译器会检查 Applet 代码的安全性,通过了编译器检查的 Applet 代码不会带来安全隐患。
由于编译得到的字节码仍然可能被人修改,代码在装载时刻会被再次检查(称为“校验”)。
运行环境(Runtime Environment,RE)、软件开发工具包(Software Development Kit,SDK)、参考实现。
运行环境是 Java 虚拟机 和 必须具有的 J2SE API 的实现。
10.3 Microsoft 的方式
微软选择的是最简单的路线,他没有提出一整套标准;相反,他不断对已有的应用和平台基础进行再工程,这就可以获益于以前的成功技术。
语言无关性,作为 CLR 的一条主要原则。
10.3.1 第一个基础关联模型——COM
COM 所定义的一个基础实体是接口。在二进制层面上,一个接口被表示为指向一个接口节点的指针。
接口节点 唯一被指定的部分是 置于其内部第一个域的 另一个指针,这个指针指向一个过程变量表(或者说,函数指针表)。
每个 COM 对象都有 IUnknown接口,通常置于 COM对象图的顶端。
他的“真实”名字是他的 IID,即 00000000-0000-0000-C000-000000000046 为了方便,所有接口也有一个 可读名。
根据习惯,可读接口名以字母I开头。与 IID 不同,可读接口名 并不保证是唯一的。因此,编程中的接口引用均使用 IID。
IUnknown 接口的首要用途是在 最抽象的情况下 标志 COM对象,此时 COM对象 没有任何特殊功能。
IUnknown 接口 只提供对任何 COM接口都必须的三个强制性方法。QueryInterface、AddRef、Release,后两个强制性方法被用来控制对象的生命周期。
类型 HRESULT 被大多数 COM接口的方法用来表示调用成功或失败。 QueryInterface表明查询的接口是否被支持。
每个 COM对象都会进行引用计数,引用计数变量被共享使用的情况下,COM对象 不能释放接口节点。
一般这样做没有问题,也是通常的做法。
某些情况下占用很多资源,可以使用独立的引用计数变量,以便节点可以尽早释放。这种根据需要创建和删除接口节点的技术有时被称作“快速装卸接口(Tear-Off Interface)”