Chia° bocom 第13章组件和网络应用程序结构 前节介绍了如何使用ASP动态地创建网页。ASP脚本能够查看由浏览器传送过来的信息, 动态地创建一个 HTML(或 DHTML)页面送回浏览器。创建这个页面时,我们能获得从数据库 (如 SQL Server或MSDE)中检索的信息,并且把这些信息加到HTML页面中送回浏览器 但是,ASP不仅能够创建动态网页,它还具有将页面组合进网站的能力,该网站具有应 用程序的功能。 Application和 Session对象使应用程序具有状态,允许在对网站的请求之间 甚至在网站的所有用户之间共享消息。这些应用软件包括传统应用程序的所有功能。 建立更大、更可扩展的应用程序时,ASP技术能使建立过程更为简单。如果一个应用程 序真正可扩展,那么就可以用同样的程序处理大量的用户,而且与处理少量用户时的性能相 近。由于网站的建立能够给我们带来收益,所以能支持更多用户意味着有更多的收益。建立 更可扩展的应用程序的关键是用组件构造它们,本章和下面几章介绍如何用组件设计应用程 本章主要内容有 分布式应用程序的结构,包括 Windows dna。 网络应用程序的构成 组件的定义 ActiveX和COM简介。 组件的三种类型和使用原因 使用组件建立网络应用程序。 设计一个基于组件的网络应用程序 下面首先介绍应用程序结构。 13.1分布式应用程序的结构 应用程序设计的一个关键要素是系统结构,系统结构决定了应用程序的各个部分如何进 行交互,同时也决定了每个部分实现的功能。在这个基于网络的世界中,通常在分布式环境 中创建应用程序。实际上,本书中的ASP应用程序就是分布式应用程序。 分布式应用程序利用多台机器的资源及许多进程的空间,把应用程序分成更易管理的任 务组,这些任务组能在各种不同的结构下进行部署。把应用程序分成任务组有许多好处,至 少可以便于重复使用、扩充和管理。 最后,以这种方式下分解应用程序将导致一系列的应用程序的层或级出现,每层或级都 各司其责。 13.1.1分层应用程序 分层应用程序可以按层数进行划分,信息可以从数据层(通常存储在数据库中)传送到表现 层(显示在客户端上)。通常每层相对于其他层来说都运行在不同的系统中,或者在同一系统中
下载 第13章 组件和网络应用程序结构 前节介绍了如何使用 A S P动态地创建网页。 A S P脚本能够查看由浏览器传送过来的信息, 动态地创建一个 H T M L (或D H T M L )页面送回浏览器。创建这个页面时,我们能获得从数据库 (如SQL Server或M S D E )中检索的信息,并且把这些信息加到 H T M L页面中送回浏览器。 但是,A S P不仅能够创建动态网页,它还具有将页面组合进网站的能力,该网站具有应 用程序的功能。 A p p l i c a t i o n和S e s s i o n对象使应用程序具有状态,允许在对网站的请求之间, 甚至在网站的所有用户之间共享消息。这些应用软件包括传统应用程序的所有功能。 建立更大、更可扩展的应用程序时, A S P技术能使建立过程更为简单。如果一个应用程 序真正可扩展,那么就可以用同样的程序处理大量的用户,而且与处理少量用户时的性能相 近。由于网站的建立能够给我们带来收益,所以能支持更多用户意味着有更多的收益。建立 更可扩展的应用程序的关键是用组件构造它们,本章和下面几章介绍如何用组件设计应用程 序。 本章主要内容有: • 分布式应用程序的结构,包括 Windows DNA。 • 网络应用程序的构成。 • 组件的定义。 • ActiveX和C O M简介。 • 组件的三种类型和使用原因。 • 使用组件建立网络应用程序。 • 设计一个基于组件的网络应用程序。 下面首先介绍应用程序结构。 13.1 分布式应用程序的结构 应用程序设计的一个关键要素是系统结构,系统结构决定了应用程序的各个部分如何进 行交互,同时也决定了每个部分实现的功能。在这个基于网络的世界中,通常在分布式环境 中创建应用程序。实际上,本书中的 A S P应用程序就是分布式应用程序。 分布式应用程序利用多台机器的资源及许多进程的空间,把应用程序分成更易管理的任 务组,这些任务组能在各种不同的结构下进行部署。把应用程序分成任务组有许多好处,至 少可以便于重复使用、扩充和管理。 最后,以这种方式下分解应用程序将导致一系列的应用程序的层或级出现,每层或级都 各司其责。 13.1.1 分层应用程序 分层应用程序可以按层数进行划分,信息可以从数据层 (通常存储在数据库中 )传送到表现 层(显示在客户端上)。通常每层相对于其他层来说都运行在不同的系统中,或者在同一系统中
chinapub-coM w/328 8 P SB EwRR409 下载 的不同的进程空间里。 两层应用程序(客户端/服务器) 先简单描述一下两层的客户端/服务器结构。典型的结构是一个客户端的用户PC机(前 端)和一个包含数据库的网络服务器(后端),逻辑上根据两者的物理位置划分。通常,客户端 包含大部分业务逻辑,随着存储过程的发展,SQL语言允许业务逻辑在数据库服务器中存储 并执行。两层的客户端/服务器结构如图13-1所示。 当一个小的业务仅仅使用或需要一个简单的数据 源时,这种两层方案会运行得很好。然而,大多数业 务目标在不断增长,随着业务的不断增长,数据库的 性能必须提高。这种两层方案的性能不能成比例地提用户界面 高。如果业务规则改变了,那么应用程序就需要重建 并重新配置。另外,有些因素(例如并发的数据库连接 数据 的最大数量)将使这个结构在一个分布式的设置下不能图13-1两层的客户端/服务器结构 发挥更大的效能。 2.三层和N层应用程序 由于二层客户端/服务器结构的限制,分布式应用程序常常分为三层或者更多层。每层 的组件都执行一个特定类型的处理,在三层应用程序中包含一个用户服务(表现)层、一个业务 服务层和一个数据服务层 三层结构和传统的二层客户端/服务器结构的主要区别就是在三层体系内,业务逻辑从 用户界面和数据源中分离出来 把应用程序划分成独立的层或部分能减小整个应用程序的复杂性,并且使应用程序能够 跟得上业务发展的需要。N层应用程序是三层应用程序的深化发展。在许多情况下,一个二层 以上的应用程序就可以看作是N层应用程序。三层应用程序的结构如图13-2所示。 用户界面 DCOM 业务逻辑 数据 用户服务 业务逻辑 数据服务 图13-2三层应用程序的结构 这种应用程序的客户端不能直接访问数据存储系统,如果这么做了,那么将违反应用程 序的业务规则,并且不能确保客户端显示的数据是正确的 应用程序的各个部分可分为N层,这个应用程序的任何部分可以在不改变其他部分的情况 下进行修改,开发人员可以专门设计和开发一个特殊的层或许多层。同样,开发人员还可采 用专门用于层开发的开发工具,比采用通用工具更为灵活方便,虽然通用工具可用来建立应 用程序,但是功能却比专用开发工具逊色
的不同的进程空间里。 1. 两层应用程序(客户端/服务器) 先简单描述一下两层的客户端/服务器结构。典型的结构是一个客户端的用户 P C机(前 端)和一个包含数据库的网络服务器 (后端),逻辑上根据两者的物理位置划分。通常,客户端 包含大部分业务逻辑,随着存储过程的发展, S Q L语言允许业务逻辑在数据库服务器中存储 并执行。两层的客户端/服务器结构如图 1 3 - 1所示。 当一个小的业务仅仅使用或需要一个简单的数据 源时,这种两层方案会运行得很好。然而,大多数业 务目标在不断增长,随着业务的不断增长,数据库的 性能必须提高。这种两层方案的性能不能成比例地提 高。如果业务规则改变了,那么应用程序就需要重建 并重新配置。另外,有些因素 (例如并发的数据库连接 的最大数量)将使这个结构在一个分布式的设置下不能 发挥更大的效能。 2. 三层和N层应用程序 由于二层客户端/服务器结构的限制,分布式应用程序常常分为三层或者更多层。每层 的组件都执行一个特定类型的处理,在三层应用程序中包含一个用户服务 (表现)层、一个业务 服务层和一个数据服务层。 三层结构和传统的二层客户端/服务器结构的主要区别就是在三层体系内,业务逻辑从 用户界面和数据源中分离出来。 把应用程序划分成独立的层或部分能减小整个应用程序的复杂性,并且使应用程序能够 跟得上业务发展的需要。 N层应用程序是三层应用程序的深化发展。在许多情况下,一个二层 以上的应用程序就可以看作是 N层应用程序。三层应用程序的结构如图 1 3 - 2所示。 图13-2 三层应用程序的结构 这种应用程序的客户端不能直接访问数据存储系统,如果这么做了,那么将违反应用程 序的业务规则,并且不能确保客户端显示的数据是正确的。 应用程序的各个部分可分为 N层,这个应用程序的任何部分可以在不改变其他部分的情况 下进行修改,开发人员可以专门设计和开发一个特殊的层或许多层。同样,开发人员还可采 用专门用于层开发的开发工具,比采用通用工具更为灵活方便,虽然通用工具可用来建立应 用程序,但是功能却比专用开发工具逊色。 第1 3章 组件和网络应用程序结构计计409 下载 图13-1 两层的客户端/服务器结构 用户界面 业务逻辑 数据 用户界面 用户服务 业务逻辑 数据 数据服务 业务逻辑 DCOM DCOM
410A5p2高装程 Cha° bocom 下载 13.1.2 Windows dna WindOws dna是指微软的 Windows分布式 Internet结构( Windows distributed interNet 的 ecture),而不是脱氧核糖核酸,这是微软最新和最重要的 Windows平台的开发模型,它 Arch 目标是 ·在 Windows服务器平台上,提供建立和传送稳固、可扩展的网络应用程序结构。 ·从传统的桌面应用程序到网络浏览器及网络应用程序,广泛的客户可获得新的和已有的 应用程序和数据资源 1.具有基础结构的 WindOws dna Windows dNa使开发分布式应用容易得多,因为使用了已有的应用程序和操作系统服务 减少了创建分布式应用需要的基础结构代码的数量 在应用程序中提供事务处理过程、信息排队、安全检査和自定义数据库访问时,必须编 写几百行代码。如今已不需要所有这些分布式应用程序,微软重点考虑可能遇到的所有细节, 提供了一系列有效和可编程的服务,这样只需将精力集中在应用程序的业务需要就行了 用 Windows dna模型开发分布式应用程序,能够建立高质量、高可靠性、可扩 展的分布式应用程序,传输更快,成本更低 在 WindOws dna出现之前,通常只有大规模企业采用分布式应用程序。但是,因为应用 程序的基础结构,微软不断发展应用软件,使开发分布式应用程序更为容易。不久,许多更 小的网络实用程序将可用 Windows dna模型建立,从而取代传统的两层客户端/服务器模 型 2.具有互操作能力的 WindOws dna Windows dna能够与已有的传统系统相互操作和对话,因此可以使当前的技术投入物尽 其用。 如今已不再需要为使所有使用 Oracle数据库系统的公司转为使用微软SQL7.0服务器数据 库系统而耗费时间。微软已经意识到并不是所有人都愿意或能够将每一个传统的系统进行转 换,以运行最新的微软数据平台。传统的系统仍将保留,但必须与新的应用相结合。所以, 微软在 Windows dna中加入了互操作性和对工业标准的支持。例如, WindOws dna模式支持 开放式 Internet标准的HTML和XML 系统之间的链接就是DCOM,它允许应用程序在程序、各机器与提供服务的已编译组件 之间交换信息,而且不用知道服务来自哪里或是如何实现的。DCOM可以让开发者创建以服 务为基础的应用软件,而且使用组件式的应用程序开发方法。 DCOM主要是一个 Windows操作平台服务,由 Windows dna模式支持的开放式 Internet标准能够确保成功创建跨平台的分布式应用软件。 Windows dna也使用通用数据访问(UDA)访问旧数据,例如允许使用相同的数据访问库 对 SQL Server和旧的AS400数据库进行查询。通过多种技术能做到这点,这些技术都清楚如何 与相同的库进行交互,并有能力从自己的系统访问关系数据和非关系数据。 3. Internet 5 Windows DNA 1997年9月,当微软引入 Windows dna结构时,为了创建新的 Internet应用,把网络与现 有的客户端/服务器和桌面系统相结合,引入了一个框架结构。 Internet之所以成为主要的应
13.1.2 Windows DNA Windows DNA是指微软的 Wi n d o w s分布式I n t e r n e t结构( Windows Distributed interNet A r c h i t e c t u r e ),而不是脱氧核糖核酸,这是微软最新和最重要的 Wi n d o w s平台的开发模型,它 的目标是: • 在Windows 服务器平台上,提供建立和传送稳固、可扩展的网络应用程序结构。 • 从传统的桌面应用程序到网络浏览器及网络应用程序,广泛的客户可获得新的和已有的 应用程序和数据资源。 1. 具有基础结构的Windows DNA Windows DNA使开发分布式应用容易得多,因为使用了已有的应用程序和操作系统服务, 减少了创建分布式应用需要的基础结构代码的数量。 在应用程序中提供事务处理过程、信息排队、安全检查和自定义数据库访问时,必须编 写几百行代码。如今已不需要所有这些分布式应用程序,微软重点考虑可能遇到的所有细节, 提供了一系列有效和可编程的服务,这样只需将精力集中在应用程序的业务需要就行了。 用Windows DNA模型开发分布式应用程序,能够建立高质量、高可靠性、可扩 展的分布式应用程序,传输更快,成本更低。 在Windows DNA出现之前,通常只有大规模企业采用分布式应用程序。但是,因为应用 程序的基础结构,微软不断发展应用软件,使开发分布式应用程序更为容易。不久,许多更 小的网络实用程序将可用 Windows DNA模型建立,从而取代传统的两层客户端/服务器模 型。 2. 具有互操作能力的Windows DNA Windows DNA能够与已有的传统系统相互操作和对话,因此可以使当前的技术投入物尽 其用。 如今已不再需要为使所有使用 O r a c l e数据库系统的公司转为使用微软 SQL 7.0服务器数据 库系统而耗费时间。微软已经意识到并不是所有人都愿意或能够将每一个传统的系统进行转 换,以运行最新的微软数据平台。传统的系统仍将保留,但必须与新的应用相结合。所以, 微软在Windows DNA中加入了互操作性和对工业标准的支持。例如, Windows DNA模式支持 开放式I n t e r n e t标准的H T M L和X M L。 系统之间的链接就是 D C O M,它允许应用程序在程序、各机器与提供服务的已编译组件 之间交换信息,而且不用知道服务来自哪里或是如何实现的。 D C O M可以让开发者创建以服 务为基础的应用软件,而且使用组件式的应用程序开发方法。 D C O M主要是一个Wi n d o w s操作平台服务,由 Windows DNA模式支持的开放式 I n t e r n e t标准能够确保成功创建跨平台的分布式应用软件。 Windows DNA也使用通用数据访问( U D A )访问旧数据,例如允许使用相同的数据访问库, 对SQL Server和旧的A S 4 0 0数据库进行查询。通过多种技术能做到这点,这些技术都清楚如何 与相同的库进行交互,并有能力从自己的系统访问关系数据和非关系数据。 3. Internet与Windows DNA 1 9 9 7年9月,当微软引入Windows DNA结构时,为了创建新的 I n t e r n e t应用,把网络与现 有的客户端/服务器和桌面系统相结合,引入了一个框架结构。 I n t e r n e t之所以成为主要的应 410计计ASP 3 高级编程 下载
chinapub coM M13 8 FR PASBEPMR 411 载 用程序平台是因为: Internet允许开发者创建独立于平台的应用程序,而不用另外学习一种新的语言 Internet为部署应用程序提供了一个灵活的结构,对许多组织来说,尤其是考虑对几个 分散的位置部署一个大规模的企业应用程序,部署是一个主要问题。 3.1.3 Windows dna服务 Windows dna提供了一系列服务,这些服务提供了必要的数据通道和基本结构,利用这 些服务就可以在相对生疏的情况下建立应用程序。 简报服务 Windows dna的简报服务功能处理应用程序如何同用户交互。用户可能被定位于同一台 计算机、同一局域网的不同计算机或者与 Internet连接的另一计算机。 WindOws dna的一个重 要概念就是用户使用的客户端类型不影响对应用程序的访问能力。为了能获得这种灵活性 Windows dna支持的客户端类型和工具非常广泛,利用它们就可以建立简报服务了 Windows dna应用程序能支持许多不同客户端类型,可分为四个类别,其中两个是传统 的“胖客户端”,而另外两个则是“基于浏览器”的客户端。如果网络可用的话,传统的应用 程序利用网络连接,当网络连接不存在时功能失效。基于浏览器的应用程序既可以是适用于 般浏览器,也可以是只适用于特殊浏览器 (1) Internet增强型客户 增强型 Internet客户利用DNA的特点,能够使用 Internet连接,但不依赖 Internet连接,例 如微软的 Office2000和 Visual studio。这些应用程序通过在其中嵌入超级链接来支持统一浏览, 拥有显示 DHTML文件的浏览器,并且能通过 Internet无缝地下载更新数据 (2) Internet依赖型客户 Internet依赖型应用程序是作为传统的 Windows应用程序而编写的,它在运行时要求同服 务器进行网络连接。当应用程序的用户界面超出了使用基于网络客户的有效开发范围时,通 常使用这种程序。由现有的 Windows程序转换到 Windows dna程序,与 Internet增强型应用 序不同,这种类型的程序的主要特点是运行时需要网络连接, Internet增强型应用程序能在独 的机器上和网络连接的机器上运行。 “胖客户端”应用程序可以使用任何 Windows开发工具建立,像 Visual basic、 Visual c+ Delphi或任何其他建立可执行应用程序的工具。网络连接的可靠性可以用一些不同的方法提 高。例如,可将应用程序链接到 Windows套接字库,以便在本地网或 Internet上通过TCP/P与 服务器连接。另外,它可以拥有一个嵌入式IE版本,可对网上信息进行访问。在任何情况下, 应用程序与网络上的服务器互相影响,并且在没有固定链路的情况下不能工作 (3)浏览器增强型客户 前面两种形式的应用程序是可执行程序的一部分,接下来的两种应用程序是基于浏览器 的程序,因为它们使用HTML作为描述工具。此HTML采用HTTP作为数据转换协议从网络 务器中实时检索得到。HTML提供给客户一个用户界面,允许用户使用网络浏览器同应用程 序进行交互。 尽管HTML是一种规范,但不同浏览器常常支持额外功能,这些功能都是非标准的。当 用户界面开发需要对HTML规范进行扩展时,它就被认为是增强的浏览器应用程序。对
用程序平台是因为: • Internet允许开发者创建独立于平台的应用程序,而不用另外学习一种新的语言。 • I n t e r n e t为部署应用程序提供了一个灵活的结构,对许多组织来说,尤其是考虑对几个 分散的位置部署一个大规模的企业应用程序,部署是一个主要问题。 13.1.3 Windows DNA服务 Windows DNA提供了一系列服务,这些服务提供了必要的数据通道和基本结构,利用这 些服务就可以在相对生疏的情况下建立应用程序。 1. 简报服务 Windows DNA的简报服务功能处理应用程序如何同用户交互。用户可能被定位于同一台 计算机、同一局域网的不同计算机或者与 I n t e r n e t连接的另一计算机。Windows DNA的一个重 要概念就是用户使用的客户端类型不影响对应用程序的访问能力。为了能获得这种灵活性, Windows DNA支持的客户端类型和工具非常广泛,利用它们就可以建立简报服务了。 Windows DNA应用程序能支持许多不同客户端类型,可分为四个类别,其中两个是传统 的“胖客户端”,而另外两个则是“基于浏览器”的客户端。如果网络可用的话,传统的应用 程序利用网络连接,当网络连接不存在时功能失效。基于浏览器的应用程序既可以是适用于 一般浏览器,也可以是只适用于特殊浏览器。 (1) Internet增强型客户 增强型I n t e r n e t客户利用D N A的特点,能够使用 I n t e r n e t连接,但不依赖 I n t e r n e t连接,例 如微软的O ffice 2000和Visual Studio。这些应用程序通过在其中嵌入超级链接来支持统一浏览, 拥有显示D H T M L文件的浏览器,并且能通过 I n t e r n e t无缝地下载更新数据。 (2) Internet依赖型客户 I n t e r n e t依赖型应用程序是作为传统的 Wi n d o w s应用程序而编写的,它在运行时要求同服 务器进行网络连接。当应用程序的用户界面超出了使用基于网络客户的有效开发范围时,通 常使用这种程序。由现有的 Wi n d o w s程序转换到Windows DNA程序,与I n t e r n e t增强型应用程 序不同,这种类型的程序的主要特点是运行时需要网络连接, I n t e r n e t增强型应用程序能在独 立的机器上和网络连接的机器上运行。 “胖客户端”应用程序可以使用任何 Wi n d o w s开发工具建立,像Visual Basic、Visual C++、 D e l p h i或任何其他建立可执行应用程序的工具。网络连接的可靠性可以用一些不同的方法提 高。例如,可将应用程序链接到 Wi n d o w s套接字库,以便在本地网或 I n t e r n e t上通过T C P / I P与 服务器连接。另外,它可以拥有一个嵌入式 I E版本,可对网上信息进行访问。在任何情况下, 应用程序与网络上的服务器互相影响,并且在没有固定链路的情况下不能工作。 (3) 浏览器增强型客户 前面两种形式的应用程序是可执行程序的一部分,接下来的两种应用程序是基于浏览器 的程序,因为它们使用 H T M L作为描述工具。此 H T M L采用H T T P作为数据转换协议从网络服 务器中实时检索得到。 H T M L提供给客户一个用户界面,允许用户使用网络浏览器同应用程 序进行交互。 尽管H T M L是一种规范,但不同浏览器常常支持额外功能,这些功能都是非标准的。当 用户界面开发需要对 H T M L规范进行扩展时,它就被认为是增强的浏览器应用程序。对 第1 3章 组件和网络应用程序结构计计411 下载
412 ASP3高级编程 Ch'a° ub. coM indOws dna应用程序来说,这通常意味着用户界面成为IE中的一个传递目标。用特定的浏 器作为传递目标,开发人员可利用 ActiveX控件、动态HTML或者IE等技术来让用户界面更 像传统 Windows应用程序。甚至在这种情况下,使用HTP协议将用户界面从网络服务器上传 递到网络浏览器上。这样的应用程序通常用于局域网,这样信息部门能控制目标浏览器平台。 如果开发人员可以获得浏览器的特定版本,那么就能开发出浏览器增强型应用程序,并且这 个应用程序能够成功地运行。 (4)浏览器依赖型客户 浏览器增强型用户界面的一个缺点就是当用户使用应用程序时,通常需要特定的浏览器 不论什么时候,一种新技术可用时,如新的浏览器版本,都有一定的时间延迟,新版本浏览 器的广泛使用需要长达数年的时间,在这段时间里,如果开发人员以这些新特点为目标,那 么他们就要冒应用程序不能被广泛采用的风险。 为了避免这个问题,开发人员可以选择一个较早的浏览器版本作为目标,这样开发出来 的程序就能被大多数人所采用。这种类型的客户端称为浏览器依赖型。这听起来有点不太真 实,但浏览器依赖型就是指用户界面在浏览器上是可靠的,而不是对浏览器的特定版本可靠 对开发人员来说,开发一个面向所有浏览器的程序效率可能很低。通常广泛使用的程序的当 前标准目标是网景和微软的3x版本浏览器 以这个浏览器版本作为目标后,开发人员就可以用 JavaScript和HTML3.2规范访问客户端 脚本。这可与所有后来的浏览器兼容,不论是微软或网景。随着IE40以上版本的使用,这已 成为许多开发人员的基本发展目标 2.应用程序服务 Windows dna应用软件靠可用的应用程序服务来存储和执行应用程序逻辑的核心,这个 业务逻辑层中保持专用应用程序进程和业务规则。开发这些应用程序组件的 WindOws dna服 务包括web服务、消息服务和组件服务 (1)组件服务 最近十年里,组件式应用软件已经成为创建应用软件的标准方法,最早是DDE,然后是 OLE、OLE2及今天的 Activex, Windows平台的组件应用软件已广泛传播。使用组件进行开 发如此容易并不十分令人惊奇,现在整个过程是一个新的模型,这个模型包括用预先创建的 组件建立应用程序。因为每一组件都有一些公用函数,其他组件可调用这些函数。这样组件 可以重复使用,并允许这些软件互相合作 为了使基于组件的应用程序成为企业级的应用程序,微软添加了微软事务处理服务器 (MTS),为基于组件的分布式程序开发、部置和管理提供服务。将这个服务器封裝在一个系 统级的服务中,开发人员就没有必要明确地在应用程序中添加这种支持。 随着 Windows2000的推出,人们已逐渐了解COM+。COM+使COM和MTS程序模型成 为一体,并且不再需要分别处理这两种服务,从而使开发分布式应用程序变得更加容易,因 为减少了使用这些组件服务所需的代码数量,使得建立应用程序更快、更容易、成本更低 (2)消息服务 并不是 Windows dna应用程序的所有部分都必须定位于同样的计算机或者在同样的物理 位置,因此,开发人员能够与不同系统进行交流是非常关键的。在网络应用程序模型中,需 要一种通过应用程序与断开的客户进行交流的方法,消息是一种用于这种交流的方式。微软
Windows DNA应用程序来说,这通常意味着用户界面成为 I E中的一个传递目标。用特定的浏 览器作为传递目标,开发人员可利用 A c t i v e X控件、动态H T M L或者I E等技术来让用户界面更 像传统Wi n d o w s应用程序。甚至在这种情况下,使用 H T T P协议将用户界面从网络服务器上传 递到网络浏览器上。这样的应用程序通常用于局域网,这样信息部门能控制目标浏览器平台。 如果开发人员可以获得浏览器的特定版本,那么就能开发出浏览器增强型应用程序,并且这 个应用程序能够成功地运行。 (4) 浏览器依赖型客户 浏览器增强型用户界面的一个缺点就是当用户使用应用程序时,通常需要特定的浏览器。 不论什么时候,一种新技术可用时,如新的浏览器版本,都有一定的时间延迟,新版本浏览 器的广泛使用需要长达数年的时间,在这段时间里,如果开发人员以这些新特点为目标,那 么他们就要冒应用程序不能被广泛采用的风险。 为了避免这个问题,开发人员可以选择一个较早的浏览器版本作为目标,这样开发出来 的程序就能被大多数人所采用。这种类型的客户端称为浏览器依赖型。这听起来有点不太真 实,但浏览器依赖型就是指用户界面在浏览器上是可靠的,而不是对浏览器的特定版本可靠。 对开发人员来说,开发一个面向所有浏览器的程序效率可能很低。通常广泛使用的程序的当 前标准目标是网景和微软的 3 . x版本浏览器。 以这个浏览器版本作为目标后,开发人员就可以用 J a v a S c r i p t和HTML 3.2规范访问客户端 脚本。这可与所有后来的浏览器兼容,不论是微软或网景。随着 IE 4.0以上版本的使用,这已 成为许多开发人员的基本发展目标。 2. 应用程序服务 Windows DNA应用软件靠可用的应用程序服务来存储和执行应用程序逻辑的核心,这个 业务逻辑层中保持专用应用程序进程和业务规则。开发这些应用程序组件的 Windows DNA服 务包括We b服务、消息服务和组件服务。 (1) 组件服务 最近十年里,组件式应用软件已经成为创建应用软件的标准方法,最早是 D D E,然后是 O L E、O L E 2及今天的A c t i v e X,Wi n d o w s平台的组件应用软件已广泛传播。使用组件进行开 发如此容易并不十分令人惊奇,现在整个过程是一个新的模型,这个模型包括用预先创建的 组件建立应用程序。因为每一组件都有一些公用函数,其他组件可调用这些函数。这样组件 可以重复使用,并允许这些软件互相合作。 为了使基于组件的应用程序成为企业级的应用程序,微软添加了微软事务处理服务器 ( M T S ),为基于组件的分布式程序开发、部置和管理提供服务。将这个服务器封装在一个系 统级的服务中,开发人员就没有必要明确地在应用程序中添加这种支持。 随着Windows 2000的推出,人们已逐渐了解 C O M+。C O M+使C O M和M T S程序模型成 为一体,并且不再需要分别处理这两种服务,从而使开发分布式应用程序变得更加容易,因 为减少了使用这些组件服务所需的代码数量,使得建立应用程序更快、更容易、成本更低。 (2) 消息服务 并不是Windows DNA应用程序的所有部分都必须定位于同样的计算机或者在同样的物理 位置,因此,开发人员能够与不同系统进行交流是非常关键的。在网络应用程序模型中,需 要一种通过应用程序与断开的客户进行交流的方法,消息是一种用于这种交流的方式。微软 412计计ASP 3 高级编程 下载
ina-pubcoM MIsR BI# BIRE/B EIPAR413 下载 消息排队服务器(MSMQ)通过在应用程序之间建立信息传送机构,使得集成应用程序变得更 为容易。这允许开发人员创建可靠的应用程序,为连接的和不连接的客户工作。MSMQ可 其他消息排队产品进行无缝互操作,如IBM的 MQSeries (3)网络服务 WindOws dna应用程序的应用程序服务需要一种与客户表现层交互的方法。这种方法就 是超文本传输协议,微软的网络服务器(也就是IS)已经提供了使用这个协议的服务。事实上, IS不仅支持传输静态网页到客户,也可用于与ASP的集成动态地创建客户显示。 3.数据服务 通用数据访问是微软为在企业之间传递信息而设计的,能对不同种信息源提供高质量的 访问,包括关系数据、非关系数据,并提供一个使用简便的既可单独作为工具又可单独作为 语言的编程界面。UDA存储数据费用低、耗时少,也不需要特制一种程序。UDA建立在广泛 工业支持的开放式工业规范上,可运行于所有已建立的数据库平台上。提供数据服务的两个 基本组件是ADO和 OLE DB,这两者都已经在本书中介绍过 13.1.4网络结构 网络结构是HTML格式化页面的组合架构,分布在网络服务器和客户计算机上。所使用 查看用的工具称为浏览器。从本质上看,包含几千页的服务器与只有几页的服务器没有什么 本质不同,把几千页以某种形式链接在一起就形成网站,再加上一些附加逻辑,网站就变成 了一个网络应用程序。 1.网页 网络交互的基本单元就是网页本身,网页是用HTML编写的文本文件。根据浏览器的请 求,网页从网络服务器发送到浏览器,浏览器先从语法上分析HTML文件中的信息,所得到 的用户界面表现在浏览器上。网络服务器的任务是等待客户端的请求,分析并决定客户端需 要的网页,从服务器的存储区域中检索这个文件,然后将文件传输到客户端。除非将信息放 入日志文件中,否则服务器会忽略所有关于传输文件到客户端的事情。就是这种“无连接” 性使网络服务器有了可扩充性。但是,在没有额外支持的情况下,创建一个有意义的应用程 序变得很困难。 2.网站 从某种意义上说,一个网站由一系列相关联的网页组成。通常一个网站是指存在于一个 服务器上或者一个服务器文件夹里的所有网页。例如,在www.wroxcom服务器上,所有的网 页都可以认为是这个网站的一部分。网站上网页相互联系主要依靠这个网站内的每个网页的 链接来实现的。以这种方式组成网站的网页保持网站的分层结构。这些网页仍受到网络服务 器结构的约束,因为服务器不保留来自特定客户的一系列请求的信息,所以这样构成网站的 系列相关网页看起来更像是应用程序,但还是缺少一些组件。 网络应用程序 Windows dna应用程序是一个传统意义上的应用程序,因为它们向应用程序的用户提供 服务。这两种应用程序的创建方式不同,组件构成也不同。传统应用程序在开发过程中需要 套特殊的文件,但是分布不同的输出。例如: isual basic应用程序有一个vbp项目文件 多个frm、cls和bas文件和一系列构成应用程序项目的OCX组件。在程序分布之前,这些文
消息排队服务器 ( M S M Q )通过在应用程序之间建立信息传送机构,使得集成应用程序变得更 为容易。这允许开发人员创建可靠的应用程序,为连接的和不连接的客户工作。 M S M Q可与 其他消息排队产品进行无缝互操作,如 I B M的M Q S e r i e s。 (3) 网络服务 Windows DNA应用程序的应用程序服务需要一种与客户表现层交互的方法。这种方法就 是超文本传输协议,微软的网络服务器 (也就是I I S )已经提供了使用这个协议的服务。事实上, I I S不仅支持传输静态网页到客户,也可用于与 A S P的集成动态地创建客户显示。 3. 数据服务 通用数据访问是微软为在企业之间传递信息而设计的,能对不同种信息源提供高质量的 访问,包括关系数据、非关系数据,并提供一个使用简便的既可单独作为工具又可单独作为 语言的编程界面。U D A存储数据费用低、耗时少,也不需要特制一种程序。 U D A建立在广泛 工业支持的开放式工业规范上,可运行于所有已建立的数据库平台上。提供数据服务的两个 基本组件是A D O和OLE DB,这两者都已经在本书中介绍过。 13.1.4 网络结构 网络结构是 H T M L格式化页面的组合架构,分布在网络服务器和客户计算机上。所使用 查看用的工具称为浏览器。从本质上看,包含几千页的服务器与只有几页的服务器没有什么 本质不同,把几千页以某种形式链接在一起就形成网站,再加上一些附加逻辑,网站就变成 了一个网络应用程序。 1. 网页 网络交互的基本单元就是网页本身,网页是用 H T M L编写的文本文件。根据浏览器的请 求,网页从网络服务器发送到浏览器,浏览器先从语法上分析 H T M L文件中的信息,所得到 的用户界面表现在浏览器上。网络服务器的任务是等待客户端的请求,分析并决定客户端需 要的网页,从服务器的存储区域中检索这个文件,然后将文件传输到客户端。除非将信息放 入日志文件中,否则服务器会忽略所有关于传输文件到客户端的事情。就是这种“无连接” 性使网络服务器有了可扩充性。但是,在没有额外支持的情况下,创建一个有意义的应用程 序变得很困难。 2. 网站 从某种意义上说,一个网站由一系列相关联的网页组成。通常一个网站是指存在于一个 服务器上或者一个服务器文件夹里的所有网页。例如,在 w w w. w r o x . c o m服务器上,所有的网 页都可以认为是这个网站的一部分。网站上网页相互联系主要依靠这个网站内的每个网页的 链接来实现的。以这种方式组成网站的网页保持网站的分层结构。这些网页仍受到网络服务 器结构的约束,因为服务器不保留来自特定客户的一系列请求的信息,所以这样构成网站的 一系列相关网页看起来更像是应用程序,但还是缺少一些组件。 3. 网络应用程序 Windows DNA应用程序是一个传统意义上的应用程序,因为它们向应用程序的用户提供 服务。这两种应用程序的创建方式不同,组件构成也不同。传统应用程序在开发过程中需要 一套特殊的文件,但是分布不同的输出。例如: Visual Basic应用程序有一个 . v b p项目文件, 多个. f r m、. c l s和. b a s文件和一系列构成应用程序项目的 O C X组件。在程序分布之前,这些文 第1 3章 组件和网络应用程序结构计计413 下载
414 ASP3高级编程 Chinapub coM 下载 件被编译成可执行文件,可执行文件的执行不需要开发过程中的源代码文件。 另一方面,基于脚本的应用程序是由一系列文件组成的,这些文件在开发和运行期间相 同,没有编译成可执行文件。例如:网络项目中hm、asp和dl件是传输给网络服务器的 相同文件。只有当浏览器向网页发出请求时,这些网络文件中的源代码或脚本才在客户端或 服务器上执行。建立这些应用程序依赖于万维网(WWW)的结构,为使这些文件的功能像应用 程序那样,需要增加一些复杂性和功能。 4.网络应用程序设计 为了建立一个网络应用程序,开发人员必须考虑一些程序设计和开发的新知识 Windows dna的灵活性允许各种客户访问各种服务,我们将重点放在一个网络应用程序上。 在一个网络应用程序内,将浏览器作为一个主要的用户界面来使用。在网络应用程序内的信 息将使用HTTP协议从服务器传输到客户端。应用程序服务器将是微软的ISS,既执行网络功 能,也执行应用程序服务器功能。最后,我们的业务和数据访问逻辑将会被封装在COM+组 件内,作为链接应用程序的通道 (1)浏览器作为用户界面 对一个网络应用程序来说,用户界面是表现在网络浏览器内的,这就意味着客户显示形 式是浏览器增强型或者浏览器依赖型。所选应用程序的类型应该以用户安装的浏览器为依据, 如果能保证大多数用户都使用某一特定的浏览器级别,那么就该考虑一下这一级别浏览器的 特征,如果有许多不同种类的浏览器在同时使用,就只能支持一种浏览器依赖型客户显示形 式。使用ASP传输应用程序的一个优点是能判断出当前正在访问应用程序的用户使用的是什 么类型的浏览器,这已经在第6章625节中介绍。通过了解当前用户所用的浏览器的类型,可 动态改变客户的显示形式以支持浏览器的增强功能 (2)HTTP传输协议 客户与服务器之间的通信层对应用程序的设计和实现来说是至关重要的。超文本文件传 输协议(HTTP)规定了服务器如何接受和处理客户的请求,以及信息如何发送回客户。根据所 支持的客户显示类型的类型,使用这个协议可能有不同类型的信息传输。由于对浏览器依赖 型客户的基本支持,HTTP传输的信息限制为构成网页的HTML、图像、信息载体cookie以及 一些客户端脚本。一个增强型客户可以使用一些特殊特性,如远程数据服务( Remote data Services)或在HTTP上的COM,通过HTTP进行通信。但是这些支持依赖于客户端浏览器的功 能。在任何一种情况下,HTTP协议没有客户与服务器之间长期连接的概念。 3)IS和ASP作为应用程序服务器 微软的IS(作为网络服务器)与ASP(作为应用程序服务器)的组合能为网络应用程序提供应 用程序组件。对于为显示静态网页服务的网页和网站,IS具有提供信息的功能。但当网络应 用程序需要动态显示信息时,就必须把可生成动态页面的IS网络服务功能与ASP对象集成功 能结合起来,传输更稳固的动态网络程序。ASP脚本功能可以支持脚本内的业务逻辑,链接 业务逻辑组件,直接经ADO访问数据库,并且可使用数据组件检索信息。 (4)COM+作为通道 组件服务器的COM+功能使 Windows dna应用程序能基于组件进行设计。然而一个功能 齐全的应用程序可以在ASP脚本和HTML外构建,当业务逻辑和数据访问被分离开并放进组件 后,一个更稳固的可扩充的应用程序开始出现。将业务和数据访问逻辑放入执行前编译好的
件被编译成可执行文件,可执行文件的执行不需要开发过程中的源代码文件。 另一方面,基于脚本的应用程序是由一系列文件组成的,这些文件在开发和运行期间相 同,没有编译成可执行文件。例如:网络项目中 . h t m、. a s p和. d l l文件是传输给网络服务器的 相同文件。只有当浏览器向网页发出请求时,这些网络文件中的源代码或脚本才在客户端或 服务器上执行。建立这些应用程序依赖于万维网 ( W W W )的结构,为使这些文件的功能像应用 程序那样,需要增加一些复杂性和功能。 4. 网络应用程序设计 为了建立一个网络应用程序,开发人员必须考虑一些程序设计和开发的新知识, Windows DNA的灵活性允许各种客户访问各种服务,我们将重点放在一个网络应用程序上。 在一个网络应用程序内,将浏览器作为一个主要的用户界面来使用。在网络应用程序内的信 息将使用H T T P协议从服务器传输到客户端。应用程序服务器将是微软的 I S S,既执行网络功 能,也执行应用程序服务器功能。最后,我们的业务和数据访问逻辑将会被封装在 C O M+组 件内,作为链接应用程序的通道。 (1) 浏览器作为用户界面 对一个网络应用程序来说,用户界面是表现在网络浏览器内的,这就意味着客户显示形 式是浏览器增强型或者浏览器依赖型。所选应用程序的类型应该以用户安装的浏览器为依据, 如果能保证大多数用户都使用某一特定的浏览器级别,那么就该考虑一下这一级别浏览器的 特征,如果有许多不同种类的浏览器在同时使用,就只能支持一种浏览器依赖型客户显示形 式。使用A S P传输应用程序的一个优点是能判断出当前正在访问应用程序的用户使用的是什 么类型的浏览器,这已经在第 6章6 . 2 . 5节中介绍。通过了解当前用户所用的浏览器的类型,可 动态改变客户的显示形式以支持浏览器的增强功能。 (2) HTTP传输协议 客户与服务器之间的通信层对应用程序的设计和实现来说是至关重要的。超文本文件传 输协议( H T T P )规定了服务器如何接受和处理客户的请求,以及信息如何发送回客户。根据所 支持的客户显示类型的类型,使用这个协议可能有不同类型的信息传输。由于对浏览器依赖 型客户的基本支持, H T T P传输的信息限制为构成网页的 H T M L、图像、信息载体 c o o k i e以及 一些客户端脚本。一个增强型客户可以使用一些特殊特性,如远程数据服务 (Remote Data S v r v i c e s )或在H T T P上的C O M,通过H T T P进行通信。但是这些支持依赖于客户端浏览器的功 能。在任何一种情况下,H T T P协议没有客户与服务器之间长期连接的概念。 (3) IIS和A S P作为应用程序服务器 微软的I I S (作为网络服务器)与A S P (作为应用程序服务器)的组合能为网络应用程序提供应 用程序组件。对于为显示静态网页服务的网页和网站, I I S具有提供信息的功能。但当网络应 用程序需要动态显示信息时,就必须把可生成动态页面的 I I S网络服务功能与 A S P对象集成功 能结合起来,传输更稳固的动态网络程序。 A S P脚本功能可以支持脚本内的业务逻辑,链接 业务逻辑组件,直接经A D O访问数据库,并且可使用数据组件检索信息。 (4) COM+作为通道 组件服务器的C O M+功能使Windows DNA应用程序能基于组件进行设计。然而一个功能 齐全的应用程序可以在A S P脚本和H T M L外构建,当业务逻辑和数据访问被分离开并放进组件 后,一个更稳固的可扩充的应用程序开始出现。将业务和数据访问逻辑放入执行前编译好的 414计计ASP 3 高级编程 下载
inapub.coM 8138 RIP RIMRIESBEYPAR 415 下载 组件里,应用程序的性能就会改善。并且,随着性能的改善,应用程序有效支持的客户数量 就可增加。 13.2组件 谈到组件和基于组件的应用程序时,了解什么是组件就显得非常重要。在本书中,我们 已见过一些组件在ASP中使用,ADO就是一系列支持访问数据源的组件。ASP3.0版的六个内 置组件允许开发人员访问网络应用程序的某些部分。对可扩展的网络应用程序来说,组件的 概念是非常重要的 13.21组件定义 组件是包含可改变数据形式的代码的对象,可通过一系列可用的特定公共服务 对此代码进行访问。 以下是对组件的更直接的定义。 从一种更实际的意义上理解,组件是代码的封装,这些代码执行应用程序的一 些功能。 这个功能可能是业务规则的处理,如销售税的计算,也可能是从应用程序的数据库检索 某些信息。组件的关键特征是当创建组件时,组件的代码和与组件相关的信息一起打包。在 这种方式下,如果同时使用多种版本的同一组件,每一个组件的信息都与其他组件的信息保 持独立,不存在信息之间发生混乱的问题 另外,根据组件的工作类型,组件可以由其接口来定义。为了了解关于接口的详细资料 必须先了解COM。 1322cOM和cOM+ COM指组件对象模型( Component Object Model) coM是面向对象范型的一个分支,是一个基于二进制标准的规范,这个标准规 定如何通过接口进行重复使用 COM是由微软开发的对象模型,可在所有的 Windows平台上执行。它构成所有 Windows 应用程序的基础,因为几乎所有与基本操作系统的交互都通过COM定义的接口来完成。COM 定义了组件互操作性的标准,即组件互相之间交互的能力。组件不需要用指定的语言编写 只需指定组件之间如何通信和与操作系统如何通信。组件必须遵守的互操作性标准指定后 不同的开发人员在同一应用程序中创建组件时的协作变得非常简单。这就意味着,为COM编 写的组件可以重复使用,并不依赖于编写时所用的语言。一个应用程序包含的组件可以由 Visual basic、C++、Java甚至 COBOL编写,只要遵守COM规范就不会出现问题 COM+是组合了COM和 Windows2000的微软事务服务器(MTS)的一系列服务。MTS提供 措施管理组件的生存期,不用担心应用程序对象的创建和破坏,COM+有能力对此进行管理, 所以可将重点放在实现业务逻辑上。随着COM+的进入,MTS的功能已经合并到操作系统中 被称为微软组件服务。我们将在下一节对它进行简单介绍,在15章将详细介绍
组件里,应用程序的性能就会改善。并且,随着性能的改善,应用程序有效支持的客户数量 就可增加。 13.2 组件 谈到组件和基于组件的应用程序时,了解什么是组件就显得非常重要。在本书中,我们 已见过一些组件在A S P中使用,A D O就是一系列支持访问数据源的组件。 ASP 3.0版的六个内 置组件允许开发人员访问网络应用程序的某些部分。对可扩展的网络应用程序来说,组件的 概念是非常重要的。 13.2.1 组件定义 组件是包含可改变数据形式的代码的对象,可通过一系列可用的特定公共服务 对此代码进行访问。 以下是对组件的更直接的定义。 从一种更实际的意义上理解,组件是代码的封装,这些代码执行应用程序的一 些功能。 这个功能可能是业务规则的处理,如销售税的计算,也可能是从应用程序的数据库检索 某些信息。组件的关键特征是当创建组件时,组件的代码和与组件相关的信息一起打包。在 这种方式下,如果同时使用多种版本的同一组件,每一个组件的信息都与其他组件的信息保 持独立,不存在信息之间发生混乱的问题。 另外,根据组件的工作类型,组件可以由其接口来定义。为了了解关于接口的详细资料, 必须先了解C O M。 13.2.2 COM和C O M+ C O M指组件对象模型(Component Object Model)。 C O M是面向对象范型的一个分支,是一个基于二进制标准的规范,这个标准规 定如何通过接口进行重复使用。 C O M是由微软开发的对象模型,可在所有的 Wi n d o w s平台上执行。它构成所有 Wi n d o w s 应用程序的基础,因为几乎所有与基本操作系统的交互都通过 C O M定义的接口来完成。C O M 定义了组件互操作性的标准,即组件互相之间交互的能力。组件不需要用指定的语言编写, 只需指定组件之间如何通信和与操作系统如何通信。组件必须遵守的互操作性标准指定后, 不同的开发人员在同一应用程序中创建组件时的协作变得非常简单。这就意味着,为 C O M编 写的组件可以重复使用,并不依赖于编写时所用的语言。一个应用程序包含的组件可以由 Visual Basic、C + +、J a v a甚至C O B O L编写,只要遵守C O M规范就不会出现问题。 C O M+是组合了C O M和Windows 2000的微软事务服务器( M T S )的一系列服务。M T S提供 措施管理组件的生存期,不用担心应用程序对象的创建和破坏, C O M+有能力对此进行管理, 所以可将重点放在实现业务逻辑上。随着 C O M+的进入,M T S的功能已经合并到操作系统中, 被称为微软组件服务。我们将在下一节对它进行简单介绍,在 1 5章将详细介绍。 第1 3章 组件和网络应用程序结构计计415 下载
416 ASP3高级编程 China°bo 下载 1323组件服务 随着COM+的发布,MTS在 Windows2000下作为一个单独的实体已不再存在。目前,其 功能已成为操作系统的基础部分(现在称为微软组件服务),并且不只包括事务性服务和组件生 存期的管理 组件服务提供了一些新的功能,在MTS下组件可以应用这些功能。由于操作系统服务(而 不是开发人员)能处理越来越多的特性,开发稳固的可扩展组件变得更为简单。内容如下 组件负载平衡( omponent Load Balancing,CLB)CLB允许多个应用程序服务器为一个 应用程序提供相同的COM+对象。如果需要对象,创建请求首先发送到CLB服务器, 然后再将请求发送给合适的应用程序服务器,这根据一定的准则进行(例如运行应用程 序的机器的繁忙程度和距离多远)。然后,在组件生存期内客户端的应用程序与这个服 务器交互,在COM类级上实现负载平衡。但是, Windows2000首次发布时不支持组件 负载平衡,或许在某个 Service pack中或在未来的 Windows200x版本中会支持组件负载 平衡 排队组件将COM与MSMQ的特性相结合,提供一种异步地调用和执行组件的方式。没 有接收者或发送者可用或可访问,处理也可发生。当客户调用一个排队组件时,调用排 队组件记录器,它将调用打包成给服务器的消息的一部分,并放入队列中。排序组件的 侦听器者从队列中检索出消息,并传输给排队组件的执行者,执行者调用服务器组件并 产生同样的方法调用 内存数据库支持(In- Memory Database Support,MDB)IMDB是瞬态的具有事务性数据 库风格的高速缓存,存在于RAM存储器中,可对数据所在的机器进行极快的访问。需 要高速数据库查找能力或需要管理瞬态过程的COM+应用程序可以使用IMDB COM+对象中利用ADO或 OLE DB接口访问IMDB中的数据。与组件负载平衡相同 Windows2000的首次发布不支持IMDB技术,或许能够在未来的 Windows200x中支持 IMDB技术 对象缓冲对象缓冲是由COM+提供的自动服务,可使组件在缓冲池中保持有效,可以 由需要组件的客户使用。应用程序一旦运行,COM+管理缓冲池,处理激活对象的细 节,并按照所指定的标准重新使用。为了缓冲组件,组件必须是无状态、没有线程约束 并且是可以聚集的。VB组件有线程约束,这就意味着VB组件不能被缓冲。 1.事务管理器 微软组件服务具有组件事务管理器的功能,详细内容可参阅第19章。在管理事务的过程 中,组件服务首先检测组件是否参与事务处理,了解组件的事务处理需求是什么。一些组件 忽略事务处理的过程,而一些组件应该或是必须参与事务处理。一个组件开发和部署时,开 发人员可对这个组件的事务处理参数进行设置。如果设置的话,组件服务利用这个信息决定 组件应该如何参与事务 2.组件管理器 除了管理组件与事务交互,组件服务还可以管理组件自身。而这种功能是MIS的一部分, 考虑MTS特点时通常没有注意它。组件服务利用COM+组件的环境帮助管理组件。 环境是用于维护一个对象集合的一系列运行期属性。每个对象在生存期间与一个环境相 对应,多个对象可以在相同的环境下运行,多个环境可置于相同COM单元内,环境属性允许
13.2.3 组件服务 随着C O M+的发布,M T S在Windows 2000下作为一个单独的实体已不再存在。目前,其 功能已成为操作系统的基础部分 (现在称为微软组件服务),并且不只包括事务性服务和组件生 存期的管理。 组件服务提供了一些新的功能,在 M T S下组件可以应用这些功能。由于操作系统服务 (而 不是开发人员)能处理越来越多的特性,开发稳固的可扩展组件变得更为简单。内容如下: • 组件负载平衡(Component Load Balancing,CLB) C L B允许多个应用程序服务器为一个 应用程序提供相同的 C O M+对象。如果需要对象,创建请求首先发送到 C L B服务器, 然后再将请求发送给合适的应用程序服务器,这根据一定的准则进行 (例如运行应用程 序的机器的繁忙程度和距离多远 )。然后,在组件生存期内客户端的应用程序与这个服 务器交互,在C O M类级上实现负载平衡。但是, Windows 2000首次发布时不支持组件 负载平衡,或许在某个 Service Pack中或在未来的Windows 200x版本中会支持组件负载 平衡。 • 排队组件 将C O M与M S M Q的特性相结合,提供一种异步地调用和执行组件的方式。没 有接收者或发送者可用或可访问,处理也可发生。当客户调用一个排队组件时,调用排 队组件记录器,它将调用打包成给服务器的消息的一部分,并放入队列中。排序组件的 侦听器者从队列中检索出消息,并传输给排队组件的执行者,执行者调用服务器组件并 产生同样的方法调用。 • 内存数据库支持(In-Memory Database Support,IMDB) IMDB是瞬态的具有事务性数据 库风格的高速缓存,存在于 R A M存储器中,可对数据所在的机器进行极快的访问。需 要高速数据库查找能力或需要管理瞬态过程的 C O M+应用程序可以使用I M D B。可以从 C O M+对象中利用 A D O或OLE DB接口访问 I M D B中的数据。与组件负载平衡相同, Windows 2000的首次发布不支持 I M D B技术,或许能够在未来的 Windows 200x中支持 I M D B技术。 • 对象缓冲 对象缓冲是由C O M+提供的自动服务,可使组件在缓冲池中保持有效,可以 由需要组件的客户使用。应用程序一旦运行, C O M+管理缓冲池,处理激活对象的细 节,并按照所指定的标准重新使用。为了缓冲组件,组件必须是无状态、没有线程约束、 并且是可以聚集的。V B组件有线程约束,这就意味着 V B组件不能被缓冲。 1. 事务管理器 微软组件服务具有组件事务管理器的功能,详细内容可参阅第 1 9章。在管理事务的过程 中,组件服务首先检测组件是否参与事务处理,了解组件的事务处理需求是什么。一些组件 忽略事务处理的过程,而一些组件应该或是必须参与事务处理。一个组件开发和部署时,开 发人员可对这个组件的事务处理参数进行设置。如果设置的话,组件服务利用这个信息决定 组件应该如何参与事务。 2. 组件管理器 除了管理组件与事务交互,组件服务还可以管理组件自身。而这种功能是 M T S的一部分, 考虑M T S特点时通常没有注意它。组件服务利用 C O M+组件的环境帮助管理组件。 环境是用于维护一个对象集合的一系列运行期属性。每个对象在生存期间与一个环境相 对应,多个对象可以在相同的环境下运行,多个环境可置于相同 C O M单元内,环境属性允许 416计计ASP 3 高级编程 下载
chinapub coM M13 8 FR PASBEPMR3 417 载 组件服务提供运行期服务,这些属性保留决定执行环境如何为其中的对象执行服务的状态。 3.安全管理器 组件服务为COM十组件提供许多安全特征,其中自动安全特征在不添加代码的情况下就 能使用,并且可以配置。另一些安全特征可以直接并入组件的开发中。基于规则的安全性可 通过编程和管理实现,它是COM+主要的安全特征,允许安全性的粒度降到特定组件的方法 级,允许所有的用户访问组件,但对某些用户限制使用组件的某些方法。 1324以数据为中心的组件 层结构的底层是数据访问层,这层负责与所需的数据源集成,这些数据源可能是SQL Server或Aces数据库、 Exchange消息库、MSMQ消息队列和UNIX传统应用程序,它们可能 存在于服务器自身、LAN上的一些其他服务器或在互联网上的任何地方。数据组件不仅负责 封装数据的存取,而且负责使数据的定位对于应用程序透明。应用程序需要做的就是实例化 和使用组件,其他的工作由组件自己完成 使用以数据为中心的组件的原因 Windows dna应用程序中以数据为中心的组件对于三层结构是非常必要的。显然如果没 有数据层的话,只剩下两层的应用程序。更为重要的是在组件中封装数据存取可以生成更为 稳固的应用程序。使用以数据为中心的组件的原因是: 使开发人员不受数据库内部结构的影响这种封装以面向对象设计为基本原则。如果组 件的内部工作没有暴露给使用组件的开发人员,那么这些内部工作根据物理数据存储器 变化可以进行更改、更新、增强或替换。另外,开发人员无法通过以不正确的次序改变 数据库的行,来绕过安全措施和存储过程 对不同的数据源提供一致性的数据访问开发人员通过在一个共用接口中封装对不同数 据资源的访问,可以使用相似的方法访问数据库,而不必知道数据存在于何处。这意味 着访问存储在 SQL Server数据库中的数据,可以使用与访问存储于UNX系统的平面文 件中的数据相同的方法完成 透明数据定位访问数据库的物理方法封装在组件中,数据的位置与组件的用户没有任 何关系。用户仅仅访问组件,组件完成到数据源的必要连接并检索数据 13.25业务组件 层的中间是业务组件层。有时称为业务逻辑层或应用程序层。其工作就是为应用程序 提供功能,可以为电子业务应用程序管理会员卡或计算地图应用程序中的两个位置之间的最 业务组件设计隐藏了一系列业务规则需要的复杂交互,以方便处理和让用户界面设计人 员不受基本数据的影响,这些数据简单地与业务组件提供的方法进行交互,表现用户输入的 信息,解释组件处理的结果 使用业务组件的原因 通常数据组件是N层结构的三种组件类型中使用最为广泛的一种,使用业务组件仍有许多 不得已的原因,有些原因与使用数据组件类似或相同 ·业务规则封装通过在组件中封装业务规则,开发人员使用它时不必考虑如何处理规则
组件服务提供运行期服务,这些属性保留决定执行环境如何为其中的对象执行服务的状态。 3. 安全管理器 组件服务为C O M+组件提供许多安全特征,其中自动安全特征在不添加代码的情况下就 能使用,并且可以配置。另一些安全特征可以直接并入组件的开发中。基于规则的安全性可 通过编程和管理实现,它是 C O M+主要的安全特征,允许安全性的粒度降到特定组件的方法 级,允许所有的用户访问组件,但对某些用户限制使用组件的某些方法。 13.2.4 以数据为中心的组件 三层结构的底层是数据访问层,这层负责与所需的数据源集成,这些数据源可能是 S Q L S e r v e r或A c c e s s数据库、E x c h a n g e消息库、M S M Q消息队列和U N I X传统应用程序,它们可能 存在于服务器自身、 L A N上的一些其他服务器或在互联网上的任何地方。数据组件不仅负责 封装数据的存取,而且负责使数据的定位对于应用程序透明。应用程序需要做的就是实例化 和使用组件,其他的工作由组件自己完成。 使用以数据为中心的组件的原因 Windows DNA应用程序中以数据为中心的组件对于三层结构是非常必要的。显然如果没 有数据层的话,只剩下两层的应用程序。更为重要的是在组件中封装数据存取可以生成更为 稳固的应用程序。使用以数据为中心的组件的原因是: • 使开发人员不受数据库内部结构的影响 这种封装以面向对象设计为基本原则。如果组 件的内部工作没有暴露给使用组件的开发人员,那么这些内部工作根据物理数据存储器 变化可以进行更改、更新、增强或替换。另外,开发人员无法通过以不正确的次序改变 数据库的行,来绕过安全措施和存储过程。 • 对不同的数据源提供一致性的数据访问 开发人员通过在一个共用接口中封装对不同数 据资源的访问,可以使用相似的方法访问数据库,而不必知道数据存在于何处。这意味 着访问存储在SQL Server数据库中的数据,可以使用与访问存储于 U N I X系统的平面文 件中的数据相同的方法完成。 • 透明数据定位 访问数据库的物理方法封装在组件中,数据的位置与组件的用户没有任 何关系。用户仅仅访问组件,组件完成到数据源的必要连接并检索数据。 13.2.5 业务组件 三层的中间是业务组件层。有时称为业务逻辑层或应用程序层。其工作就是为应用程序 提供功能,可以为电子业务应用程序管理会员卡或计算地图应用程序中的两个位置之间的最 佳路线。 业务组件设计隐藏了一系列业务规则需要的复杂交互,以方便处理和让用户界面设计人 员不受基本数据的影响,这些数据简单地与业务组件提供的方法进行交互,表现用户输入的 信息,解释组件处理的结果。 使用业务组件的原因 通常数据组件是N层结构的三种组件类型中使用最为广泛的一种,使用业务组件仍有许多 不得已的原因,有些原因与使用数据组件类似或相同: • 业务规则封装 通过在组件中封装业务规则,开发人员使用它时不必考虑如何处理规则。 第1 3章 组件和网络应用程序结构计计417 下载