部署 Windows DNA 2000 应用程序
Duwamish Online 项目概述Pedro Silva 和 Michael D. Edwards
Microsoft 开发者网络
2000年7月
摘要:本文提供对 Duwamish 示例应用程序的历史的概述,并讨论将其转变为真正的、有作用的电子商务启动程序的过程。
目录
简介
问一下任何一个启动过 Web 应用程序的人到底问题出在哪里,您得到的答案各不相同。问题是广泛的,在本质上决非是纯技术性的。我们应该知道这一点 — 通过我们在 MSDN® Duwamish Online 项目中的工作,即在过去的两年里我们一直致力于设计、实现、部署和运行一个全球化的 Internet 电子商务启动程序。现在停一下吧 — 在想到花费两年时间部署的真正的 Internet 启动程序而高兴得笑出眼泪之前,停下来考虑一下为了教会世人如何再现我们的成功将会使我们的计划受到多么大的影响!
对于 Duwamish 小组来说,确定和解决与 Web 应用程序相关的所有问题“只是”完成了一半工作,还有一半工作是要进行教育。我们的剩余时间大部分用于创建和更新极其详细的实验室笔记簿和过程,数百页的应用程序软件和网络规范,以及许多报告和分析文档。
换句话说,成功建立 http://DuwamishOnline.com,但未能教会您如何自己这样做,这不是我们所希望的。因此,您会问什么是 Duwamish Online?继续读下去,我们将解释项目的目标,检查 Duwamish Online 软件和网络体系结构的技术细节,并使您体验一下启动您自己的 Microsoft® Windows® DNA 2000 应用程序所需的部署准备工作,这些是我们整个夏季在 MSDN Online 上要讨论的内容。
概述
去年八月 MSDN 发布了 Duwamish Books Phase 4 示例应用程序,Duwamish Books 是一个雄心勃勃的项目,它展示了业务和体系结构向 Web 的迁移。Phase 1 包括一组用于运营单个零售书店的单片桌面应用程序。Phase 2 将所有的数据访问代码移植到共享 COM 组件中,以支持拥有多家店铺的成长型企业和客户机-服务器体系结构。随着 Duwamish 虚拟书店业务不断扩展到其它城市和州,Phase 3 实现了向逻辑的三层体系结构的变迁,从而能够在业务逻辑层上支持每个店的不同业务规则。Phase 3.5 集成了 Microsoft Transaction Server (MTS) 来管理实际的三层体系结构中的组件并控制事务。最后,Phase 4 将应用程序工作流代码移植到共享 COM 组件中,并将表示逻辑移植到活动服务器页 (ASP) 中 — Duwamish Books 是一个完全基于 Web 的 Windows DNA 应用程序。
www.DuwamishOnline.com
早在我们发布 Duwamish Books 的 Phase 4 之前,我们就知道将有一个 Phase 5。这是因为在整个 Phase 4 中我们将注意力集中于示范 Windows DNA 应用程序的软件体系结构。这只是问题的三分之一 — 另外的三分之一是实际部署新的 Web 应用程序,最后的三分之一是操作它。因此,就在发布 Phase 4 里程碑之后,我们立即着手在 Internet 上实际部署 Duwamish 的任务。
我们的 Duwamish Online 的主要目标是教会您如何成功启动您自己的 Web 应用程序。我们将从头到尾详细说明每个步骤。(对 Web 应用程序成功的要点进行了详细说明)
由于在完成 Phase 4 时 Duwamish 小组在部署和运行 Web 应用程序方面的经验很少,我们决定自己启动 Duwamish,并且运行一段时间。因为我们预期一个在 Windows 2000 发布之后的夏季 2000 发布,我们决定了一个次要目标,即示范如何(及为何)将 Duwamish 应用程序体系结构升级为 COM+ Services — 从本质上说,如何将 Windows DNA 移植到 Windows DNA 2000。
除非我们的体系结构移植是由根本的业务变化激起的,否则一个 Duwamish 新阶段将是不完整的;Duwamish Online 也不例外。因此,在 IPO 现金的激励下以及不发展就会消亡的必然之路的指引下,通过购并,Duwamish Online 在自己的产品目录中添加了有正式标志的便装和运动装厂商。
其它升级的理由是我们认为需要更加完善的应用程序表示和工作流来提供更好的可扩展性和更高的性能。对高可用性和高可靠性的需求,引发了进一步的体系结构(软件和硬件)增强,此增强与其说是由 Duwamish Online 业务变化引起的,不如说是由成功操作 Web 应用程序这一事实引起的(与“仅仅”建立它相对,如我们在 Phase 4 中所做的)。
数据库层
数据库层中的变化是由以下两个因素引起的:
- 新的业务要求,除了销售图书之外还要销售服装和用具(以及将来还有可能进一步扩充 Duwamish Online 产品目录)。
- Duwamish 应用程序工作流发生实质性的扩展。
这些变化导致 Duwamish 数据库方案中的修改以及表、字段和存储过程数目的可观增长。我们利用此机会来删除不再与应用程序有关的遗留数据库对象。我们还将数据库移植到 Microsoft SQL Server™ 2000,以便利用新特性,如群集环境中的全文本搜索。
中间层和表示
在中间层中,我们已经重新设计并实现订购流水线,以及添加其他工作流和业务逻辑以支持我们的改进的表示特性。为了提供更高的可伸缩性、可用性和可靠性,我们引入了“COM+ 排队组件”来处理与第三方合作伙伴的交互操作。这使我们以快得多的速度执行订单(提供重要的可伸缩性收益),而无需依赖我们的合作伙伴的实时服务器性能和正常运行时间(因而使我们的订单工作流的可用性和可靠性成为我们在自身的领域内可以完全控制的事情)
如果您下载并安装了 Phase 4,您将会认识到我们在 Duwamish Online 的表示层所进行的重大改进。我们不仅大幅度地增加了每页的复杂性,而且我们添加了其他诸如帐户历史之类的重要特性。我们增加了应用程序的复杂性以提供更可信的性能和可伸缩性数字。(例如,Duwamish Online 主页是一个动态页,递送它需要的处理是递送静态 Phase 4 主页的十倍。)但是因为 Duwamish Online 在 Internet 上是实况的,所以我们还需要一个更完备的应用程序来保持您是忙碌的和感兴趣的。
第三方交互操作
我们实现了与信用卡授权厂商和执行厂商的完全交互操作。从复杂性和完整性的角度来看,做到这一点都是重要的。在这里我们有很多要解决的有趣问题,从由 Queued Component 服务器获取消息到自动生成电子邮件确认。
应用程序的安装和建立
因为我们计划在其生存期内要安装 Duwamish Online 很多次,所以我们需要一个非常健壮和可维护的安装应用程序。因此,我们决定抛弃 Duwamish Books,Phase 4 安装程序(一个起源于 Microsoft Visual Basic® Setup Kit 的难使用的代码段 — 我们开始在 Phase 3.5 使用它来自动化 MTS 组件的管理)并从头开始。我们结束于世界上第一个完全自动化的、Windows 2000 徽标认证的 Web 应用程序安装实用程序。(至少它是第一个任何人可以免费赠送的实用程序!)
Duwamish 的前几个阶段利用了即席建立过程(对没有正式建立过程的漂亮说法)。因为我们想使我们的客户能够再现我们的测试结果,所以我们需要一个非常可靠和易于修改的建立实用程序。我们的客户能够建立和测试我们所建立和测试的同一内部测试。因此,我们创建了一个新的应用程序建立程序,我们将其包含在 Duwamish Online 下载中。
我们的最优秀的工程师之一花费几周的时间致力于这两项增强,我们对于此工作感到非常自豪。
花费在 Duwamish Online 上的资源的一半被用于确定和应用部署 Web 应用程序所必需的 1,001 个过程:从建立和测试各种网络配置到作出最终的登台和生产服务器采购决策。从编写数据库备份实用程序和练习由备份恢复数据库的过程,到测试数据库失败切换。从购买域名到“强化”生产服务器领域以抵御黑客的攻击。从研究使用情况和建立负载测试脚本,到在按比例放大测试中隔离锁争用。这些仅仅是已经花费我们近一年所完成的并将花费我们整个夏季在 MSDN Online 上为您讲解的全部细节中的几个。
应用程序体系结构
Duwamish Online 扩展示例应用程序早期阶段的类似的 n 层设计,包括表示层、工作流层、业务逻辑层、数据访问层和数据源。虽然早期阶段实现了多种表示类型,但是对于 Duwamish Online 的发行版,我们集中于 HTML 3.2 和 CSS 1.0 客户机,因此我们可以支持可能的最大浏览器观众。然而,支持多种表示类型的能力仍然是此设计的一部分,并且可以容易地将其扩展为利用新的浏览器功能。因此所有的 XML 和 XSL 转换必须在 Web 服务器上完成。
图 1. Duwamish Online 示例的应用程序层
数据存储在关系数据库中,用 COM+ Services 之下运行的组件访问和操纵数据。在中间层 COM+ 组件和表示层之间将数据转换为 XML 格式。表示层对页面进行格式化并将 XML 数据转换为 HTML 3.2,然后由 Internet Information Services (IIS) 返回 HTML 3.2。
表 1.Duwamish Online 分层应用程序体系结构
逻辑 n 层 |
|
数据库层
|
将应用程序逻辑分解为这些层,与编写单片 Web 应用程序相比,使您可以更容易地写入模块化、可重用且可维护的代码。用这些术语来考虑应用程序将慢慢地灌输以下规范:在设计和实现特性和整个应用程序时要牢记这些事情。
此外,此逻辑层次分解并不一定需要对应 COM+ 组件的层次,尽管这是 Duwamish 应用程序的分解方式。有了新的脚本编写功能,如 Visual Basic Scripting Edition (VBScript) 类,就可以容易地将代码封装在类中并且所有的层都可以用脚本编写。虽然这可能有助于简化您的应用程序开发,但是您将无法利用其他特性,如 COM+ 安全性、“排队组件”等。
虽然已更改中间层组件中的很多内容以适应新功能(包括各种各样的项目目录和订购历史),但是工作流层、业务逻辑层和数据访问层背后的原理,仍然保持与 Phase 4 中的那些原理类似。因此,让我们将注意力集中于其中的一些新组件 — 排队工作流组件和执行组件 — 看看它们是如何适应于整个系统的。
排队工作流组件
对于一个每天处理数百万事务的 Web 站点,在使用高峰时每秒处理数千事务,延迟昂贵的操作可以极大地改进响应时间。排队操作可以释放 IIS 线程,因此它们可以对更多请求作出响应,而不是等待昂贵的同步操作完成。此外,排队操作可以使站点更可靠。如果站点的排队部分变成离线的,或者如果有大量需要处理的事务,在系统回到在线状态之前消息在队列中累积或者有一个允许系统赶上的通信暂停。
“COM+ 排队组件”功能部件使实现和配置对象在 Microsoft 的排队技术 (这里是 MSMQ) 基础上运行变得容易。难点是决定您站点的哪些部分不要求用户立即反馈,而是先排入队列。数据库操作是有点昂贵,但是信用卡支付授权却非常昂贵。正如您从在加油站或百货商店刷卡的经验中所了解到的那样,它可以呈现此订单几秒钟。当 Web 服务器的所有工作器线程(IIS 使用 25 个工作器线程的缓冲池)都在忙于为支付授权请求提供服务时,您的站点的响应时间会超出限度。
Duwamish Online 将“COM+ 排队组件”功能部件广泛地用于订单流水线。当一个客户单击购买时,表示层将用 XML 编码的订单信息传递给本地工作流组件。本地组件调用一个远程排队工作流组件并执行 ProcessOrder 方法。所有的订单处理都是由远程托管的排队工作流组件执行的,并且是完全不受 IIS 的约束。
订单处理包括将销售和支付信息插入到数据库中、对信用卡购买进行授权、为执行准备订单数据、用电子邮件通知和在执行订单后从信用卡中扣除购物款项。
执行子系统
我们已经决定与第三方执行公司 (即 Interact Inc.) 合作。该公司将负责在他们的仓库中持有库存目录,将产品装箱并运送到客户手中。我们立即发现我们的数据库和消息格式与 Interact 的格式不兼容(啊,这就是企业与企业集成所带来的快乐)。只能通过使用文件传输协议 (FTP) 访问他们站点上的一个地址与我们的执行提供商进行通信。随着广泛采用 XML 消息传送和服务器应用程序,如 Microsoft BizTalk™ Server,这些类型的外部服务的集成不久应该变得更加容易。
执行系统使用 Microsoft Windows NT® 任务调度程序服务作为几个调度操作运行。这些调度事件调用执行工作流组件将订购单发送给 Interact 并更新我们的提供商的订单状态和库存目录。
执行工作流已与其他 Duwamish 组件集成在一起,并且它使用业务逻辑层和数据访问层来执行订单表中的数据库操作,以及专门用来与 Interact 同步的、其自身数据库中的操作。
发送订购单
“发送订购单”使用 Duwamish Books 业务逻辑工作流层来标识即将执行的订单记录。一旦“发送订购单”确定某个订单即将被执行,它将 Duwamish Online 格式的订单数据转换为与外部系统兼容的格式。然后通过 FTP 将数据传送到外部系统。
更新库存目录和订单状态
“更新库存目录”和“更新订单状态”转换从执行服务器下载的文件中的库存目录状态和订单状态。然后,它们通过工作流层和业务逻辑层来更新 Duwamish Online 系统中的订单状态和库存目录信息。使用这些组件来进行这些更改会保留为控制对库存目录及其状态的更改而制定的任何业务规则。它还调用排队工作流组件来完成最后的信用卡扣款。
网络体系结构
Duwamish Online 和 Duwamish 的以前阶段之间的最大区别之一是设计应用程序于其上运行的网络体系结构时我们所做的广泛工作。产品开发的焦点时常在于软件的体系结构和特性。然而,对于 Web 应用程序网络体系结构是同等重要的。许多设计良好的应用程序,如果没有被正确部署和操作,则会在 Internet 上败得很惨。
尽管 Duwamish Online 被设计为逻辑 n 层应用程序,但它是部署在两个物理层上。在 Duwamish 上运行一大组配置测试之后,我们发现物理两层方法的表现最佳,因为它将机器之间的通信(这是巨大的性能杀手)减到最少。在此配置中,Web 服务器运行此 Web 站点的所有 ASP 页和所有的 COM+ 组件,而第二层运行数据库服务器。使用网络负载平衡 (NLB) 在 Web 服务器之间平衡负载。在使组件在其自身的机器中间层上运行的情况下,我们所进行的测试均具有较低的吞吐量和较高的响应时间。
表 2. Duwamish Online 的两层体系结构
物理两层 |
Web 层(NLB 群集)
数据库层 (Windows Cluster Service)
|
我们的生产网络配置可分为两个主要网络区域:Internet 和服务器领域。
Internet 区域代表我们的路由器和防火墙之外的网络通信量。我们通过一个 1.5 Mbps 连接而连接到 Internet,此连接的提供者是我们的 Internet 服务提供商 (ISP) — 位于 Microsoft 的 Information Technology Group。
我们预期来自 Internet 的网络通信量有三种类型的来源:客户、服务提供商和远程监视客户机。
客户
客户为典型的 Internet 用户,他们将通过各种 Web 浏览器访问我们的站点。将只允许他们通过端口 80 的 HTTP 访问此站点。他们将浏览我们的产品目录,选择要购买的项目并进行购买。
服务提供商
我们还将通过 Internet 与我们的厂商的服务器进行通信,我们的厂商提供支付和执行处理服务。所有与服务提供商进行的通信都将局限于“排队组件” (QC) 服务器。表 3 显示在该服务器上所需的通信方法的列表。
表 3. 在 QC 服务器上所需的通信方法
服务提供商 | 服务类型 | 所需网络 协议 |
CyberSource | 支付处理 | 定制协议 — 端口 80 |
Interact | 订单执行 | FTP 端口 21 |
远程监视客户机
最重要的考虑事项是 Web 站点对于其客户是可访问的。我们必需有一种方法,可以从我们的实际服务器网络之外检查站点的可用性。一些网络问题 — 如丢失 ISP 连接 — 无法从专用网络中监视。
我们将在我们的防火墙之外至少设置一台客户机,以便远程监视我们的服务的健康状况。此客户机将定期强制我们站点的关键服务作出回应,并将提醒操作人员注意失败的服务。理想的情况是,我们通过不同的 ISP 连接部署多台客户机。然而,对于我们的初始部署,我们将通过一个外部连接只设置一台客户机。
我们的服务器领域仅有的外部专用网络连接,是来自我们的 ISP 的直接 Internet 出口和到用于操作和网络管理的“管理服务器”的安全拨号连接。
图 2. Duwamish Online 生产领域的网络图表
我们的生产服务器领域由三个网络段组成。这些网络段由机器中每个段各自的网络接口卡 (NIC) 分开。
前端网络
这是可以从 Internet 访问的公共网络段。此段中的所有服务器都连接到一个 100-Mbps LAN 交换机。前端网络由下列服务器和服务的连接组成:
- 四个 Web 服务器,配置为一个 NLB 群集。
- 一个排队组件 (QC) 服务器,启用了 SMTP 服务器。
- 一个主域控制器 (PDC)/域名系统 (DNS) 服务器。(我们还将 QC 服务器配置为备份域控制器,以防主服务器停机。)
- 一个来自我们的 ISP 的 1.5-Mbps Internet 连接,在路由器级启用了 IP 过滤防火墙。
后端网络
后端网络是内部专用网络段,它允许前端服务器和后端数据库服务器之间的安全通信。不能直接从 Internet 访问此网络,因此,除非通过前端服务器,否则任何人或任何事物都无法连接到我们的数据库服务器。
此段中的所有服务器都连接到 100-Mbps LAN 交换机。后端网络由下列服务器的连接组成:
- 四个 Web 服务器,配置为一个 NLB 群集。
- 一个排队组件 (QC) 服务器,启用了 SMTP 服务器。
- 一个主域控制器 (PDC)/域名系统 (DNS) 服务器。(我们还将 QC 服务器配置为备份域控制器,以防主服务器停机。)
- 两个数据库服务器,配置有“主动到被动服务器群集”。(这两个数据库服务器均连接到外部 RAID5 存储系统。)
管理网络
管理网络是另一个内部专用网络段,它专用于生产领域中的单个服务器的操作和管理。它由后端网络中的所有服务器以及一个管理服务器组成。所有的服务器均连接到一个 100-Mbps LAN 交换机。
管理服务器将:
- 提供对所有服务器的终端客户机访问。
- 监视所有服务器的健康状况。
- 充当对此领域的远程访问的远程访问服务器 (RAS)。
- 充当备份服务器。
记录服务器的硬件和软件规格,以便小组中的每个成员都知道哪台机器在领域中以及每台服务器上安装了哪个软件;这与网络设置一样,也是极其重要的。到目前为止,我们的服务器领域的软件列表还比较短,这是因为我们正在使用新的 Windows 2000 发行版。然而,随着服务软件包和软件更新的发布,跟踪每台服务器上的软件安装情况将变得更加重要。表 4 说明 Duwamish Online 生产服务器领域的硬件和软件规格。
表 4. Duwamish Online 服务器硬件和软件规格
服务器/设备类型 | 设备数量 | 硬件规格 | 软件规格 |
Web 服务器 | 4 | Dell PowerEdge 2300 双处理器,2 x 500 MHz 512 MB RAM,9 GB HD 3 x 100 Mbps NIC | Windows 2000 Advanced Server 网络负载平衡 Microsoft Message Queuing |
数据库服务器 | 2 | Dell PowerEdge 2300 双处理器,2 x 500 MHz 512 MB RAM,9 GB HD 3 x 100 Mbps NIC | Windows 2000 Advanced Server SQL Server 2000 Microsoft 群集服务 |
队列组件服务器 | 1 | Dell PowerEdge 2300 双处理器,2 x 500 MHz 512 MB RAM,9 GB HD 3 x 100 Mbps NIC | Windows 2000 Advanced Server Microsoft Message Queuing SMTP Active Directory™ |
PDC/DNS 服务器 | 1 | Dell Precision 610 单处理器,550 MHz 256 MB RAM, 9 GB HD 3 x 100 Mbps NIC | Windows 2000 Advanced Server Active Directory™ 服务 |
管理服务器 | 1 | Dell Precision 610 单处理器,550 MHz 256 MB RAM, 9 GB HD 2 x 100 Mbps NIC 56K 调制解调器 20G 备份磁带驱动器 | Windows 2000 Advanced Server SiteScope/Microsoft Cluster Sentinel |
远程监视客户机 | 1 | Dell Precision 610 单处理器,550 MHz 256 MB RAM, 9 GB HD 1 x 100 Mbps NIC | Windows 2000 Professional |
100-Mbps LAN 交换机 | 3 | Allied Telesyn CentreCOM FS708 100 Mbps 以太网交换机 | 无 |
结论
Duwamish Online 是一场激动人心的冒险经历,作为将一个新站点部署到 Internet 的开发者或操作管理员,您将会面对其中的挑战和问题。虽然此最新发行版经过了很长时间才完善我们的 Web 商店 — 用支付和执行处理 — 但是仍然有未涉及的领域,因为这不是真实的商务。
除了操作此站点外,Duwamish 小组还将用这个夏季发布此站点的示例代码,继续进行进一步的性能测试,并出版一些文章,说明和解释如何将我们在 Duwamish 上所做的工作应用于您自己的应用程序。在整个夏季,您均可以访问 MSDN Online (Duwamish Online) 上我们的栏目,以下载我们的源代码以及阅读更多有关 Duwamish Online 的深入讨论的文章。