何时使用RDLC而不是RDL报告?

时间:2009-07-03 12:33:15

标签: reporting-services rdlc rdl

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

搜索此信息最多会产生碎片信息。我了解到:

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

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

为了更好地掌握RDLC文件,我想知道它们的使用与RDL文件的区别,以及在RDL上选择RDLC的情况。也欢迎链接到资源。

更新

thread on the ASP.NET forums讨论了同样的问题。从中,我对这个问题有了更好的了解。

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

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

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

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

10 个答案:

答案 0 :(得分:75)

根据我的经验,几乎没有什么可以考虑的事情:

予。 RDL报告通常是HOSTED报告。这意味着您需要实施SSRS服务器。它们是SQL Server内置的Visual Studio扩展,用于报告语言。当您安装SSRS时,您应该添加名为“商业智能开发工作室”的附加功能。使用报告比使用报告更容易。

R 电子竞技

D 定义

L angauge

RDL报告的好处:

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

    1. 与快速提升它的其他事情相比,SSRS是一种胜利。大多数人都对安全策略感到困惑,并将报告设计为“添加”。到VS. SQL 2005 = VS BIDS 2005,SQL 2008 = VS BIDS 2008,SQL 2012 = VS BIDS 2010(LOL)。
    2. 继续1安全设置的政策恕我直言是愚蠢的过于复杂。服务器安全性,数据库安全性和角色,为服务托管的页面上有两个安全设置。大多数人只设置了一个管理员而不能进入,并想知道为什么其他用户不能。关于SSRS的最常见的抱怨或问题与从我的经验中获得的一般有关。
    3. 您可以使用'表达式'这应该会增强'你的报告。通常情况下,您执行的操作不止一些,而且您的报告会在性能方面进行爬行。
    4. 您有一定数量的事情可以做并导出。没有javascript hack,SSRS没有悬停在我知道的报告上。
    5. 速度和性能可能会受到影响,因为愚蠢的SSRS配置会回收系统,而第一份报告有时会在加载网站时花费一些时间。你可以通过修改它来解决这个问题,但我发现它可以保持活力,因为它可以更好地工作。
    6. II。 RDLC报告是客户端包含的报告,不会在任何地方出现。名称中的额外c表示'客户'。通常,这是RDL语言的扩展,仅适用于Visual Studio客户端应用程序。当您添加“报告”时,它存在于Visual Studio中。项目

      RDLC报告的好处:

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

        1. 你需要自己处理参数,同时你可以实现包装方法,以帮助腿部工作比预期和不幸更多。
        2. 用户无法在“ReportViewer”中查看参数。控制,除非它处于远程模式并访问RLD报告。因此,您需要在控件外部自己制作文本框,下拉列表,单选按钮以传递给它。有些人喜欢这样可以增加控制力,我个人并不是。
        3. 您需要为报告分发服务而做任何事情,您需要自己构建。通过电子邮件发送,订阅,保存。对不起,您需要在.NET中构建它,或者实现一个已经从上面执行此操作的代理,您可以使用托管报告。
        4. 老实说,我喜欢两种用途。如果我想向分析师询问他们一直使用并调整图表,图表,下钻和导出到Excel,我使用RDL并让SSRS的网站完成处理电子邮件分发的所有工作。如果我想要一个具有报告部分的应用程序,并且我知道应用程序是它自己的规则和治理模块,我使用RDLC并使参数更小并且由用户在进入之前做出的决策驱动报告他们所在的客户端和网站的一部分,然后他们通常只选择时间范围或类型而已。因此,通常我会使用RDL的复杂报告,对于简单的事情,我会使用RDLC恕我直言。

          我希望有所帮助。

答案 1 :(得分:55)

  

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

     

答:RDL文件由SQL创建   Server 2005版本的Report   设计师。 RDLC文件由。创建   Visual Studio 2008版本   报告设计师。

     

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

     

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

     

请注意ReportViewer控件   不包含任何逻辑   连接数据库或执行   查询。通过分离出这样的逻辑,   ReportViewer已经制作完成   兼容所有数据源,   包括非数据库数据源。   但是这意味着当一个RDL   ReportViewer使用该文件   控制,SQL相关信息   在RDL文件中简单地忽略   控制。这是主持人   应用程序的责任   连接数据库,执行查询   并向ReportViewer提供数据   以ADO.NET的形式控制   数据表。

http://www.gotreportviewer.com/

答案 2 :(得分:20)

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

我希望有所帮助。

答案 3 :(得分:15)

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

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

答案 4 :(得分:11)

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

RDL(远程报告):如果您需要使用一些高级功能(如计划,临时报告等),可以获得更好的开发体验,更大的灵活性......

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

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

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

答案 5 :(得分:7)

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

答案 6 :(得分:7)

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

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

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

答案 7 :(得分:2)

对于VS2008,我相信RDL为您提供比RDLC更好的编辑功能。例如,我可以使用RDL更改文本框中选定文本量的粗体,而在RDLC中则不可能。

RDL:abcd efgh ijklmnop

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

这是因为RDLC使用的是2005年以前的命名空间/格式,而RDL使用的是2008.但是这会随着VS2010而改变

答案 8 :(得分:1)

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

缺点:与SSrs设计师相比,在visual studio中设计rdlc并不困难。

专业:维护很简单。 从我们页面导出报告时,观察到与服务器端报告相比的性能提升。

答案 9 :(得分:-3)

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