商务参考体系结构:企业对消费者第 6 章:解决方案指南Microsoft Corporation 2001年5月 摘要:本章概要介绍了解决方案实现组件,其中包括:应用程序的高级图形表示法、关于 PASP 文件和 XSLISAPI 过滤器如何发挥作用的说明、ConsolidatedRetail.com 应用程序中每种主要组件类别的说明。 简介参考体系结构应用程序包含许多自定义的 ASP 文件和代码组件。本章后面的章节将详细介绍这些文件的源代码。图 6-1 直观清晰地显示了解决方案的各个组件及其相互关系。当阅读本指南的其余部分和查看源代码时,可将该图作为基本参考资料。 图 6-1:参考体系结构应用程序组件 正如您从该图中所看到的那样,用户使用浏览器(在此为 Internet Explorer 5)来访问该应用程序。网站中的 ASP 文件作为预处理的 ASP(PASP 脚本)实现,并使用 Commerce Server 2000 提供的可编程对象(如 ProductCatalog、AuthManager、UserProfile 和 OrderGroup)将数据发送到 SQL Server 2000 中的 Commerce Server 站点数据库和从该站点数据库检索数据。下订单或查看购物篮内容之类的业务流程通过 Commerce Server 管道实现。管道调用自定义 COM+ 排队组件来处理电子邮件消息传送功能。每一网页的输出都用 XML 表示,然后由 XSLISAPI 2.1 过滤器截取,而 XSLISAPI 2.1 过滤器将相应的 XSL 样式表应用到内容,将内容作为 HTML 呈现。 本章的下一节将说明 PASP 文件和 XSLISAPI 过滤器是如何发挥作用的,并提供了一个简单示例作为参考。然后,本章会介绍每个主要组件类别在 ConsolidatedRetail.com 应用程序中是如何实现的。我们的讨论采用了逻辑推理的方式,首先介绍 Web 服务,然后介绍 Commerce Server 对象,继而讨论管道组件。 PASP 文件和 XSLISAPI 过滤器Active Server Page (ASP) 通常用于生成 Web 解决方案的表示逻辑。在 ConsolidatedRetail.com 站点中,使用它们的方法略有不同。在该站点,大多数 ASP 文件是作为预处理的 ASP(即 PASP 文件)实现的。PASP 文件将 XML 写入响应对象,它由 XSLISAPI 过滤器截取和处理。PASP 文件中的脚本用于调用 Commerce Server 2000 对象中的业务逻辑;而由 XSLISAPI 过滤器来处理表示形式。 XSLISAPI 过滤器对从 PASP 文件生成的 XML 输出进行语法分析,并检查 处理说明。如果该处理说明包含引用 XML 配置文件的 server-config 属性,则 XSLISAPI 过滤器读取该配置文件,以确定应将哪个 XSL 样式表应用于从 PASP 文件生成的 XML 输出。 XML 配置文件包含有关应将哪个样式表应用于特定客户程序类型的信息,如以下代码示例所示:
IIS 只要检查随页请求发送的超文本传输协议 (HTTP) 请求标头,就可以识别客户程序。IIS 使用 WINNT/System32/Inetsrv 文件夹中 Browscap.ini 文件的条目,可以识别许多普通浏览器。XSLISAPI 应用程序在名为 Browscap-add.ini 的文件中为 WAP 电话之类的设备提供附加条目,用户应将该文件复制并追加到 Browscap.ini 文件。 简单示例以下简单示例说明如何使用 XSLISAPI 过滤器来呈现由 PASP 文件生成的 XML 输出。 注意 该示例旨在帮助您理解 XSLISAPI 过滤器的功能。它并不说明 ConsolidatedRetail.com 站点中的任何实际页。 假定用户使用 Internet Explorer 5 请求名为 Myproducts.pasp 的页。系统将对该文件中的脚本进行解释,然后通过以下响应对象返回下列 XML:
现在,XSLISAPI 过滤器将对该 XML 进行语法分析,读取 xml-stylesheet 处理说明,该说明包含以下三个属性:
然后,XSLISAPI 过滤器读取指定的 server-config 文件 (Productconfig.xml),该文件包含以下条目:
由于 IIS 已根据请求标头识别客户端浏览器为 Internet Explorer 5.0,现在,XSLISAPI 应用程序会将 Products-ie5.xsl 样式表应用于从 Myproducts.pasp 检索到的 XML。 假定 Products-ie5.xsl 样式表包含以下 XSL 代码:
该样式表将应用于从 Myproducts.pasp 得到的 XML 数据,从而生成以下 HTML,该 HTML 将发送到浏览器:
显然,在 ConsolidatedRetail.com 之类的实际电子商务解决方案中,由 PASP 文件生成的 XML 以及用于呈现该 XML 的 XSL 样式表要远比该简单示例复杂得多。不过,原理是相同的。 网站文件此处介绍一些 ASP 和 PASP 页以及相应的 XSL 文件,它们在 ConsolidatedRetail.com 零售站点的用户界面中经常用到。如前文所述,该应用程序所用的许多 ASP 脚本都是作为 PASP 脚本来实现的,该 PASP 脚本将 XML 输出提交给 XSLISAPI 过滤器。一些常规的 ASP 脚本还用作非显示脚本,接受来自其它页的贴子。 每个 PASP 页都有一个相关的<页名>-config.xml 文件,XSLISAPI 过滤器使用该文件来确定要用于特定客户程序类型的相应样式表。在本实现方案中,只提供了<页名>-ie5.xsl 文件,以使用与 Microsoft Internet Explorer 5.5 兼容的 HTML 形式来呈现页。为使输出能用于其它浏览器或设备,可以创建其它 XSL 文件。 初始化页和包含文件ConsolidatedRetail.com 站点使用以下初始化脚本和包含文件:
目录浏览页ConsolidatedRetail.com 零售站点使用以下与目录相关的页:
用户身份验证和配置文件管理页ConsolidatedRetail.com 零售站点使用以下用户身份验证和管理脚本:
订单管理页ConsolidatedRetail.com 零售站点使用以下订单管理页:
Commerce Server 对象本解决方案的另一重要特性在于将 Commerce Server 2000 可编程对象用于业务处理。任何能识别 COM 的客户程序(如 ASP 脚本)都可使用这些对象,以便检索站点数据库中的数据或执行验证用户身份之类的任务。在第 7 章中介绍站点提供的功能时,将详细探讨这些对象的用途。在这里,只简单介绍一下 ConsolidatedRetail.com 应用程序中使用的几个关键 Commerce Server 对象。 实用程序和配置对象电子商务站点是一种相当复杂的应用程序,要求能提供各种信息和功能。为了简化电子商务解决方案的开发,Commerce Server 2000 提供了很多对象,它们可用于管理站点配置信息以及提供整个站点都可使用的一般功能。 事实上,Commerce Server 解决方案中所用的许多对象都是 Dictionary 对象或 SimpleList 对象。这些都是通用对象,可用来维护名称/值对的集合。例如,在 ConsolidatedRetail.com 应用程序中,Dictionary 对象用于存储站点所用管道的集合。有关 Dictionary 和 SimpleList 对象的详细信息,请参考 Commerce Server 2000 文档。 ConsolidatedRetail.com 应用程序在整个站点中使用以下实用程序和配置对象:
目录对象能够从与站点相关的目录检索产品信息,这是电子商务站点中的网页必须完成的常见任务之一。Microsoft® Commerce Server 2000 支持在单个站点中使用多个目录。您可以用嵌套的类别将目录组织成一个分层结构,可以定义目录的任何级别(包括根)上的产品。另外,您还可以在分层结构中的任何位置,将任何类别或产品与其它类别或产品关联起来。例如,可将“软件”类别中名为 Windows® 2000 Server 的产品与“书”类别中名为 The Windows 2000 Server Administrators Guide 的产品关联起来。这样就能轻松地创建到相关产品或类别的链接,创造交叉销售的机会。图 6-2 显示了 Commerce Server 2000 支持的目录结构。 图 6-2:Commerce Server 2000 目录结构 使用 Commerce Server Business Desk,您既可以从头开始创建目录,也可以从 XML 或 CSV 文件导入目录。有关如何使用 Business Desk 管理目录的详细信息,请参考 Commerce Server 2000 文档。 Commerce Server 中的另一项目录支持功能是您可以创建“目录集”。目录集是指一个或多个目录的集合,基于用户配置文件中的属性而将这些目录分配给特定用户类。例如,您可以创建一个目录集,其中包含一些价格可打折的目录,以便为参与忠实客户计划的用户提供优惠。对于未分配目录集的用户,Commerce Server 站点包含为匿名用户提供的默认目录集以及为通过了身份验证的用户提供的默认目录集。 通过以下 Commerce Server 自动化对象可以提供对目录数据的程序访问:
上述对象提供了浏览站点的整个目录分层结构的方法。这些对象提供的许多方法和属性都返回 ADO 记录集,其中包含目录、类别或产品数据。 对于任何目录数据,必须先使到站点数据源的连接初始化,才能访问它们。通常,要完成此操作,必须调用 CatalogManager 对象的 Initialize 方法,将到站点数据库的 ADO 连接字符串或站点名作为参数传送。 有关 CatalogManager、CatalogSets、ProductCatalog、Category 和 Product 对象的详细信息,请参考 Commerce Server 2000 文档。 用户管理对象Commerce Server 提供了若干对象,用于在用户与站点交互时管理用户信息和状态。这些对象包括:
有关 AuthManager、ProfileService 和 ProfileObject 对象的详细信息,请参考 Commerce Server 2000 文档。 购物篮对象当用户找到需要购买的产品时,允许用户将产品放入购物车或购物篮是网站的平常之举。事实上,购物篮概念只是软件对象的比喻说法,它代表用户在访问过程中选择的项目集合。 Commerce Server 2000 提供了以下对象用于购物篮的管理。
有关 OrderGroup 和 OrderForm 对象的详细信息,请参考 Commerce Server 2000 文档。 管道Commerce Server 2000 解决方案一般使用管道来处理业务。管道由一系列 COM 组件组成,这些组件将对 OrderForm 之类的业务对象进行操作。管道中的组件以及调用这些组件的顺序,在管道配置文件 (*.pcf) 中指定。您可以将管道视为一种生产线,其中每个组件执行特定的任务,然后再将业务对象传送给下一个组件。 ConsolidatedRetail.com 使用名为 PAGBasket.pcf、Total.pcf 和 Final.pcf 的三个管道。有关对它们的引用存储在应用程序级的 MSCSPipelines 字典变量中,分别为 PAGBasket、PAGTotal 和 PAGFinal。这些管道执行的特定进程将在以后讨论站点的功能时介绍。 管道组件管道中的组件是实现 IPipelineComponent 接口的 COM 组件。该接口提供 Execute 方法,可以将字典对象传送给该方法。将 OrderForm 之类的业务对象依次传送给管道中每个组件的 Execute 方法,就可以实现业务流程。 Commerce Server 提供了大量可用于电子商务站点的管道组件。这些对象用于将折扣应用到订单、征收税金、安排发货等等。此外,您还可以创建自定义的管道组件来执行特定任务。ConsolidatedRetail.com 站点包含以下两个自定义管道组件:
自定义业务组件您可以创建一些自定义业务组件,给解决方案添加其它自定义功能。ConsolidatedRetail.com 站点就包含一个自定义业务组件:QueuedEMailer.CMailer。QueuedEMailer.CMailer 是一个自定义的 COM 组件,用于给用户发送电子邮件。进行订单确认或忘记口令时,需要使用该组件。该组件作为 COM+ 排队组件实现,通过消息队列可异步调用其方法。这样,用户会话不必等到电子邮件处理完毕即可继续,从而缩短了响应时间。 总结本章简要介绍了参考体系结构应用程序中的主要代码类别,同时提供了一些实际代码片段作为参考。此时,您应该对代码的构成方法有了一个基本概念。 下一章将详细介绍 ConsolidatedRetail.com 应用程序的每一层,同时提供一些伪代码和实际代码示例来说明处理流程。 |
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=5787