Windows DNA 示例项目 — 比较指南
Steve KirkMSDN 体系结构小组
2000年6月
MSDN 体系结构小组已经将该比较指南汇集到培训形式的 Windows® DNA 应用程序,以帮助用户更好地使用“技术讲座”中提供的、可以在 MSDN 上得到的各种示例和相关材料。比较格式突出相似性和差异,使您能够容易比较出应用程序的体系结构、实现语言、技术和其他重要的功能。摘要是基于我们对这些示例的反复研究,包括与设计者和开发人员的讨论。
尽管这些例子在不同程度上说明了实际的业务方案,但是其重要价值在于它们是体系结构和实现的示例。我们相信,如果尽最大的努力去彻底理解这些示例的相对优点和局限性 — 如何评价它们的核心能力:可靠性、可管理性、可伸缩性等等 — 定能在改进 Windows DNA 应用程序的设计方面获得最大的回报。
Windows DNA 示例项目指南包括如下主题:
- 示例应用程序(可以运行所有源代码的应用程序和文档)。
- 案例分析(来自实际项目的报告)。
- 演示方案(说明技术或产品的前景)。
除了本指南之外,“技术讲座”和 MSDN 还赞助关于这些示例的联机讨论,以及小组讨论,还有“向专家请教”。这些示例的设计者和开发者都将出席“向专家请教”,以便一对一地讨论下列主题。
美国花卉服务 (American Floral Services)
此案例介绍“美国花卉服务”开发的应用程序,该应用程序给予他们 24,000 个成员花店以有独立品牌的 Web 店面。
分析
该应用程序在灵活性、互操作性、可伸缩性(每天一百万独特的访问者)方面,以及短时间投放市场(3个月)上非常突出。应用程序驻留在一个站点上,它看起来像 24,000 个单独的站点。这种配置使它拥有大型组织的规模经济(容易管理和维护),同时还支持独立的应用程序。此外,它能与那些花匠们(他们选择实现他们自己的虚拟域)的域注册表交互。
“技术讲座”会议
“用 Microsoft 技术构造 24,000 个动态驱动的电子商务站点 (2-302)”,演讲者 David Sutton 和 Alan Dickman。解释了“美国花卉服务”如何开发和为什么开发 Windows DNA 应用程序,该应用程序使 24,000 个花店中的每一个都能提供各自销售经验、本地的产品目录和客户支持。会议将讨论调整物理系统的大小、对象模型设计以及对 Microsoft Commerce Server 的修改。
实现语言/技术
- Windows 2000 Advanced Server (Internet Information Server (IIS), Active Server Pages (ASP), COM+)。
- Commerce Server 2000。
- SQL ServerTM 7.0。
- IBM MQ 系列。
“美国花卉服务”体系结构
链接自治应用程序 | 物理实现 |
---|---|
店面应用程序 | 服务器领域 Commerce Server 2000 DHTML, IIS, ASP |
存储管理 | 服务器领域 Commerce Server 2000 |
数据库层:SQL 数据库 | SQL Server 7.0 |
线路传输 | IBM MQ 系列 |
邮件和域服务 |
Art.com
本案例分析客户销售 Web 站点 Art.com。每天为 80,000 到 100,000 名个人用户服务,Art.com 将加外框和不加外框的艺术画和复制品直接销售给大众。
分析
除了使用群集技术以获得可伸缩性之外,应用程序还通过在事务、目录搜索和数据仓库块中引入数据库层,来解决联机事务处理 (OLTP)、目录搜索功能和联机分析处理 (OLAP) 之间的固有矛盾。故障转移群集也使应用程序提高了可靠性和可用性。这里是我们可以看到热点的许多地点中的第一个,n 层逻辑体系结构和两层物理体系结构之间的矛盾。由于在 n 个逻辑层上完成的工作量无法证明进程外或远程调用的开销是合理的,因此在物理的两层排列中配置这些逻辑层可以获得更高的性能。在其他示例中,我们可以经常看到这种模式。
“技术讲座”会议
“ART.COM:Windows DNA 案例分析 (9-306)”,演讲者 Jon Rauschenberger。本次会议的议题为:在现实世界中实际站点如何用新的 Windows 2000 技术来扩展。讨论包括可伸缩性、群集、状态管理、负载测试、调整 IIS、数据库分区、代码管理、记录和报告。
实现语言/技术
- Windows 2000 高级服务器(IIS、网络负载平衡 (NLB)、Windows 群集服务 (WCS)、COM+、ASP)。
- SQL Server 7.0。
Art.com 体系结构
逻辑 n 层 | 物理 2 层 |
---|---|
表示层 (HTML 3.2) 业务逻辑层 | Web 层(NLB 群集) ASP/脚本 COM+ 组件 |
数据库层 SQL 数据库 | 数据库层(WCS 群集) 搜索分区 事务分区 数据仓库 |
注意:状态管理方案是基于客户 cookie 的,它包含 SessionId 和数据库中的存储器。
测试
Microsoft Web 应用程序强度工具 (WAS) 是用于测试的。测试脚本设计为模拟应用程序的预期业务使用,带有在用法假定和实际使用之间进行协调的 ASP 日志。
BookBroker
BookBroker 是一个虚拟的业务方案,它介绍 XML 技术如何在多个从业务到顾客的书店和书商之间,实现从业务到业务的互操作性。
分析
在 BookBroker 中,体系结构上的焦点,从单个应用程序转移到了应用程序之间的互操作性。在独立的应用程序中作为一系列内部实现方法实现的工作流,在以 XML 为中心方案中将成为交换和处理符合标准架构的文档的任务。该方案的目的是强调用于实现该互操作性的 XML 技术。
“技术讲座”会议
“用 XML 技术构造电子商务应用程序 (9-332 W)”,演讲者 Zach Jason 和 Eric Schmidt。
此次会议介绍 Microsoft 的 XML 策略并展望目前和将来的 XML 相关产品。演讲者将采用 BookBroker 应用程序作为演示 XML 技术的例子。
实现语言/技术
- MSXML 分析器(包括 XSL(T)、XDR、Xpath 和 DOM)。
- ActiveX® Data Objects (ADO) 2.6(展示新的 ICommand Stream 接口)。
- SQL Server 2000(XML 功能)。
- BizTalkTM Server。
- Soap SDK。
- Internet Information Server 5.0。
- Windows 2000 Server。
- ASP。
- Visual Basic® COM 组件。
- Microsoft Internet Explorer 5.0(JScript 和 VBScript)。
- Commerce Server 2000。
BookBroker 体系结构
链接自治应用程序 | 物理实现 |
---|---|
Retail 应用程序 | Commerce Server 2000 |
Retail 应用程序 | Commerce Server 2000 |
Broker 应用程序 | BizTalk Server 2000 |
Fulfillment 应用程序 | SQL Server 2000 |
DNAYourBusiness.com
DNAYourBusiness.com 是一个 Windows DNA 方案,和 BookBroker 类似,它也是将焦点从单个应用程序转移到应用程序之间的互操作性。和 BookBroker 不同的是,它强调底层的 XML 技术,该演示方案强调了 2000 服务器技术。它将整个业务供应链连接在一起,包括采购、定单完成、付帐和其他过程。
在“技术讲座”中介绍的 DNAYourBusiness.com,是沿用 Exchange Server、SQL Server、Commerce Server、Host Integration Server 和 BizTalk Server 的一种方式。它是开发的铺路石,可以参考的应用程序,构造您自己的业务对业务应用程序时使用的模板。随着 DNAYourBusiness.com 的开发,将会给您带来更多的信息。
DuwamishOnline.com
Duwamish Online 是最新版本的 MSDN Duwamish Books 的示例,将很快出现在 Internet 上。Duwamish Online 利用了 Duwamish Books Phase 4 应用程序(十足的商业应用程序)的体系结构,而且还有更丰富的界面,就像真正的应用程序一样。此外,还有提供目录、信用卡验证和库存清单完成的真正业务伙伴。详细信息,请访问 Duwamish Books Phase 4。
每两个月在 Duwamish 日记中介绍一次部署和操作问题。这些问题包括网络配置、调整服务器大小、测试、调整、安全性和与信用卡的互操作以及定单完成服务。MSDN 体系结构小组将在这个夏天继续将这些成果归纳成文档,关于设计和部署主题的深入介绍在这篇日记中,而正在进行的日记还包括站点的操作。
分析
该应用程序的重要意义在于,使用 XML/XSL 转换将数据绑定到用户界面上,并使用了排队 COM+ 组件。我们再次看到了 n 层逻辑体系结构和两层物理体系结构之间的矛盾。
“技术讲座”会议
“Duwamish Online 性能问题”,演讲者 Michael Edwards。
此次会议(只作为根据请求得到的 WebCast)介绍设置性能需求、选择服务器硬件(按比例增加和减少方式)以及用 Microsoft Web 应用程序强度工具(以前称为 Homer)来测试性能。
实现语言/技术
- Windows 2000 Advanced Server。
- 使用存储过程的 SQL Server 2000。
- COM+ 服务。
- ASP。
- VBScript。
- Visual Basic COM 组件。
- Visual C++® (ATL) 组件 — 可用线程缓存。
- ADO 断开连接的记录集。
- XML(MSXML 分析器、XML/XSL)。
- HTTPS 加密。
Duwamish Online 体系结构
逻辑 n 层 | 物理 2 层 |
---|---|
表示层 HTML 3.2 工作流层 跨越或合并多个自治业务事务进行工作 业务逻辑层 自治业务事务边界 数据访问层 处理断开连接的数据访问 | Web 层(NLB 群集) ASP 中的 VBScript 用 XML/XSL 转换生成的所有 HTML ASP 应用程序空间缓存中的 Visual C++ ATL Cache 组件很少改变 HTML/XML Visual Basic COM+ 工作流、业务逻辑、数据访问组件(COM+ 库) |
数据库层 SQL 数据库 | 数据库层(WCS 群集) 使用存储过程的 SQL Server 2000 |
注意:状态管理方案是基于客户 cookie 的,它包含 SessionId 和数据库中的存储器。
测试
测试脚本被设计为模拟预期的应用程序商业使用。Microsoft Web 应用程序强度工具 (WAS) 是用于测试的。测试脚本包括在本示例中。
Fitch & Mather Stocks 2000
Fitch & Mather Stocks 2000 是最新版本的 Fitch & Mather Stocks 示例应用程序,它是电子商务产品/目录联机事务应用程序。FMStocks 2000(英文)正在 Internet 上运行。
Fitch & Mather Stocks 2000:简介和文章列表(英文)可以在 MSDN 上得到。FMStocks 2000 基于 Fitch & Mather Stocks 1.0(英文),它也可以在 MSDN 上得到。
分析
该应用程序值得注意,因为它不需要客户机浏览器即可支持 cookies。ISAPI DLL 为流出的 HTML 添加 sessionID,并为每个请求检索 sessionID。FMStocks 2000 和 Nile Books/Visual Basic/ASP 逻辑三层实现以及 COM+ 组件共享体系结构。我们可以再次看到 n 层逻辑体系结构和两层物理体系结构之间的矛盾。
“技术讲座”会议
“FMStocks 2000 内部:需求和体系结构 (9-317)”,演讲者 Margaret Deem 和 Scott Stanfield。
“FMStocks 2000 内部:设计高伸缩性的中间层 (9-315)”,演讲者 Margaret Deem 和 Scott Stanfield。
“FMStocks 2000 内部:负载测试和调整 (9-316)”,演讲者 Margaret Deem 和 Scott Stanfield。
这些会议将介绍设计和开发过程,从最初体系结构的需求定义和开发开始。接下来介绍中间层组件的设计和编程,使用 COM+ 组件和事务服务的无状态 Visual Basic COM DLL。调整会议度量、分析并研究在发现了瓶颈之后应用的解决方案。
实现语言/技术
- Windows 2000 Advanced Server。
- 使用存储过程的 SQL Server 2000。
- 网络负载平衡 (NLB)。
- Windows 群集服务 (MCS)。
- ASP。
- Visual Basic COM+ 组件。
- ISAPI Visual C++ DLL。
FMStocks 2000 体系结构
逻辑 n 层 | 物理 2 层 |
---|---|
表示层 HTML 3.2 业务逻辑层 数据访问层 处理断开连接的数据访问 隐藏存储过程名称 | Web 层(NLB 群集) Visual C++ ISAPI DLL(添加和检索会议 ID) ASP 中的 VScript Visual Basic COM+ 组件(COM+ 库) |
数据库层 SQL 数据库 | 数据库层(WCS 群集) 使用存储过程的 SQL Server 2000 |
注意:状态管理方案使用 ISAPI DLL 管理的隐藏 sessionID,和数据库中的存储器。
测试
在测试时使用了第三方测试工具。
Microsoft.com
应用程序体系结构和技术的最佳实验室是一个主应用程序。拥有 2500 万成员和每天上百万名访问者的 Microsoft.com 是当今最大的 5 个 Web 站点之一。请参见 Microsoft.com 后台站点以获得来自 Microsoft.com 的最新体系结构和技术问题介绍。
分析
该应用程序之所以重要有几个原因。2500 万行的成员数据库代表了表分区的成功策略,同时提供了 XML 除了在应用程序的其他层之外,还在数据库层存在的强大案例。中间层在逻辑上划分为数据访问层和业务逻辑层,其中的类实现为 JScript 中的 Scriptlet,而不是 COM 组件中的 Scriptlet。该物理两层实现,仍然是逻辑层和物理层之间矛盾的又一个例子。要完成的工作量和代码大小,不能证明组件外的调用或对远程组件的调用的开销是正当的。我们获得的是更好的性能和可管理性。最后,该应用程序的重要意义在于,它使用了 XML/XSL 作为数据绑定技术,使得代码和数据同表示格式完全分开。
“技术讲座”会议
“Microsoft.com 关于性能和可伸缩性的讲座 (Gen. Session)”,演讲者 Mike Moore、Larry Jordan 和 Ahmad Safa。
此次会议从在 Internet 上构造一个最大的站点获得了设计的指导经验。主题包括数据库优化、使用 XML、本地化和操作指南。会议还介绍了搜索和注册功能。
实现语言/技术
- Windows 2000 Advanced Server(IIS、ASP、群集)。
- 使用存储过程的 SQL Server 2000。
- Windows 脚本组件 (JScript)。
- XML 和 XSL
Microsoft.com 体系结构
逻辑 n 层 | 物理 2 层 |
---|---|
表示层 业务逻辑层 数据访问层 | Web 层(NLB 群集) ASP 扩展使用 XML/XSL 转换以生成 HTML Windows 脚本组件 (JScript) |
数据库层 SQL 数据库 | 数据库层(WCS 群集) 水平分区的成员数据库 使用存储过程的 SQL Server 2000 |
注意:状态管理方案是基于客户 cookie 的,它包含 SessionId 和分区数据库中的存储器。
测试
Microsoft.com 使用 Microsoft Web 应用程序强度工具 (WAS) 进行性能测试。
Nile Books
Nile Books 应用程序是为 PCWeek/DocuLabs 基准竞争开发的电子商务产品/目录联机事务应用程序。
分析
编写 Nile Books 的 4 种变体,是为了在这次竞争中,将 TPC-W 基准执行得更好。四种实现如下:
- Visual Basic/COM+/ASP。
- Visual C++/ISAPI Monolithic。
- Visual C++/ISAPI/COM+。
- VBScript/ASP。
这些实现应该是在完成时间和核心能力标准(例如可伸缩性、可维护性和可管理性)两个方面,比较实现语言和技术的起点。某些应用程序也显示出逻辑 n 层和物理两层体系结构之间的矛盾,与本指南中其他应用程序中提到过的一样。此外,优于 Visual Basic/COM+ 实现的 VBScript 实现(使用 VBScript 类)证明了 Microsoft.com 在中间层使用脚本类的决定是正确的。
“技术讲座”会议
“Web 应用程序性能和可伸缩性:COM+ 负载平衡、智能分区和其他 Windows DNA 体系结构决策 (6-312)”,演讲者 Greg Leake。
此次会议为基本的 n 层 Web 应用程序提供了全面的性能/可伸缩性测试结果。介绍体系结构和实现决策,着眼于它们各自对性能的影响。“用 C++ 构造高性能的 Web 应用程序(PCWeek 的 Nile App)(6-303)”,演讲者 Margaret Deem 和 Scott Stanfield。
此次会议介绍使用 Visual C++ 开发高性能的 Web 应用程序。主题包括 ISAPI 过滤器设计、COM+ 对象池、ODBC 连接池和组件负载平衡。
实现语言/技术
下面的表格提供了实现 Nile Books 应用程序的四种不同方式。我们划分它们的目的是为了比较开发语言和技术。
Nile Books (Visual Basic/COM+/ASP) 体系结构
逻辑 n 层 | 物理 2 层 |
---|---|
表示层 HTML 3.2 业务逻辑层 数据访问层 处理断开连接的数据访问 | Web 层(NLB 群集) ASP 中的 VBScript Visual Basic COM+ 组件 |
数据库层 SQL 数据库 | 数据库层(WCS 群集) 使用存储过程的 SQL Server 2000 |
Nile Books (Visual C++/ISAPI monolithic DLL) 体系结构
逻辑 n 层 | 物理 2 层 |
---|---|
应用程序层 | Web 层(NLB 群集) Visual C++/ISAPI monolithic DLL ODBC 数据访问 |
数据库层 SQL 数据库 | 数据库层(WCS 群集) 使用存储过程的 SQL Server 2000 |
Nile Books(Visual C++/ISAPI/COM+ 组件)体系结构
逻辑 n 层 | 物理 2 层 |
---|---|
表示层 HTML 3.2 中间层 | Web 层(NLB 群集) ISAPI DLL Visual C++ COM+ 组件(COM+ 库) 来自上面的 ODBC 数据访问 |
数据库层 SQL 数据库 | 数据库层(WCS 群集) 使用存储过程的 SQL Server 2000 |
Nile Books (VBScript/ASP) 体系结构
逻辑 n 层 | 物理 2 层 |
---|---|
表示层 HTML 3.2 中间层 | Web 层(NLB 群集) ASP 中的 VBScript(脚本类) |
数据库层 SQL 数据库 | 数据库层(WCS 群集) 使用存储过程的 SQL Server 2000 |
测试
测试脚本符合 PCWeek/DocuLabs 测试中使用的 TPC-W 电子商务基准。使用了第三方测试工具。
应用程序的会议计划
6 月 5 日,星期一
上午 10:45-12:00,Valencia A
Nile Books
“Web 应用程序和可伸缩性:COM+ 负载平衡、智能分区和其他 Windows DNA 体系结构决策 (6-312)”,演讲者 Greg Leake。
下午 1:30-2:45,209 房间
Nile Books
“用 C++ 构造高性能的 Web 应用程序(PCWeek 的 Nile App) (6-303)”,演讲者 Margaret Deem 和 Scott Stanfield。
下午 1:30-2:45,D 大厅
BookBroker
“用 XML 技术构造电子商务应用程序 (9-332 W)”,演讲者 Zach Jason 和 Eric Schmidt。
6 月 7 日,星期三
上午 10:15-11:30,209 房间
美国花卉服务
“用 Microsoft 技术构造 24,000 个动态驱动的电子商务站点 (2-302)”,演讲者 David Sutton 和 Alan Dickman。
下午 1:00-2:15,209 房间
FM Stocks 2000
“FMStocks 2000 内部:需求和体系结构 (9-317)”,演讲者 Margaret Deem 和 Scott Stanfield。
下午 2:45-4:00,Valencia A
FM Stocks 2000
“FMStocks 2000 内部:设计高伸缩性的中间层 (9-315)”,演讲者 Margaret Deem 和 Scott Stanfield。
下午 4:30-5:45,209 房间
FM Stocks 2000
“FMStocks 2000 内部:负载测试和调整 (9-316)”,演讲者 Margaret Deem 和 Scott Stanfield。
晚 6:15-7:00,Valencia D
Art.com
“ART.COM:Windows DNA 案例分析 (9-306)”,演讲者 Jon Rauschenberger。
晚 7:30-8:30,206 房间
Windows DNA 应用程序概述 — 小组讨论。
晚 7:30-10:00
向专家请教
6 月 8 日,星期四
上午 8:30-10:15,D 大厅
Microsoft.com
“Microsoft.com 关于性能和可伸缩性的讲座 (Gen. Session)”,演讲者 Mike Moore、Larry Jordan 和 Ahmad Safa。