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

Daa*_*aan 114 rdlc rdl reporting-services

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

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

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

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

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

更新:

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

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

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

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

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

dja*_*azz 77

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

I.一般而言,RDL报告是HOSTED报告.这意味着您需要实施SSRS服务器.它们是SQL Server内置的Visual Studio扩展,用于报告语言.安装SSRS时,您应该添加一个名为"Business Intelligence Development Studio"的附加组件,与使用它相比,它更容易使用报表.

[R扩展端口

d efinition

L angauge

RDL报告的好处:

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

缺点:

  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配置会回收系统,并且第一次报告有时会在加载站点时花费一些时间.你可以通过改变它来解决这个问题,但我发现它可以提供更好的服务.

II.RDLC报告是客户端包含的报告,不会在任何地方出现.名称中的额外c表示"客户".通常,这是RDL语言的扩展,仅适用于Visual Studio客户端应用程序.当您添加"报告"项时,它存在于Visual Studio中.

RDLC报告的好处:

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

缺点:

  1. 你需要自己处理参数,同时你可以实现包装方法,以帮助腿部工作比预期和不幸多一点.
  2. 除非处于远程模式并访问RLD报告,否则用户无法在"ReportViewer"控件中查看参数.因此,您需要在控件外部自己创建文本框,下拉列表,单选按钮以传递给它.有些人喜欢这样增加了控制力,我个人并不喜欢.
  3. 您需要为报告分发服务而做的任何事情都需要自己构建.通过电子邮件发送,订阅,保存.对不起,您需要在.NET中构建它,或者实现一个已经从上面执行此操作的代理,您可能只是使用托管报告.

老实说,我喜欢两种用途.如果我想向分析师询问他们是否一直使用并调整图形,图表,钻取和导出到Excel,我使用RDL并让SSRS的网站完成处理电子邮件分发的所有工作.如果我想要一个具有报告部分的应用程序,并且我知道应用程序是它自己的带有规则和治理的模块,我使用RDLC并且参数更小并且由用户做出的决定驱动,然后才能获得报告的部分内容他们所在的客户和网站,然后他们通常只选择一个时间范围或类型,而不是更多.因此,一般来说,我会使用RDL的复杂报告,对于简单的事情,我会使用RDLC恕我直言.

我希望有所帮助.


Mat*_*ock 55

问: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 Viewer示例程序.

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

http://www.gotreportviewer.com/


Mos*_*ike 20

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

我希望有所帮助.

  • 我无法理解"客户端"部分,直到我意识到使用RDLC可以(甚至需要)手动将数据提供给报告,而不必强制连接到某个数据库. (3认同)

mar*_*r75 15

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

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

  • 这在很大程度上取决于a)报表服务器的相对处理能力和b)您的报表查看器控件是否配置为本地或远程处理.通过在本地处理模式下使用报表查看器控件,您将报表处理工作传输到客户端,这在报表服务器无法处理工作负载的情况下(例如,如果有许多客户端)可能是有益的.但是,规格相当合理的报表服务器应该能够处理大多数报表工作负载.其他瓶颈可能是报告/查询设计和数据源. (2认同)

小智 11

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

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

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

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

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


小智 7

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


Sha*_*ary 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许可的其他类似博客和帖子.

  • SQL Server许可仍然要求您为安装了任何SQL Server组件的每台计算机拥有许可证.因此,报表服务器数据库与报表服务器服务位于不同服务器上的横向扩展部署需要为每个服务器单独许可. (3认同)