共有四个可用于 Crystal Reports 的对象模型:Crystal Reports 附带了两个,另外两个可通过升级获得。
本节说明哪些对象模型可以序列化,以便用于进程外 Session State 服务器。
注意 |
|---|
有关进程外 Session State 的简介,请参见“进程外 Session State”。 |
序列化和 CrystalReportViewer 对象模型
CrystalReportViewer 对象模型是一种受限对象模型,它包含在 CrystalReportViewer 控件的 API 内。由于此对象模型的作用域有限,因此,通常不建议使用它,而建议使用功能更强大的 ReportDocument 对象模型。
注意 |
|---|
请参见“应该使用哪种对象模型?”。 |
但是,CrystalReportViewer 对象模型可在 Web 场或 Web 园中使用。这是因为 CrystalReportViewer 包含在 Web 控件内,而 Web 控件持久性是在客户端通过视图状态管理的。视图状态持久性的实现方式是:将 ASP.NET Web 服务器控件的状态放在一个加密的字符串中,然后在页面重新加载的过程中,将该加密字符串作为隐藏的窗体字段包含在 ASPX 页内。状态信息可以传递给任何 ASP .NET 辅助进程。
注意 |
|---|
这种形式的客户端持久性仅在页面重新加载过程中有效。视图状态无法保持跨页面的信息。有关视图状态的更多信息,请参见 “ViewState 和 CrystalReportViewer 对象模型的持久性”。 |
序列化和 ReportDocument 对象模型
ReportDocument 对象模型是一种比 CrystalReportViewer 功能更为强大的对象模型,因此通常建议在 Crystal Reports 中使用该对象模型。
注意 |
|---|
有关 ReportDocument 对象模型的信息,请参见 “ReportDocument 对象模型”。 |
但是,在 Crystal Reports 版本 9 及以前版本中,ReportDocument 类无法实现序列化,因此它本身无法用于 Web 场或 Web 园方案中的进程外 Session State 服务器。
在 Crystal Reports 10 和更高版本中,已通过将 ReportDocument 对象模型桥接到可序列化的对象模型 ReportClientDocument 消除了此限制。
可通过多种不同方式访问 ReportClientDocument 对象模型。有关详细信息,请参阅“报表应用程序服务器(RAS)”。
若要在 Web 场或 Web 园中使用 ReportDocument 对象模型,需要 ASP.NET 进程外 Session State 服务器来存储序列化的 ReportDocument 实例的状态,并需要非托管 RAS 服务器来存储 Crystal 报表文件 .rpt。
注意 |
|---|
只有在已安装 RAS 服务器并将 ReportDocument.ReportAppServer 和 ReportDocument.EnterpriseSession 属性设置为访问该服务器后,才能序列化 ReportDocument 对象模型。 |
序列化和 ReportClientDocument 对象模型
ReportClientDocument 对象模型可以实现序列化。可通过多种不同方式访问 ReportClientDocument 对象模型。有关详细信息,请参阅“报表应用程序服务器(RAS)”。
注意 |
|---|
有关 ReportClientDocument 对象模型的信息,请参见 “ReportClientDocument 对象模型(RAS)”。 |
InfoObject 对象模型
InfoObject 对象模型是 Crystal 升级解决方案 Crystal Reports Server 或 BusinessObjects Enterprise 的一部分。Crystal Reports Server 和 BusinessObjects Enterprise 都是多服务器的企业解决方案,通常是现有 Web 场或 Web 园的替代方式。有关更多信息,请参见“升级选项”。
继续浏览“针对 Web 场或 Web 园配置 Crystal Reports”。
注意