对象|服务器|解决
概述
对于使用 .NET 平台的 Web 应用程序开发,Crystal Decisions 为开发者提供了三种愈加高级的报表对象模型:
1. 水晶报表 Visual Studio .NET 版 (.NET) 对象模型:捆绑在微软 Visual Studio .NET 和水晶报表 9 开发者版及高级版中。
2. 新增的报表应用服务器 (RAS) 对象模型:捆绑在水晶报表 9 开发者版及高级版中。
3. 水晶企业 (Crystal Enterprise) (CE) 对象模型:在水晶企业 9 中单独提供,而且也可以通过新的 .NET SDK 使用。
本文档意图比较 .NET, RAS, 及 CE 对象模型,并且对于每种对象模型的使用时机提供指导。
目录
什么是 .NET 对象模型?
什么是报表应用服务器对象模型?
什么是水晶企业对象模型?
应用程序开发
处理性能
用户请求
组件 Vs. 独立服务器
报表组件 Vs. 报表服务器通讯
报表创建 API
扩展性
将 .NET 应用程序迁移到 RAS
什么是 .NET 对象模型?
.NET 对象模型包含在水晶报表 Visual Studio .NET 版和水晶报表 9 开发者版及高级版。
最初设计和开发 .NET 对象模型,是作为直接捆绑进微软 Visual Studio .NET 产品的集成组件。该捆绑技术是基于水晶报表 9 特性的子集,包括一个集成的报表设计器以及一个报表和查看器对象模型……
水晶报表 9,是具有丰富特色的,对水晶报表 Visual Studio .NET 版的升级,包括上述 .NET 组件以及众多附加的新特性。除此之外,.NET 对象模型还被更新以提供众多增强特性。虽然本文的焦点是对比 .NET 对象模型和 RAS 对象模型,我们仍然在附录 A 中包含了水晶报表 Visual Studio .NET 版和水晶报表 9 的特性对比。
什么是报表应用服务器对象模型?
报表应用服务器 (RAS) 是一个新增并且强大的对象模型。RAS 属于客户/服务器系统,能够在多层环境中进行报表创建,处理以及操作。它由两个基本组件构成:RAS 服务器和提供服务器接口的软件开发工具包 (SDK) 。由于 RAS 被设计成两个分离的组件,报表处理可以从 Web 服务器上卸载。
图 1:报表应用服务器的架构概览
RAS 和查看器 SDK 包含许多库,以使你构造 Web 报表解决方案。这些库可以在你的服务器端代码 (ASP, ASPX, JSP 或者 Java servlets) 中使用,以提供报表应用服务器的接口。从这种意义上说,SDK 构成了这个客户/服务器系统的客户端。
RAS 提供了设计,查看,处理及定制报表的服务。客户创建的程序可以使用该 SDK 与服务器通讯。RAS 包含在水晶报表 9 开发者版和高级版,以及水晶企业 9 中。
什么是水晶企业对象模型?
水晶企业 9 对象模型是最高级的企业报表,分析和 Web 交付对象模型,可以被采用 .NET 平台的组织使用……水晶企业提供了一个健壮的服务器端报表平台,并且包含 RAS 对象模型。水晶企业允许组织购买“即拆即用”(out-of-the-box) 平台,相当于提供给组织将开发资源集中到高度定制化前端的能力,前端与水晶企业后端通讯。这通过调控水晶企业 .NET SDK 来实现。设想做如下比较:通过添加新特性或者增强现有特性来满足需求 Vs. 必须构造全部特性。例如,水晶企业提供报表调度“即拆即用”(out-of-the-box),因此核心报表可以在任何时间运行,以任何格式 (比如 Excel, PDF, XML, Word, 等等) 提供,并且交付到任何位置 (比如:Email 账号, FTP 站点, 打印机, 等等)。
应用程序开发
.NET 对象模型和 RAS 对象模型都能够以格式化报表页的形式显示输出。它们能够打开报表,保存报表,改变分组,并传递参数,虽然是使用不同的语法。然而,RAS 增加了运行时创建和修改报表的能力,允许用户自助 - 定制他们企业数据的视图。它还提供从报表中提取行数据的能力。这将允许你重用包含在报表里的信息。例如,你可以创建一个世界范围的销售报表,有计划的从中提取数据,并将数据转换成 XML,与合作伙伴共享。你还能够利用这种原理让最终用户在报表中搜索特定数据,并将结果导出成其它格式,与他人共享。
.NET 对象模型和 RAS 对象模型定义了报表格式化和数据连通性,而 CE 对象模型则关注集中式的,企业范围的报表管理。CE 对象模型定义了如何调度报表,如何存储报表“快照”,授权和验证系统的管理,等等。
或许,阐明 .NET,RAS,及 CE 对象模型之间差别的最佳方式是给出一个简化的图表,对比三种对象模型的附加特性以及增强的企业级可靠性。
通常的方针是:
●.NET 对象模型推荐小型工作组项目使用,即只有相对直接的报表需求 - 例如:较小的报表,较少的用户请求报表,等等。该技术是应用程序的一个组件,并且可以通过附加硬件来缩放 - 通过附加处理器向上扩充,以及通过附加服务器向外扩充。
●RAS 对象模型推荐中型的部门级应用使用,即需要卸下报表处理,并且/或者要让最终用户个性化数据的视图,这通过运行时创建和修改报表实现。
●CE 对象模型推荐给关键任务型的、中型至企业规模的应用。该类型的应用程序处理大量来自不同数据源的数据,并且为用户展现信息以提供决策支持。通常情况下,有大量报表需要精确的调度和负载平衡,以确保企业的信息基础设施没有超负荷。这些应用程序还需要以多种数字格式将信息交付到多种最终用户设备。安全,容错,系统管理及审核都属于关键性需求。
处理性能
用户请求
在水晶报表 9 中, .NET 和 RAS 都作了技术上的限制,只能接受三个并发请求 - 比如,第一页查看,导出,深化,打印,等等。可是在请求处理上,它们有明显的不同。这些差别能够影响总体系统性能和规模。就水晶报表 Visual Studio .NET 版而言,超过三个请求阀值的请求将会重试,直到三个进行中请求的任意一个完成或者浏览器超时。RAS,恰恰相反,将排队第4,第5,第6,等等请求。没有预设的超时限制,随后的请求也不会失败。RAS 也包含,即拆即用的 (out of the box),报表缓存功能,以最小化多余的数据库轮询 (round-trips)。这将提高服务器性能,相对于水晶报表 Visual Studio .NET 版组件而言。
注意:为了支持无限的用户请求,可能需要额外购买处理器许可证。
组件 Vs. 独立服务器
.NET 是一种报表组件,它作为 Web 程序的组成部分被安装,处于微软互联网信息服务 (IIS) 之上。既然创建 .NET 报表组件的目的是用于小规模的工作组应用,有强烈报表处理需求的客户可能会遭遇无法接受的系统吞吐量。而缺少队列和缓存功能,又使 .NET 报表组件不适合企业规模的信息分发。另外一个变数则是 Web 程序的 CPU 负荷。因为 .NET 报表组件是 Web 程序的组成部分,它和你的程序消耗同样的资源。
对比之下,RAS 针对 Web 设计。报表处理被卸载到独立的应用程序层,从而带来了更好的总体性能。通过在独立服务器上运行 RAS,性能将会提高,因为报表处理不再受制于应用服务器的进程。
注意:虽然不是必需,仍然推荐你在单独的服务器上运行 RAS,以便在应用层之间提供更好的可缩放性和功能划分。
在服务器上,RAS 也可以被分配到特定数目的处理器上运行。这使得开发者能够创建满足性能要求并且最节省成本的解决方案。因为 .NET 对象模型必须安装到 Web 服务器上,它不能针对特定处理器。如果需要处理器许可证,安装应用程序的每个处理器都需要购买。
对于 RAS,你只能安装所购买的开发者版或者高级版的一个副本。如果你购买了两个高级版的水晶报表,你可以安装两个分离的 RAS,但是不能通过把它们链接到网站群 (web farm) 里来提高应用程序的性能 - 除非从 Crystal Decisions 购买了许可证。
对于所购买的开发者版或者高级版,.NET 报表组件可以被安装到多个服务器,只要不通过把它们连结到网站群 (web farm) 或者网站园 (web garden) 来缩放你的应用程序,以突破 3 个请求的限制 - 除非从 Crystal Decisions 购买了网站群 (web farm) 或者网站园 (web garden) 许可证。
报表组件 Vs. 报表服务器通讯
.NET 报表组件是“繁琐”的。每一个事务 - 比如,设置参数或者字体 - 都将招致访问组件的额外往返旅行。如果报表很复杂,这将导致效率低下(例如:访问大量的数据,连结到多个数据库,执行高级命令,等等)。相反,RAS 缓冲请求,并且批处理事务。多个操作将组合成一次服务器操作,因而降低了效率损失。
扩展性
尽管可以作为独立产品使用,RAS 对象模型仍然是水晶企业对象模型的组成部分。这使得 RAS 应用程序的开发者可以在未来无缝的迁移他们的程序,以便利用水晶企业的其它服务,包括:
●调度
●用户,报表和数据安全
●报表和实例管理
●自动集群,负载平衡,以及容错
●基于 Web 的系统管理和配置
●分析和特别报表 (ad hoc reporting)
●自动分发到多种格式和目标
仅需少量的编程就可以改变 RAS 程序来利用这些附加的服务。
相反,.NET 报表对象模型没有与水晶企业家族共享同一个对象模型。这意味着为了支持 Crystal 服务,使用 .NET 报表组件设计的应用程序需要完全重写。这被证明是昂贵而且资源密集的,所以组织应该在当前的开发计划中考虑未来的需求。
将 .NET 应用程序迁移到 RAS
尽管将应用程序从 .NET 对象模型转换到 RAS 要卷入初期的工作,但也会获得本文中所概括的显著优点。在 www.crystaldecisions.com/devzone 中有许多实例应用程序,可以指导你完成迁移过程。