摘要: 本文概要介绍在一组基于 SQL Server XML 的解决方案中使用 Duwamish Books, Phase 4 应用和更可靠的 Duwamish Online 应用后所得到的体系结构。
简介
Microsoft SQL Server 2000 以其众多的新功能闪亮登场,其中包括我们称之为 SQL Server XML 的系列 XML 新技术。此技术套件包含诸多改进、增强和特性,使 SQL Server 成为更具 Web 特点的应用程序,向 Microsoft .NET 版本迈进了一步。
SQL Server XML 可用于扩展、增强或替换 Web 应用的体系结构。新特性可分为两个主要组件:
数据库组件,允许数据库对 XML 进行读、处理和写操作
SQL Server XML Internet Server API (ISAPI) 应用,允许通过 HTTP 访问数据库
无论是使用这两个组件还是使用其中的一个,都可以获得多个理想的体系结构。为了测试新工具的功能和灵活性,我们检验了 Duwamish Online 的逻辑体系结构,并将其应用到一组基于 SQL Server XML 的解决方案中。为了使研究更全面,我们在测试中同时使用了比较简单的 Duwamish Books, Phase 4 应用和更可靠的 Duwamish Online 应用。下面是所得出的体系结构的概述。
逻辑体系结构
我们必须认识到不管应用是什么形式,下面两种体系结构始终存在:逻辑体系结构,是用于分析应用的组织概念,而物理体系结构则表示实施应用的途径。区分这两个概念是非常必要的,因为这两个体系结构很少完全对应(即使有过这种情况)。下面您将看到,与给定的逻辑设计相对应的物理体系结构会根据不同的情况而改变。
创建 Duwamish Online 及其以前版本时,我们根据 Microsoft n-层准则确定逻辑体系结构。该体系结构包括由 Web 应用执行的公共操作,并不是专门针对 Duwamish Online 的。
图 1:逻辑体系结构
应用分为五个逻辑层。距离客户端最远的是数据层,其中存储了应用所需的信息。它的上一层为数据访问层,它从数据库中数据的表示形式中提取数据,并且包含所有数据库操作公用的例程。数据访问层直接由业务逻辑层使用。业务逻辑层通过隐藏来自更高层的事务逻辑和实施细节来提取业务事务。体系结构的下一个逻辑层是工作流层,也称为业务接口,它提供了一个到表示层的简单界面(也称为接口)。工作流层管理内部状态,并使用业务逻辑层提供的自动操作来完成复杂的工作流。最后是表示层,它为用户转换工作流层返回的结果。有一些转换比较简单,例如通过 XSL 样式表将结果转换为 HTML;有些则比较复杂,例如通过电话线阅读结果的语音算法。
下面是从这个逻辑体系结构得出的几个物理体系结构。
物理体系结构
分发负载
SQL Server XML 使数据库具备除读写数据之外的很多其他功能。XML 功能允许存储过程处理大量高度结构化的数据。相关信息可以作为 XML 传递到存储过程,从而允许业务逻辑或工作流以存储过程(而不是 COM+ 或脚本)的形式实施。这意味着,现在您可以将更多应用处理移到数据库一级。如果决定采用这种方式,请切记数据库是应用中可伸缩性最小的部分。
决定应用在数据库和 Web 服务器之间分发处理的方式是非常关键的。这将影响应用所需的软件和硬件,开发应用所需的专业技能,以及部署、更新和维护的过程。为遵循简单性原则,我们将参考一个服务器配置,其中 Web 服务器执行大部分工作,属于“头重”类型。而那种由数据库服务器执行大部分工作的配置则属于“脚重”类型。
对于大多数应用,有两方面的因素决定其选择“头重”服务器:
成本:数据库服务器所用的软件和硬件比 Web 服务器所用的软件和硬件成本高。
可伸缩性:在 SQL Server 2000 中,数据库的可伸缩性在 SQL Server 7.0 的基础上得到改善,但是为了充分发挥新硬件的功能,还需要仔细规划和有效维护。
基于以上原因,基于“脚重”类型的服务器配置体系结构留待以后讨论。
Microsoft n-层物理体系结构
作为比较,我们先看一个没有使用 SQL Server XML 的 Duwamish Online (http://www.duwamishonline.com/) 的物理体系结构。它的设计目的是尽可能实现上面介绍的逻辑体系结构。尽管每一层都设计为执行一类逻辑操作,但是,仍然出现功能分布超出范围的情况。例如,某些业务逻辑由数据库中的存储过程执行以提高性能。那些熟悉 Duwamish Books, Phase 4 的用户很快就会发现结构的改变很小。
图 2:Microsoft n-层体系结构
此体系结构允许每个组件专用于一个特定任务,并使用最适合该任务的技术。缓存用 C++ 编写以最大程度提高性能;使用 Active Server Pages (ASP) 和 XSL 来控制表示逻辑;由 Microsoft Visual Basic® 执行工作流、业务逻辑和数据访问;用 Transact SQL (T-SQL) 控制组件和数据库操作。未划定技术界限的各层将按照将其作为单独的 COM+ 组件实施来划分。所有这些灵活性的代价是各层必须协同工作。跨环境调试是一项艰难的工作,必须非常细心,以确保适合一种环境的数据必须重新设置格式以适合其目标环境。(例如,字符串“a
读取方物理体系结构
Duwamish Online 在整个应用中使用单一的物理结构。与此相反,基于 SQL Server XML 的版本使用两个互补的物理体系结构:一个用于读取,另一个用于写入。在我们的例子中,第二种比较合适,因为两种使用情况需要不同类型的处理。
注意:
请参阅 http://msdn.microsoft.com/voices/news/sqlxml.asp(英文)中的完整体系结构图。
图 3:读取方体系结构
SQL Server XML 技术用于所有层(从数据库到表示)以最大限度地提高性能。SQL Server XML ISAPI 应用代替 Web 层上的 ASP。ISAPI 应用和 SQLOLEDB 提供程序自动执行数据访问,从而减小代码量,缩短开发时间。获得此性能的代价是失去了可靠的 ASP 对象模型和灵活性。下面一节写入方物理体系结构中将说明失去的功能,以及如何在必要时将应用代码集成到体系结构中,从而重新获得这种灵活性。
现在,让我们看一些更细致的体系结构特性。表示方法由 XSL 样式表单独控制。因为数据库返回的数据为 XML,所以这一特性很有用。但是,使用 XSL 的好处是不依赖于技术。换句话说,模板、ASP 页和 COM+ 组件可以使用同一个样式表。模板包含工作流层。(模板是 XML 说明文件,它生成数据驱动的动态 Web 页,允许通过 HTTP 快速访问数据库,同时提供一定级别的数据提取和数据安全性。)模板通常使用存储过程进行数据访问,尽管它们也可以使用 XML Data Reduced (XDR) 架构,这种架构提供了一种直观的语法将数据库对象映射到 XML 元素,还提供了使用 XPath(XML 路径语言)进行数据库查询的能力。有关模板、XDR 架构和实施细节的详细说明,请参阅我以前的文章 Duwamish Online SQL Server XML 分类浏览。
这种体系结构没有单独的业务逻辑层。这是因为我们的应用中的只读操作只有很少的业务逻辑量,可以轻松地集成到数据访问例程中。在其他情况下,业务逻辑层可作为数据库中的一组存储过程高效实施。有关这方面的设想和方法,请参阅本文后面的以数据库为中心的体系结构一节。
经过验证,最大的变化发生在数据库层。新增的一组功能允许存储过程直接读写 XML。事实上,所有数据检索都通过 XML 来完成。
写入方物理体系结构
SQL Server XML 模板经过高度流程化,能尽可能高效地通过 HTTP 访问数据库。为此付出的代价是功能集受到限制。在模板中找不到所需功能的情况下,SQL Server 的专用 ISAPI 应用被替换为 ASP、ASP 和 COM+ 的组合或自定义的 ISAPI 应用。
本节中说明的体系结构适用于您的页面要执行下列操作的情况:
访问多个服务器上的数据库
处理在设计时未知其格式的 HTTP 请求
调用 COM/COM+ 对象
使用 COM+ 事务
连接至 Internet 上的任何应用或 Web 服务,例如付款提供程序
图 4:写入方体系结构
Web 层上的代码表示应用功能的四个层――数据访问、业务逻辑、工作流和表示。在开发应用时,请确保此代码与体系结构保持一致。这可使代码的可读性更高,也更易于维护。如果决定单独使用 ASP,脚本类的效率会更高。如果在业务逻辑层或工作流层有大量复杂的处理,对这些层使用 COM+ 组件可能速度更快。相反,对于处理量相对较小的情况,使用脚本可能速度更快。
这种新体系结构更出色的原因是,所有层(从数据到表示)都使用 XML 来传输和存储信息。数据库中的存储过程使用这些新功能来读写 XML。数据访问层利用 ADO 2.6 流与数据库进行高效、基于 XML 的通讯。
更新颖的方法是将某些中间层下移到数据库中。
以数据库为中心的体系结构
Duwamish Online 体系结构基于这样一种设想:因为数据库的可伸缩性最低,它应该设计成执行尽可能少的任务。分布式分区视图等新功能允许在多个服务器之间分担工作量,从而提高了数据库的可伸缩性,使开发人员可以选择将大部分工作放在何处。
如果选择将“脚重”服务器群集(数据库方面功能更