nullnull三、分布式系统的软件体系结构软件的体系结构有一个范围、视角问题
即: 在什么样的范围内
以什么样的视角
看待 软件的体系结构
传统的方法主要
在单机环境中
从系统功能角度
看待 软件的体系结构
随着软件系统规模的增长及底层机制的完善
需要新的软件体系结构描述方法null分布式系统对软件的需求
自治性 Autonomy
可靠性 Reliability
可接受性 Availability
可扩展性 Scalability
互操作性 Interoperability
null自治性
应用程序的自治性是指
应用程序有能力控制其自身的关键资源
关键资源是应用程序作为独立的实体完成其功能时
所需要的珍贵资源
例如:RDBMS 连接
大型机连接
事务等
null可靠性
可靠性是指应用程序提供准确结果的能力
在一个多用户的环境中确保准确的结果是困难的
例子:
从一个帐户(A1)
向另一个帐户(A2)转一笔帐(M)
需要将A1减去M
并同时将A2增加M
null可接受性
可接受性指应用程序的响应时间能够被用户接受
这依赖于许多因素:
硬件可接受性
软件可接受性
网络可接受性 等
资源冗余可以提高响应时间null可扩展性
可扩展性是对处理能力能够与资源的增加
呈线性增长的一种期望
这使得应用程序在从支持10个用户
发展为支持10000个用户时
只要 增加必要的资源
扩大应用程序的规模即可
null互操作性
互操作性是指应用程序访问其它平台上的
应用程序、数据等资源的能力
许多企业环境支持多种不同的硬件与软件
它们必须协同工作
以共同为企业的运作服务null 目前存在三种描述分布式环境中软件体系结构的模型:
DNA:Distributed interNet Application Architecture
OMA: Object Management Architecture
EJB;Enterprise JavaBean
nullDNA、OMA、EJB皆是
在分布式环境中
从系统底层角度 看待 软件的体系结构
它们 解决的问题是类似的
分布式系统的软件体系结构
解决问题的方式也是类似的
基于互操作模型(构件间交互)
分离出公共功能(构件)
由于EJB与OMA很类似,不予详述null核心业务功能横向人机交互数据服务DNA倡导:3-Tier Applicationnull纵向OS ORBServicesFacilitiesDomain ObjectsOMA倡导: Layered ApplicationnullDNA与OMA互相渗透:
DNA在3层结构中不断地增加公共服务
例如: MTS
MSMQ
负载平衡 等
OMA在公共服务之上也定义了水平服务
例如: User Interface
Information Management
System Management
Task Management 等 null内 容
1、DNA
2、MTS
3、MSMQ四、DNADNAnullDNA是Windows 平台上的应用程序开发模型
用以指导如何:
利用Windows平台开发
强壮、可扩展、分布式的应用程序;
扩展现有的数据与外部应用程序
以支持Internet;
支持不同类型的客户设备
以增加应用程序的范围
由于DNA依赖于由Windows平台提供的综合、集成的服务
开发者可以 省缺分布式应用程序所需要的
基础设施的开发
而将精力集中在业务问题上1、DNADNAnull DNA设计原则:
Internet ready.
开发方案能完全利用 平台的灵活性
Internet的优势
通讯能力
Faster time to market.
快速开发、部署应用程序,不需要对开发者进行重新培训
降低开发者必须写的代码
True interoperability.
各模块皆具有互操作能力,以方便地向现有系统增加功能
符合开放的协议与
,以集成其它厂商的产品
DNAnullReduced complexity.
将关键服务直接集成到操作系统中
并通过构件以一般的方式提供服务
降低对IT专家的依赖
以集中精力解决业务问题
Language, tool and hardware independence.
提供语言中立的构件模型
使开发者可以使用任务专用的工具
以个人计算为基本模型
客户可以在大量可用的硬件上部署程序
Lower total cost of ownership.
开发的程序易于部署且易于维护DNAnullDNAnullDNAnullDNAnullDNA 提供多种
示服务
开发者可以根据具体情况选择最佳方案
基于Windows的构件
各种Internet技术 等
HTML
Scripting
DHTML
Components
Win32 API
以支持丰富的界面与客户环境
从手持无线设备到高端工作站DNAnullDNAnullWeb Services
Internet Information Server (IIS) 可用于
开发基于Web的商务应用系统
这样的系统便于扩展、便于部署
作为IIS技术之一的Active Server Pages(ASP)
具有
语言中立
编译省缺 的特点
是服务器端脚本环境
用于创建、运行动态且交互的Web服务器应用程序
利用ASP脚本及其它协调构件构造的应用程序
可以与现有的系统、应用程序及数据协同工作DNAnull
Component Services
基于互操作模型
Component Object Model(COM)
增强分布处理功能
Microsoft Transaction Server (MTS)
目前已发展为COM+
通过降低为利用底层系统服务而编写的代码量
使开发分布式应用系统更为
快速
容易
廉价DNAnullCOM+ 服务包括新的或增强的服务包括:
Bring your own transaction.
COM 构件可以参与由非COM+ 事务处理环境管理的事务
只要它支持Transaction Internet Protocol (TIP)
Load balancing.
基于构件的应用程序可以以客户透明的方式
在应用程序群中分布工作负载
In-memory database.
内存数据库是一个事务性数据库系统
用以支持对数据的快速访问DNAnullQueued components.
异步执行在网络环境下是不可避免的
队列可以对异步执行提供良好支持
Event notification.
COM+ 事件是同时支持单播/多播、发布/订阅的事件机制
允许多个客户“订阅”由各种服务器“发布”的事件
Expanded security.
支持基于角色的安全与处理访问许可安全
COM+ 增加了方法级安全
Centralized administration.
Component Services Explorer提供了一致的管理模型
减少了部署、管理及监控 n层的应用程序DNAnull
Messaging Services
Microsoft Message Queue Server 提供
松耦合、可靠的通讯服务
通过实现 push 风格的商务事件方便了应用系统的集成
在不可靠、代价低的网络上建立起可靠的应用系统
Microsoft Message Queue Server 还提供了
与其它消息队列产品的无缝连接
例如:IBM’s MQSeries等
DNAnull
向大型机事务处理扩展
通过使用COM构件及COM Transaction Integrator (TI)
开发者可以扩展 大型机上的事务程序
例如:
Customer Information Control System (CICS)
Information Management System (IMS)
等
COM TI包括一系列的开发工具与服务
可以自动“封装”IBM的事务功能
所有的 COM TI 处理皆在Windows NT Server上进行DNAnull
关键的Application Server Technologies包括:
Microsoft Transaction Server
Active Server Pages
Microsoft Internet Information Server
Microsoft Message Queue Server
Microsoft Component Object Model
DNAnullDNAnull
企业需要从分布的数据与信息中获取最大的商业利益
Universal Data Access
提供对各种信息资源的高性能访问
包括关系、非关系数据
提供独立于工具与语言的编程接口
Universal Data Access 基于开放的工业规范
得到了工业界及数据库厂商的广泛支持
DNAnull
DNA中基于Universal Data Access的框架包含两层:
在系统层:
OLE DB 定义了一个基于构件的体系结构
封装了各种数据库管理系统服务
OLE DB 不对数据源进行约束
在应用层:
ActiveX Data Objects (ADO) 提供了高层接口
使开发者可以从任何编程语言访问数据
在每一层:
Extensible Markup Language (XML)使开发者
可以在应用程序客户之间进行
描述、交付、交换结构化数据
XML 也可以在服务器之间进行结构化数据的传送DNAnullDNA优点总结:
为分布式应用程序的开发提供集成、综合的平台
将开发者从底层工作中解放出来
方便地与现有系统、数据等协作
保护对现有系统的投资
提供构件模型、共性服务以及支持工具
减少开发分布式系统的时间DNAnull3、MTS什么是事务
事务是一个不可分割的工作单元
在一个不可靠的环境中
事务是保证系统获得准确结果的有效措施
一个事务 可以正常完成
也可以被终止,并“卷回”到初始状态
如果一个过程的执行满足上述“事务”特性
则我们称该过程是“事务性”的DNAnull事务的四个特性 (ACID) :
原子性 (Atomicity) :
包含在事务中的活动或者全部有效,或者全部无效
一致性(Consistency) :
事务涉及的各种数据必须保持一致性
分离性 (Isolation) :
不同事务之间互不干扰
永久性 (Durability) :
只要事务成功完成,则其结果一定有效
其中:
一致性是开发者需关注的
原子性、分离性、持续性
由底层的事务处理系统提供DNAnullMTS (Microsoft Transaction Server )
MTS 是 一个基于构件的运行时基础设施
是 开发、部署、管理分布式服务应用程序的
事务处理系统
MTS是 台式机的灵活性、代价低
与高端大型机系统的业务关键处理 的结合
MTS还是 构件管理器
负责将应用系统的客户程序
与应用构件对象
以及各种资源 有机地结合起来DNAnullMTS对象 与 MTS客户
MTS对象是指运行在MTS环境下的COM构件实例
MTS为每个对象维护了一个环境对象
MTS对象与其环境对象具有同样的生存周期
环境对象实现了 IObjectContext接口
环境对象通过该接口提供事务、安全控制等能力
MTS客户是指MTS对象的客户程序
可以是一个运行于MTS环境之外的应用程序
也可以是另一个MTS对象DNAnullIObjectContext : public IUnknown {
public:
virtual HRESULT CreateInstance(
REFCLSID rclsid,
REFIID riid, LPVOID __RPC_FAR *ppv) = 0;
virtual HRESULT SetComplete( void) = 0;
virtual HRESULT SetAbort( void) = 0;
virtual HRESULT EnableCommit( void) = 0;
virtual HRESULT DisableCommit( void) = 0;
virtual BOOL IsInTransaction( void) = 0;
virtual BOOL IsSecurityEnabled( void) = 0;
virtual HRESULT IsCallerInRole(
BSTR __MIDL_0000,
BOOL __RPC_FAR *__MIDL_0001) = 0;
};DNAnull其中:
CreateInstance 函数用来创建另一个MTS对象
SetComplete 函数结束一次操作并指示一次事务被提交
SetAbort 函数结束一次操作并指示一次事务被取消
EnableCommit 函数允许事务提交操作
DisableCommit函数禁止事务提交操作
IsInTransaction函数判断当前对象是否在事务状态下运行
IsSecurityEnabled 函数判断对象的安全许可
IsCallerInRole 函数指定对象的调用者
是否在当前服务进程的安全角色中DNAnullMTS特性
事务管理器
简化数据库应用对数据的操作
对分布式数据库的支持尤为明显
对象管理器
为基于COM的构件应用应用系统提供
配置和管理的基础
及时激活(Just-In-Time Activation)
为提高服务器资源的利用率
在客户一致持有对象引用的前提下
激活、去活对象
器
MTS提供基于NT安全的分布式安全服务
防止对业务应用的未授权访问DNAnull4、MSMQ (Microsoft Message Queue )MSMQ 提供了一种异步通信服务
解决在 不可靠或者慢速网络连接
远地用户
异构应用程序 等环境中的问题DNAnull两个应用程序之间进行通信时存在三种可能的情形:
当一个应用程序向另一个应用程序发出消息后
它可能:
® 等待一个直接的应答
® 在一定的时间内等待应答
但在这段时间内执行其它工作
® 不等待应答
第一种情况即为同步通信
而第二种、第三种情况为异步通信DNAnullMessage Queuing的优点
® 交付可靠
消息可以存放在基于磁盘的队列中
以在失败时进行恢复
® 路由
当发送者与接受者之间的直接连接不通时
消息队列系统可以存储并转发消息
® 连接无关性
发送者与接受者不必一致处于连接状态
应用程序的性能基本不受网络流量的影响
® 基于事务
消息可以与事务进行集成
以保证只有在事务成功时才被发送
® 优先级处理
消息可以被赋予优先级
优先级高的消息将首先被处理DNAnull应用程序通过MSMQ API 访问消息队列
任何可以调用COM对象并利用MSMQ API的语言
皆可以获得一个MSMQ对象模型
MQCreateQueue
MQDeleteQueue
MQLocateBegin
MQLocateNext
MQLocateEnd
MQOpenQueue
MQSendMessage
MQReceiveMessage
MQCreateCursor
MQCloseCursor
MQCloseQueue
MQSetQueueProperties
…...DNAnullMSMQ Queue TypesDNAnull 消息与应答队列
这是应用程序使用的两个主要队列
分别用于存放应用程序发送与接收的消息
管理队列
管理队列包含由MSMQ产生的回应消息
包括发送成功、发送失败两类消息
期刊队列
用于保存应用程序消息的备份
以进行日志、审计及恢复
无效消息队列
保持哪些因超时或者目的地错误而未发出的消息
报告队列
用于跟踪消息被发送的过程
报告队列接收MSMQ产生的报告消息DNA