122

过去几周我一直在研究 SSRS 2005 / 2008 并创建了一些服务器端报告。对于某些应用程序,一位同事建议我针对该特定情况研究 RDLC。我现在正试图弄清楚 RDL 和 RDLC 之间的主要区别。

搜索这些信息最多只能产生零散的信息。我了解到:

  • RDLC 报告不存储有关如何获取数据的信息。
  • RDLC 报告可以直接由 ReportViewer 控件执行。

但我仍然不完全了解 RDLC 文件与其他相关系统(报告服务器、源数据库、客户端)之间的关系。

为了更好地掌握 RDLC 文件,我想知道它们的使用与 RDL 文件有何不同,以及在什么情况下会选择 RDLC 而不是 RDL。也欢迎提供资源链接。

更新:

ASP.NET 论坛上的一个主题讨论了同样的问题。从中,我对这个问题有了更好的理解。

RDLC 的一个特点是它可以在 ReportViewer 控件中完全在客户端运行。

  • 这消除了对 Reporting Services 实例的需求,甚至消除了对任何数据库连接的需求,但是:
  • 它增加了必须手动提供报告中所需数据的要求。

这是优点还是缺点取决于特定的应用程序。

在我的应用程序中,无论如何都可以使用 Reporting Services 的实例,并且可以轻松地从数据库中提取报告所需的数据。我还有什么理由考虑 RDLC,还是我应该坚持使用 RDL?

4

10 回答 10

86

根据我的经验,两件事都需要考虑:

I. RDL 报告通常是 HOSTED 报告。这意味着您需要实现 SSRS Server。它们是来自 SQL Server 的 Visual Studio 的内置扩展,用于报告语言。当您安装 SSRS 时,您应该有一个名为“商业智能开发工作室”的附加组件,它比没有它更容易使用报告。

报告_

定义_

语言_

RDL 报告的好处:

  1. 您可以在为您运行服务的环境中托管报告。
  2. 您可以在项目或继承级别上配置安全性以将安全性作为独立概念处理
  3. 您可以将服务配置为发送电子邮件(前提是您有可以访问的 SMTP 服务器)并按计划保存文件
  4. 您有一个通常称为“ReportServer”的数据库,您可以在发布后查询有关报告的信息。
  5. 您仍然可以通过 ASP.NET、WPF(带有 winform 控件!)或 .NET 中的 Winforms 使用“ProcessingMode.Remote”编写的客户端应用程序中的“ReportViewer”访问这些报告。
  6. 您可以设置用户可以看到和使用的参数以获得更大的灵活性。
  7. 您可以将报表的某些部分配置为“数据源”用于连接字符串,也可以将 sql 查询、xml 或其他数据集配置为“数据集”。这些部分和其他部分可以存储并配置为定期缓存数据。
  8. 您可以编写服务 http:///ReportServer/ReportingService2010 或 /ReportExecution2005 的 .NET 代理类。然后,您可以在 .NET 中构建您的 OWN 方法,用于直接从以代码形式托管 SSRS 报告的服务器的服务发送电子邮件、保存或操作 SSRS 数据。 使用 ReportService2010.asmx 以编程方式从共享点导出 SSRS 报告

缺点:

  1. 与其他东西相比,SSRS 在快速启动方面有点儿古怪。大多数人对安全策略和将报告设计为 VS 的“附加”感到困惑。SQL 2005 = VS BIDS 2005,SQL 2008 = VS BIDS 2008,SQL 2012 = VS BIDS 2010(大声笑)。
  2. 继续 1 安全设置政策恕我直言,过于复杂。在为服务托管的页面上有服务器安全、数据库安全和角色这两个安全设置。大多数人只设置了一个无法进入的管理员,并想知道为什么其他用户不能。关于 SSRS 的最常见投诉或问题通常与我的经验有关。
  3. 您可以使用据说会“增强”您的报告的“表达式”。很多时候,你做的不止一些,你的报告就会在性能上爬行。
  4. 你有一定数量的可以做和导出的事情。SSRS 没有悬停在我所知道的没有 javascript hack 的报告上。
  5. 速度和性能可能会受到影响,因为愚蠢的 SSRS 配置会回收系统,并且第一次报告有时可能需要一段时间才能加载站点。你可以通过改变它来解决这个问题,但我发现制作一个保持活动的服务效果更好。

二、RDLC 报告是不受任何地方托管的客户端包含的报告。名称中额外的 c 表示“客户”。通常,这是 RDL 语言的扩展,仅用于 Visual Studio 客户端应用程序。添加“报告”项时,它存在于 Visual Studio 中。

RDLC 报告的好处:

  1. 您可以更轻松地将 wcf 服务连接到数据集。
  2. 您可以更好地控制数据集,并且可以直接使用填充了实体框架对象或 ADO.NET 的 POCO 类以及表本身。您可以在将数据绑定到报告之前对数据进行优化。
  3. 您可以直接在后面的代码中添加更多自定义外观。

缺点:

  1. 您需要自己处理参数,而您可以实现包装器方法来帮助执行工作,这比预期的要多一些,而且很不幸。
  2. 除非处于远程模式并访问 RLD 报告,否则用户无法查看“ReportViewer”控件中的参数。因此,您需要在控件之外自己制作文本框、下拉菜单、单选按钮以传递给它。有人喜欢这样加控制,我个人不喜欢。
  3. 您想要为自己构建的分发报告提供服务。发送电子邮件、订阅、保存。抱歉,您需要在 .NET 中构建它,或者实现一个已经从上面执行此操作的代理,您可能只是使用托管报告。

老实说,我出于不同的目的都喜欢。如果我想向分析师提供他们一直使用的东西并调整图形、图表、向下钻取和导出到 Excel,我使用 RDL 并让 SSRS 的网站完成处理电子邮件分发的所有工作。如果我想要一个具有报告部分的应用程序,并且我知道该应用程序是它自己的具有规则和治理的模块,我使用 RDLC 并让参数更小,并由用户在获取报告部分之前做出的决定驱动他们在现场的客户,然后他们通常只选择一个时间范围或类型,仅此而已。所以一般来说,我会使用 RDL 来制作复杂的报告,而对于简单的事情,我会使用 RDLC 恕我直言。

我希望这会有所帮助。

于 2013-06-12T16:41:22.340 回答
57

问:RDL 和 RDLC 格式有什么区别?

答:RDL 文件是由 SQL Server 2005 版本的报表设计器创建的。RDLC 文件由报表设计器的 Visual Studio 2008 版本创建。

RDL 和 RDLC 格式具有相同的 XML 模式。但是,在 RDLC 文件中,某些值(例如查询文本)允许为空,这意味着它们不会立即准备好发布到报表服务器。可以通过使用 SQL Server 2005 版本的报表设计器打开 RDLC 文件来输入缺失值。(您必须先将 .rdlc 重命名为 .rdl。)

RDL 文件与 ReportViewer 控件运行时完全兼容。但是,RDL 文件不包含 ReportViewer 控件的设计时依赖于自动生成数据绑定代码的某些信息。通过手动绑定数据,可以在 ReportViewer 控件中使用 RDL 文件。新的!另请参阅 RDL 查看器示例程序。

请注意,ReportViewer 控件不包含任何用于连接数据库或执行查询的逻辑。通过分离出这样的逻辑,ReportViewer 可以兼容所有的数据源,包括非数据库的数据源。然而,这意味着当 ReportViewer 控件使用 RDL 文件时,RDL 文件中的 SQL 相关信息会被控件简单地忽略。主机应用程序负责以 ADO.NET DataTables 的形式连接到数据库、执行查询并向 ReportViewer 控件提供数据。

http://www.gotreportviewer.com/

于 2010-05-27T03:00:09.320 回答
23

我一直认为 RDL 和 RDLC 之间的区别在于 RDL 用于 SQL Server Reporting Services,而 RDLC 在 Visual Studio 中用于客户端报告。实现和编辑器几乎相同。RDL代表RDLCReport Defintion Language_ Report Definition Language Client-side

我希望这会有所帮助。

于 2009-07-07T02:01:22.100 回答
16

根据我的经验,如果您需要大型报告的高性能(这在一定程度上取决于您的客户规格),请使用 rdlc。此外,rdlc 报告使您可以对数据进行非常全面的控制,您可以通过使用客户端报告来节省自己浪费的数据库行程等。在我目前正在处理的项目中,一个关键报告需要大约 2 分钟才能在服务器端呈现,并且几乎可以取出它在该时间命中的任何报告服务器。将其切换到客户端渲染,我们看到性能更接近 20-40 秒,报表服务器上没有负载,并且使用的带宽更少,因为只有数据集被下载。

您的里程可能会有所不同,而且我发现 rdlc 增加了开发和维护的复杂性,尤其是当您的报告被设计为服务器端报告时。

于 2009-07-28T16:04:56.247 回答
11

上面已经解决了其中的一些问题,但这是我对 VS2008 环境的 2 美分。

RDL(远程报告):更好的开发体验,如果您需要使用一些高级功能,如调度、临时报告等,则更灵活......

RDLC(本地报告):在将数据发送到报告之前更好地控制数据(在将数据发送到报告之前更容易验证或操作数据)。部署更容易,不需要 Reporting Services 实例。

本地报告的一个巨大警告是已知的内存泄漏,如果您的客户端将运行大量大型报告,则会严重影响性能。这应该通过新的 VS2010 版本的报表查看器来解决。

就我而言,由于我们有一个可用的 Reporting Services 实例,我将新报表开发为 RDL,然后将它们转换为本地报表(这很容易)并将它们部署为本地报表。

于 2010-05-07T12:45:03.553 回答
7

虽然我目前倾向于 RDL,因为它看起来更灵活且更易于管理,但 RDLC 的优势在于它似乎简化了您的许可。由于 RDLC 不需要 Reporting Services 实例,因此您不需要 Reporting Services 许可证即可使用它。

我不确定这是否仍然适用于较新版本的 SQL Server,但如果您选择将 SQL Server 数据库和 Reporting Services 实例放在两台不同的机器上,则需要拥有两个单独的 SQL Server 许可证:
http://social.msdn.microsoft.com/forums/en-US/sqlgetstarted/thread/82dd5acd-9427-4f64-aea6-511f09aac406/

您可以Bing以获取有关 Reporting Services 许可的其他类似博客和帖子。

于 2012-09-02T02:34:00.560 回答
7

如果您有可用的报告服务基础架构,请使用它。您会发现 RDL 开发更令人愉快。您可以预览报告,轻松设置参数等。

于 2009-08-11T12:07:25.217 回答
2

对于 VS2008,我相信 RDL 给你的编辑功能比 RDLC 更好。例如,我可以使用 RDL 在文本框中更改选定数量的文本的粗体,而在 RDLC 中这是不可能的。

RDL:abcd efgh ijklmnop

RDLC:abcd efgh ijklmnop -或- abcd efgh ijklmnop(是您唯一的选择)

这是因为 RDLC 使用的是 2005 年的早期命名空间/格式,而 RDL 使用的是 2008 年。然而,这将随着 VS2010 改变

于 2010-01-08T23:36:25.213 回答
1

如果我们有更少的报告,这些报告不那么复杂并且被 asp.net 网页使用。最好使用 rdlc,原因是我们可以避免在 RS 实例上维护报告。但我们必须手动从 DB 中获取数据并将其绑定到 rdlc。

缺点:与 SSrs 设计师相比,在 Visual Studio 中设计 rdlc 难度不大。

优点:维护很容易。从我们的页面导出报告时,观察到与服务器端报告相比的性能提升。

于 2014-06-27T17:36:38.243 回答
-3

如果您想在 asp.net 中使用报告,则使用 .rdl 如果您想在报告生成器/报告服务器中使用 /view,然后使用 .rdlc 只需手动转换格式即可

于 2016-11-24T15:08:50.453 回答