报表控件DevExpress Reporting中文教程 - 如何增强Web应用的可伸缩性? 可扩展性问题一直是主要Web应用程序的前沿和核心问题如果可伸缩性对您的项目很重要可能需要实现缓存策略。由于它与DevExpress Web Document Viewer相关缓存将要求应用程序在缓存中存储临时状态。对于分布式系统您将需要一个缓存存储系统来保持所有节点同步。在本文中我们将回顾DevExpress Web Document Viewer的缓存管理功能并演示如何使用它们来优化应用程序性能。DevExpress Reporting是.NET Framework下功能完善的报表平台它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集包括数据透视表、图表因此您可以构建无与伦比、信息清晰的报表。DevExpress新旧版本帮助文档获取可点击这篇文章查看——《界面控件DevExpress v26.1帮助文档大全CHM版本》缓存级别DevExpress Web Document Viewer使用两种级别的缓存短期(内存缓存)和长期(存储)。短期缓存(内存缓存)短期缓存驻留在内存中并存储对象模型以便更快地执行频繁使用的操作。它将报表布局和文档缓存为对象这些对象稍后被序列化并移动到长期存储(在需要时)。长期高速缓存(存储)长期缓存存储序列化的数据以便按需检索对象。​​​​​​​DevExpress Reporting为长期缓存提供了各种存储选项包括文件存储、数据库存储(基于XPO)、ASP. NET Core分布式缓存(SQL Server, Redis)和Azure云存储。缓存管理简要介绍了缓存级别之后让我们来看看实现细节。DevExpress Reporting允许您根据所选择的存储类型(例如数据库缓存的UseDbStorage方法或分布式缓存的UseDistributedCache方法)配置其缓存选择存储类型允许DevExpress Web Document Viewer利用指定的缓存来高效地缓存和检索报告布局、生成的文档和导出的文件。ASP.NET Core应用程序中的分布式缓存UseDistributedCache方法支持在ASP. NET Core应用程序中使用分布式缓存不同的分布式缓存实现是可用的包括SQL Server, Redis和NCache。要实现ASP. NET Core应用程序用于DevExpress Web Document Viewer中的分布式缓存您必须Step 1安装所需的软件包确保您在ASP. NET Core项目中安装了必要的包将需要以下软件包DevExpress.AspNetCore.ReportingMicrosoft.Extensions.Caching.SqlServer (用于SQL Server缓存) 或 Microsoft.Extensions.Caching.StackExchangeRedis (用于Redis缓存)Step 2配置分布式缓存在您的ASP. NET Core应用程序中按照以下指南配置和启用分布式缓存Step 3在DevExpress Web Document Viewer中启用分布式缓存在同一个Startup.cs文件中找到ConfigureServices方法并找到services.ConfigureReportingServices块。在该块中添加以下代码以启用分布式缓存services.ConfigureReportingServices(builder { builder.ConfigureWebDocumentViewer(viewerBuilder { viewerBuilder.UseDistributedCache(); }); });数据库缓存(基于XPO的存储)分布式缓存只适用于ASP.NET Core与之不同的是这种类型的缓存适用于所有支持的Web平台。UseDbStorage方法允许使用数据库缓存存储它需要一个到现有数据库的连接字符串。该缓存基于XPO Data Providers支持多个关系数据库管理系统。要实现数据库缓存您必须Step 1在Web Document Viewer中使用数据库缓存在Startup.cs文件中找到ConfigureServices方法并找到services.ConfigureReportingServices块。在该块中添加以下代码来启用数据库缓存public void ConfigureServices(IServiceCollection services) { //… services.ConfigureReportingServices(configurator { configurator.ConfigureWebDocumentViewer(viewerConfigurator { viewerConfigurator.UseCachedReportSourceBuilder(); viewerConfigurator.UseDbStorage(XpoStorageConnection); //… }); //… }用所选数据库的连接字符串替换XpoStorageConnection确保设置了数据库并安装了适当的XPO数据库提供程序。Step 2初始化数据库使用IStorageDbInitializer接口初始化数据库表和模式public class Program { public static void Main(string[] args) { IWebHost host CreateWebHostBuilder(args).Build(); if (args.Any(s s.ToLower() --initDatabase)) { using (var scope host.Services.CreateScope()) { var services scope.ServiceProvider; services.GetRequiredServiceIStorageDbInitializer().InitDbSchema(); } } host.Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) { return WebHost.CreateDefaultBuilder(args) .UseStartupStartup(); } }文件缓存从缓存的报表源生成文档所需的时间将根据文件存储系统的性能而有所不同。要将报告文档缓存为文件请根据需要使用UseFileDocumentStorage, UseFileExportedDocumentStorage, UseFileReportStorage, 和 UseCachedReportSourceBuilder方法。Azure缓存如果您希望使用Azure提供的选项缓存报表文档请参考以下帮助主题Web Farms and Web Garden Support。缓存过期策略如果管理得当缓存是有效的——包括缓存的报表布局和文档保留的时间长度。DevExpress Reporting提供缓存过期选项使用 CacheCleanerSettings 和StorageCleanerSettings在您的应用程序中实现性能和内存消耗之间的平衡。