
微软全球授权和定价 (WWLP) 小组最近开发了一套新的企业授权应用程序,这套程序较上一版程序更易于使用且性能更高。 该小组使用 Microsoft® SQL Server™ 2005 中的 64 位处理支持将其大型定价数据数据库压缩为一个简洁的表单。 开发人员将定价数据合并到一个更易于授权专家使用的业务组件中,进一步提高了定价策略的遵从程度。 他们通过充分利用 SQL Server 公共语言运行时 (CLR) 支持节省了开发资源,SQL Server 公共语言运行时支持重新使用为客户端应用程序赋能的业务组件。
| 简介 | |
| 背景 | |
| 解决方案 | |
| 收益 | |
| 结论 |
WWLP 小组需要一个可简化定价信息分发及企业授权协议创建流程的业务解决方案。 WWLP 小组所实施的解决方案可能对其他企业组织开发供定价专家和客户经理使用的相似解决方案有一定的帮助作用。 此案例研究的目标受众是那些参与创建企业级定价和授权协议解决方案的首席信息官、技术决策者以及 IT 专家们。
在微软公司,WWLP 小组为 1,000 多名负责企业客户授权协议准备工作的授权主管和专家们提供支持解决方案。 该小组使用 EZPET 1.0(用 Microsoft Excel® 构建的内部应用程序)向授权专家分发定价信息、提供报价并将这些报价信息分发给企业协议客户。
每个月,授权专家都会收到一张包含当前价格信息的 Excel 工作簿。 此价格表的创建过程是一项相当烦琐的手动过程。 授权信息的数据库包含大约 2,200 万个价格点(与产品和许可相关的价格),其中当前可用的大约有 460 万个。 因为源数据库过于庞大,导致价格表产生的过程异常缓慢。 价格表通常都会有所延误,而且由于其中包含大量被格式化为工作簿的信息,使用起来很不方便。 授权专家在创建新协议时,使用的往往是一些不准确或已过时的信息。 这种情况最终导致所制定的协议与当前的定价政策不一致。
授权专家需要最新的定价信息,而且他们还希望能够脱机使用该信息(例如在飞机上使用)。 WWLP 小组必须将数据库中的海量数据减少为更易于管理的少量数据,以便在本地计算机上轻松分发和使用。 要简化定价数据,以达到应用程序用户可以轻松使用数据的目的,可能需要强大的计算资源。 此外,出于报告和职责的原因,新系统还必须在 EZPET 数据库中存储来自新企业授权协议的数据。 这样一个系统可能需要在客户端和服务器上安装新软件。
WWLP 小组的 EZPET 2.0 客户端应用程序有一大特色,那就是 EZPET 2.0 BIZ Component,它可以向 1,000 名用户的桌面计算机有效地提供定价信息和企业协议业务规则。 EZPET 客户端仅在定价和授权专家需要使用时才获取并保留业务协议信息。
EZPET 2.0 解决方案具有以下特点:
| • | 由一个同时充当客户端解决方案和服务器解决方案的单一组件组成,大大降低了开发资源需求。 |
| • | 向定价专家和客户经理分发一个可捕获简洁数据及业务规则集的 EZPET 智能客户端,定价专家和客户经理使用该客户端来创建新的企业协议。 每次保存添加了任何数据的协议时,都会将协议序列化为可扩展标记语言 (XML)。 |
| • | 向运行 SQL Server 2005 的服务器上的 EZPET 2.0 数据库发布包含新协议的 XML,并将序列化的 XML 数据存储在 EZPET 数据库中。 |
| • | 在进行报告时,先用 SQL Server 2005 CLR 解除序列化,然后再处理企业协议数据。 |
| • | 使用 SQL Server 2005 的 64 位处理支持将 460 万个源价格数据价格点压缩为一个包含基本价格和业务规则的简明集合,其基本价格和业务规则数据均从 EZPET 2.0 BIZ Component 的每个实例捕获而得。 |
压缩后的定价数据被合并到智能客户端 EZPET 2.0 BIZ Component 中。 授权和定价专家可通过自动处理的 Microsoft Visual Studio® 2005 ClickOnce 技术,从服务器将该组件轻松下载到其本地计算机中。 定价专家使用客户端应用程序起草新的企业授权协议报价。 客户端在运行 Microsoft Windows® XP Professional SP2 和 Microsoft .NET Framework version 2.0 的本地计算机上运行。 当定价专家完成企业授权协议报价后,EZPET 2.0 BIZ Component 会将协议序列化为 XML,发布到运行 SQL Server 2005 的服务器上,将其作为 XML SQL Server 数据类型存储在 EZPET 2.0 数据库中。
开发团队对 EZPET 2.0 BIZ Component 进行了专门设计,使其既可作为客户端解决方案使用,也可作为服务器端解决方案使用。 该团队利用 SQL Server 2005 中的 CLR 集成开发了一个 C# 组件,该组件可在 EZPET 客户端和数据库服务器上以如下方式运作:
| • | EZPET 2.0 BIZ Component 以智能客户端的形式在本地计算机上运行,它可在定价专家起草新的企业协议时捕获一些可重复使用的数据。 |
| • | 在用户保存协议时,它会将协议序列化为 XML,存储在本地计算机上。 用户可在同一台计算机上重新打开序列化协议作进一步处理,也可以将其发送到承载 EZPET 数据库的服务器,它在数据库中以 XML 数据类型的形式存储。 |
| • | 在创建报告时,将先对 XML 解除序列化,然后将其作为基于 .NET Framework 的应用程序运行。 |
端到端的解决方案由一个 EZPET 2.0 BIZ Component 组件组成。 有效开发此应用程序的关键是将所有底层逻辑封装到一个在客户端计算机上运行的 C# 业务组件中,将协议序列化为 XML,然后传输回 SQL Server 2005 中。SQL Server CLR 允许在服务器上运行客户端代码,而无需额外编写 C# 程序或 Transact-SQL (T-SQL) 代码。
为了使用存储在数据库中的企业协议信息(例如生成报告),EZPET 2.0 应用程序需要从数据库检索数据,并使用 SQL Server 2005 中的 CLR 集成功能来处理该数据。CLR 集成是 SQL Server 2005 中用于支持核心 .NET 服务的功能。
EZPET 应用程序通过以下步骤来存储和检索企业协议数据、使用 SQL Server 2005 CLR 集成处理数据和生成报告:
1. | 存储序列化组件 |
2. | 解除 XML 序列化以进行 .NET 处理 |
3. | 编译和运行 CLR 程序集 |
4. | 生成报告 |

图 1. EZPET 和 CLR 集成
下面用 C# 编写的代码示例说明了 SQL Server 2005 CLR 代码如何在包含授权交易详细信息的序列化 EZPET 2.0 Biz Component 中将 CLR Enterprise Agreement 类映射为 XML 数据类型。 此示例返回交易的中桌面计算机数量。
using System; using System.Collections.Generic; using System.Text; using System.Xml;
using System.Xml.Serialization; using System.Data.SqlTypes;
namespace DBInterface {
public class DataValues {
public int getDesktopCount(SqlXml eaXML) {
XmlSerializer _Serializer = new System.Xml.Serialization.XmlSerializer (typeof
(DealGenie.EnterpriseAgreement)); XmlTextReader _Reader = new XmlTextReader(eaXML.ToString
()); DealGenie.EnterpriseAgreement DeserializedDeal = (DealGenie.EnterpriseAgreement)_
Serializer.Deserialize(_Reader); return (int) DeserializedDeal.NumberOfDesktops;
}
}
}它还有一项额外的优点,即以 SQL Server CLR 形式运行的 .NET 代码在性能上要优于 T-SQL,因为 .NET 应用程序代码经过了编译和缓存。 而 T-SQL 代码是在解释器中运行,因此它的执行性能不如 .NET 应用程序。
在创建 EZPET 2.0 BIZ Component 实例之前,需先将包含 460 万个活动价格点的 SQL Server 数据库压缩为数百条基本价格和业务规则。 为了压缩数据,WWLP 小组部署了一台运行 SQL Server 2005 Analysis Services 的 64 位服务器(支持 64 位处理)。
在 32 位系统中压缩如此之多的价格点有一个问题,即缺乏可寻址的 RAM。 由于 32 位系统不具备能够处理所有数据的可寻址内存,因此加重了硬盘 I/O 的负担,降低了研究查询的速度。 转移至 64 位系统后,WWLP 小组可以在内存中处理所有数据,还可快速分析数据,以确定冗余数据。 由于 RAM 方面的提高,在 32 位服务器上需要花费数小时之久的查询在 64 位服务器用不了几分钟便可完成。
EZPET 2.0 的设计目的是有效处理定价数据的庞大数据库,并将之压缩为可在客户端计算机上脱机运行的简洁的可重用组件。 EZPET 2.0 应用程序的体系结构包含下列组件:
| • | 数据库服务器。 运行 Microsoft Windows Server™ 2003, Enterprise x64 Edition 和 SQL Server 2005 的服务器。此平台从源数据服务器上存储的 2,200 万个价格点数据库中提取 460 万个活动价格点。 SQL Server 2005 对 460 万个价格点进行筛选并将其压缩为数百条基本记录和相关业务规则,解决了存储大量数据点所需的大容量内存空间问题。 压缩后的数据非常简洁,可完全合并到 EZPET 2.0 BIZ Component 实例中。 |
| • | 客户端。 运行 Windows XP Professional 和 .NET Framework 2.0 的本地计算机。 将 EZPET 2.0 BIZ Component 下载到本地计算机,该组件可在本地计算机上脱机运行,创建新的企业协议。 EZPET 2.0 客户端将企业协议保存到本地计算机,然后将之序列化为 XML。 在整个过程完成后,再将企业协议以 XML 的形式传输回服务器。 |
| • | 数据分析服务器。 运行 Windows Server 2003 和 SQL Server 2005 Reporting Services 的服务器。 在数据分析服务器上,SQL Server 2005 SQL CLR 功能使用 .NET 代码对 EZPET 2.0 BIZ Component 进行解除序列化,以在 EZPET 客户端上运行相同的 .NET 代码。 SQL Server 2005 Reporting Services 则用于提供报告平台。 |
图 2 阐释了解决方案的体系结构。

图 2. EZPET 2.0 的解决方案体系结构
借助于 SQL Server 2005 的新功能,Microsoft WWLP 小组快速开发并部署了一个可解决关键业务问题的应用程序。
通过开发可利用 SQL Server 2005 CLR 功能的应用程序,WWLP 开发小组能够提供单一的 EZPET 2.0 BIZ Component。 该组件提升了 EZPET 客户端的能力,同时它还可在运行 SQL Server 2005 的 EZPET 数据库服务器上运行。由于 SQL CLR 支持从 XML 解除 EZPET 2.0 BIZ Component 序列化,因此 SQL Server 2005 不需要任何额外的编程工作。
由于 EZPET 2.0 BIZ Component 在客户端序列化,在服务器上解除序列化,然后再由 SQL Server CLR 进行处理,因此降低了 50% 的开发时间。 如果要求开发人员开发不同的客户端和服务器解决方案,该项目则要花费 500 个人时。 与之相对,开发小组开发同时适用于客户端和服务器的 EZPET 2.0 只用了 250 个人时,为其他项目预留了一半的资源。
通过在 64 位服务器上运行应用程序,SQL Server 2005 Analysis Services 充分利用了 64 位系统相对于 32 位系统在可寻址内存方面的性能提升。 压缩 460 万个价格点的任务在 64 位系统只用几分钟便可完成,而在 32 位系统上则需要几个小时。 这种速度上的提升至少提高了 95% 的吞吐量。
EZPET 2.0 BIZ Component 存储在一台可供 1,000 名定价和授权专家轻松访问的服务器上。 小巧的 BIZ Component 替代了在分发和使用上都很不便的大型 Excel 价格表。
EZPET 2.0 BIZ Component 实现了下列收益:
| • | 网络负载得到了显著降低,因为不需要再从网络间来回发送要更新的价格表。 | ||||||||||
| • | EZPET 2.0 用户平均每人每天至少可节省 15 分钟,因为他们不需要再等待:
|
以每天 8 小时,每周 5 天,每月 4 周,每年 12 个月的方式计算,节省的 15 分钟累计为每年每用户节省 62.5 小时。 假设有 1,000 名用户利用这些时间节省,整个小组每年可节省 62,500 小时。 但是,每天 15 分钟只是最保守的估计。 实际收益还要更高一些。
通过在 64 位服务器上运行,SQL Server 2005 Analysis Services 将当前 460 万个价格点有效压缩为一组简单明了的基本价格和业务规则,随后将之封装到 EZPET 2.0 BIZ Component 中。 与先前曾使用的 Excel 价格表相比,EZPET 2.0 BIZ Component 更易于定价专家访问和使用。
自从 EZPET 2.0 投入使用后,由于可以更多地使用当前的定价信息,定价专家对当前策略和业务规则的遵从程度几乎翻了一番—从原来的不足 50% 到现在的近 100%。
解除序列化的 EZPET 2.0 BIZ Component 以 .NET 代码的形式运行,而 .NET 代码是经过编译和缓存的。 与解释语言 T-SQL 相比,这种技术有极高的性能改进。
EZPET 2.0 应用程序用 SQL Server 2005 的各项功能解决了微软 WWLP 小组的关键业务问题。 对 64 位服务器的支持消除了内存瓶颈,并使得应用程序可以将庞大的数据库有效压缩为一个易于使用的简洁组件。 对 XML 序列化和解除序列化的支持使开发人员可以节省更多的资源,同时还能生成一个可大大提高价格政策遵从程度的可重用业务组件。
许多组织都可以快速应用 SQL Server 2005 的类似功能来创建类似业务问题的解决方案。
有关 SQL Server 2005 的更多信息,请访问微软网站的 SQL Server 2005 主页:
http://www.microsoft.com/sql/default.mspx
有关微软产品或服务的更多信息,请拨打 (800) 426-9400 联系 Microsoft Sales Information Center。在加拿大,请拨打 (800) 563-9048 联系 Microsoft Canada information Centre。在美国 50 个州和加拿大之外的地区,请联系当地的微软分支机构。若要通过互联网访问更多信息,请转到:
http://www.microsoft.com/itshowcase
http://www.microsoft.com/technet/itshowcase
如果您对此文档有任何问题、评论、建议,或是想获得有关 Microsoft IT Showcase 的其他信息,请发送电子邮件到:
showcase@microsoft.com