何时通过RDL报告使用RDLC?

过去几周我一直在研究SSRS 2005/2008,并创build了一些服务器端报告。 对于某些应用程序,一位同事build议我研究一下RDLC的具体情况。 我现在试图让我的头脑RDL和RDLC之间的主要区别。

search这些信息最多会产生碎片化的信息。 我了解到:

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

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

为了更好地把握RDLC文件,我想知道它们的用途与RDL文件有何不同,以及在什么情况下会selectRDLC over RDL。 链接到资源也是受欢迎的。

更新:

ASP.NET论坛上的一个线程讨论了这个问题。 从这个angular度,我对这个问题有了更好的认识。

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

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

这是一个优势还是一个劣势取决于具体的应用。

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

从我的经验来看,对这两件事情都没有多less考虑:

I. RDL报告通常是HOSTED报告。 这意味着您需要实施SSRS服务器。 它们是SQL Server中用于报告语言的Visual Studio的扩展。 当您安装SSRS时,您应该有一个名为“商业智能开发工作室”的附加function,与报表相比,使用报表要容易得多。

报告

定义

L angauge

RDL报告的好处:

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

缺点:

  1. 与其他事情相比,SSRS是一种万能钥匙。 大多数人被安全策略和devise报告混淆为VS的“附加”。 SQL 2005 = VS BIDS 2005,SQL 2008 = VS BIDS 2008,SQL 2012 = VS BIDS 2010(LOL)。
  2. 继续1安全设置恕我直言的政策是白痴过度复杂。 服务器安全性,数据库安全性和angular色,为服务托pipe的页面上的两个安全设置。 大多数人只设置一个pipe理员,不能进入,并想知道为什么其他用户不能。 关于SSRS的最常见的投诉或问题与通常取决于我的经验有关。
  3. 您可以使用“expression式”来提升您的报告。 通常情况下,你会做很多事情,而且你的报告会在性能上爬行。
  4. 你有一定数量的东西你可以做和出口。 SSRS没有hover在报告我知道没有JavaScript的黑客。
  5. 速度和性能可能会受到影响,因为愚蠢的SSRSconfiguration回收系统,第一次报告可能需要一段时间才加载网站。 你可以通过改变它来解决这个问题,但是我发现为它做一个更好的维护服务。

II。 RDLC报告是客户包含的报告,不是任何人托pipe的。 名字中的额外c意味着'客户'。 通常,这是仅用于Visual Studio客户端应用程序的RDL语言的扩展。 当您添加“报告”项目时,它存在于Visual Studio中。

RDLC报告的好处:

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

缺点:

  1. 你需要自己处理参数,而你可以实现包装方法,以帮助作业有点超出预期和不幸。
  2. 除非处于远程模式并访问RLD报告,否则用户无法查看“ReportViewer”控件中的参数。 因此,您需要在控件外部自行创build文本框,下拉列表,单选button以传递给它。 有些人喜欢这种控制,我不亲自。
  3. 任何你想做的服务报告分发你需要build立你自己。 电子邮件,订阅,保存。 对不起,你需要在.NET中构build它,或者实现一个已经从上面做到的代理,你可以使用托pipe报表。

老实说,我喜欢两个不同的目的。 如果我想要一些分析师,他们使用所有的时间,并调整图表,图表,钻取和导出到Excel我使用RDL,只是SSRS的网站做处理电子邮件分配的所有工作。 如果我想要一个具有报告部分的应用程序,并且我知道应用程序是它自己的模块,并且有规则和治理,我使用一个RDLC并使参数变小,并由用户在做出报告之前做出的决定驱动客户他们在网站上,然后他们通常只是select一个时间框架或types,没有更多。 所以一般情况下,复杂的报告我会使用RDL和简单的东西,我会使用RDLC恕我直言。

我希望有帮助。

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

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

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

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

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

http://www.gotreportviewer.com/

我一直认为RDL和RDLC的区别在于,RDL用于SQL Server Reporting Services,而RDLC用于Visual Studio中用于客户端报告。 实现和编辑器几乎完全相同。 RDL代表报告定义语言和RDLC报告定义语言客户端。

我希望有帮助。

根据我的经验,如果您需要在大型报告中使用高性能(这取决于您的客户端规格),请使用rdlc。 此外,rdlc报告可以让您对数据进行全面的控制,您可以通过使用客户端报告节省浪费的数据库访问等。 在我目前正在进行的项目中,一个重要的报告需要在服务器端渲染大约2分钟,几乎可以取出那个时间点击的报告服务器。 切换到客户端渲染,我们看到性能更接近20-40秒,没有负载的报告服务器和更less的带宽使用,因为只有数据集被下载。

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

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

RDL(远程报告):如果您需要使用某些高级function(如日程安排,临时报告等),则可获得更好的开发体验和更大的灵活性。

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

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

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

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

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

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

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

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

RDL:abcd efgh ijklmnop

RDLC: abcd efgh ijklmnop – 或 – abcd efgh ijklmnop(是您唯一的select)

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

如果我们的asp.net网页的复杂度和消耗的报告数量较less。 用rdlc去更好,原因是我们可以避免维护RS实例的报告。 但我们必须手动从数据库中获取数据并将其绑定到rdlc。

缺点:相比于SSrsdevise师,在visual studio中deviserdlc是一件难事。

Pro:维护很简单。 在从我们页面导出报告的同时,观察到与服务器端报告相比的性能增益。

如果你想在asp.net中使用报表,那么如果你想在报表生成器/报表服务器中使用/ view,那么就使用.rdl,然后使用.rdlc,只需手动转换格式就可以了。

Interesting Posts