Wann wird RDLC über RDL-Berichte verwendet?

117

Ich habe in den letzten Wochen SSRS 2005/2008 studiert und einige serverseitige Berichte erstellt. Für einige Anwendungen schlug ein Kollege vor, dass ich mich mit RDLC für diese spezielle Situation befasse. Ich versuche jetzt, den Hauptunterschied zwischen RDL und RDLC in den Griff zu bekommen.

Die Suche nach diesen Informationen ergibt bestenfalls fragmentierte Informationen. Ich habe gelernt, dass:

  • In RDLC-Berichten werden keine Informationen zum Abrufen von Daten gespeichert.
  • RDLC-Berichte können direkt vom ReportViewer-Steuerelement ausgeführt werden.

Aber ich verstehe die Beziehung zwischen der RDLC-Datei und den anderen verwandten Systemen (dem Berichtsserver, der Quellendatenbank, dem Client) immer noch nicht vollständig.

Um einen guten Überblick über RDLC-Dateien zu erhalten, möchte ich wissen, wie sich ihre Verwendung von RDL-Dateien unterscheidet und in welcher Situation man RDLC gegenüber RDL wählen würde. Links zu Ressourcen sind ebenfalls willkommen.

Aktualisieren:

Ein Thread in den ASP.NET-Foren behandelt dasselbe Problem. Dadurch habe ich ein besseres Verständnis für das Thema gewonnen.

Eine Funktion von RDLC besteht darin, dass es im ReportViewer-Steuerelement vollständig clientseitig ausgeführt werden kann.

  • Dadurch entfällt die Notwendigkeit einer Reporting Services-Instanz und sogar jegliche Datenbankverbindung. Es gilt jedoch Folgendes:
  • Es wird die Anforderung hinzugefügt, dass die im Bericht benötigten Daten manuell bereitgestellt werden müssen.

Ob dies ein Vorteil oder ein Nachteil ist, hängt von der jeweiligen Anwendung ab.

In meiner Anwendung ist ohnehin eine Instanz von Reporting Services verfügbar, und die erforderlichen Daten für die Berichte können problemlos aus einer Datenbank abgerufen werden. Gibt es noch einen Grund für mich, über RDLC nachzudenken, oder sollte ich einfach bei RDL bleiben?

Daan
quelle

Antworten:

83

Aus meiner Erfahrung gibt es wenige Dinge, über die man nachdenken muss:

I. RDL-Berichte sind im Allgemeinen HOSTED-Berichte. Dies bedeutet, dass Sie SSRS Server implementieren müssen. Sie sind eine integrierte Erweiterung von Visual Studio aus SQL Server für die Berichtssprache. Wenn Sie SSRS installieren, sollten Sie ein Add-On namens "Business Intelligence Development Studio" haben, mit dem Sie mit den Berichten viel einfacher arbeiten können als ohne.

R Berich

D efinition

L Angauge

Vorteile von RDL-Berichten:

  1. Sie können die Berichte in einer Umgebung hosten, in der Dienste für Sie ausgeführt werden.
  2. Sie können die Sicherheit für ein Element oder eine Vererbungsstufe konfigurieren, um die Sicherheit als eigenständiges Konzept zu behandeln
  3. Sie können den Dienst so konfigurieren, dass E-Mails gesendet werden (vorausgesetzt, Sie haben einen SMTP-Server, auf den Sie Zugriff haben) und Dateien nach Zeitplan gespeichert werden
  4. Sie haben eine Datenbank namens "ReportServer", die Sie nach der Veröffentlichung nach Informationen zu den Berichten abfragen können.
  5. Sie können auf diese Berichte weiterhin über 'ReportViewer' in einer Clientanwendung zugreifen, die in ASP.NET, WPF (mit einem Winform-Steuerelement!) Oder Winforms in .NET mit 'ProcessingMode.Remote' geschrieben wurde.
  6. Sie können Parameter festlegen, die ein Benutzer sehen und verwenden kann, um mehr Flexibilität zu erhalten.
  7. Sie können Teile eines Berichts so konfigurieren, dass sie für Verbindungszeichenfolgen als 'Datenquellen' sowie eine SQL-Abfrage, XML oder andere Datasets als 'Dataset' verwendet werden. Diese und andere Teile können gespeichert und konfiguriert werden, um Daten regelmäßig zwischenzuspeichern.
  8. Sie können .NET-Proxyklassen der Dienste http: // / ReportServer / ReportingService2010 oder / ReportExecution2005 schreiben. Sie können dann Ihre EIGENEN Methoden in .NET erstellen, um SSRS-Daten vom Dienst direkt von einem Server, auf dem SSRS-Berichte im Code gehostet werden, per E-Mail zu versenden, zu speichern oder zu bearbeiten. Programmgesteuertes Exportieren eines SSRS-Berichts vom Sharepoint mithilfe von ReportService2010.asmx

Nachteile:

  1. SSRS ist eine Art Wonkey im Vergleich zu anderen Dingen, wenn es darum geht, schnell aufzustehen. Die meisten Leute sind verwirrt von der Sicherheitsrichtlinie und dem Entwerfen von Berichten als "Add-On" zu VS. SQL 2005 = VS BIDS 2005, SQL 2008 = VS BIDS 2008, SQL 2012 = VS BIDS 2010 (LOL).
  2. Wenn Sie mit 1 fortfahren, sind die Richtlinien für Sicherheitseinstellungen meiner Meinung nach idiotisch überkomplex. Auf der für den Dienst gehosteten Seite gibt es Serversicherheit, Datenbanksicherheit und Rollen sowie zwei Sicherheitseinstellungen. Die meisten Leute richten nur einen Administrator ein, der nicht eintreten kann, und fragen sich, warum andere Benutzer dies nicht können. Die häufigste Beschwerde oder Frage zu SSRS bezieht sich auf das allgemeine Einsteigen aus meiner Erfahrung.
  3. Sie können "Ausdrücke" verwenden, die Ihren Bericht angeblich "verbessern" sollen. Oft machen Sie mehr als ein paar und Ihr Bericht wird in der Leistung gecrawlt.
  4. Sie haben eine bestimmte Anzahl von Dingen, die Sie ausführen und in die Sie exportieren können. SSRS hat keinen Schwebeflug über die mir bekannte Berichterstattung ohne einen Javascript-Hack.
  5. Geschwindigkeit und Leistung können beeinträchtigt werden, da die blöde SSRS-Konfiguration das System recycelt und ein erster Bericht manchmal eine Weile dauern kann, bis nur die Site geladen ist. Sie können dies umgehen, indem Sie es ändern, aber ich habe festgestellt, dass ein Keep-Alive-Service besser funktioniert.

II. RDLC-Berichte sind CLIENT CONTAINED-Berichte, die nirgendwo gehostet werden. Das zusätzliche c im Namen bedeutet "Client". Im Allgemeinen ist dies eine Erweiterung der RDL-Sprache, die nur für die Verwendung in Visual Studio-Clientanwendungen vorgesehen ist. Es ist in Visual Studio vorhanden, wenn Sie ein Berichtselement hinzufügen.

Vorteile von RDLC-Berichten:

  1. Sie können einen wcf-Dienst viel einfacher an das Dataset anschließen.
  2. Sie haben mehr Kontrolle über das Dataset und können POCO-Klassen, die mit Entity Framework-Objekten oder ADO.NET direkt gefüllt sind, sowie Tabellen selbst verwenden. Sie können die Daten zur Optimierung mit Affen versehen, bevor Sie sie an den Bericht binden.
  3. Sie können das Aussehen mit Add-Ons direkt im Code dahinter anpassen.

Nachteile:

  1. Sie müssen die Parameter selbst handhaben, und während Sie Wrapper-Methoden implementieren können, um die Beinarbeit zu unterstützen, ist dies etwas mehr als erwartet und unglücklich.
  2. Der Benutzer kann die Parameter in einem 'ReportViewer'-Steuerelement nur SEHEN, wenn er sich im Remote-Modus befindet und auf einen RLD-Bericht zugreift. Daher müssen Sie außerhalb des Steuerelements selbst Textfelder, Dropdowns und Optionsfelder erstellen, um diese zu übergeben. Einige Leute mögen diese zusätzliche Kontrolle, ich persönlich nicht.
  3. Alles, was Sie mit der Wartung der Berichte für die Verteilung tun möchten, müssen Sie selbst erstellen. E-Mail, Abonnements, Speichern. Es tut uns leid, dass Sie dies in .NET erstellen oder einen Proxy implementieren müssen, der dies bereits von oben ausführt. Möglicherweise verwenden Sie nur gehostete Berichte.

Ehrlich gesagt mag ich beide für verschiedene Zwecke. Wenn ich Analysten etwas mitteilen möchte, das sie ständig nutzen und für Grafiken, Diagramme, Drilldowns und Exporte nach Excel optimieren, verwende ich RDL und lasse nur die SSRS-Website die gesamte Arbeit für die Abwicklung der E-Mail-Verteilungen erledigen. Wenn ich eine Anwendung mit einem Berichtsabschnitt haben möchte und weiß, dass die Anwendung ein eigenes Modul mit Regeln und Governance ist, verwende ich einen RDLC. Die Parameter müssen kleiner sein und von den Entscheidungen abhängen, die der Benutzer getroffen hat, bevor er zum Berichtsteil von was gelangt Kunden sind sie vor Ort und dann wählen sie normalerweise nur einen Zeitrahmen oder Typ und nichts weiter. Im Allgemeinen würde ich als komplexen Bericht RDL verwenden und für etwas Einfaches würde ich RDLC IMHO verwenden.

Ich hoffe das hilft.

Djangojazz
quelle
57

F: Was ist der Unterschied zwischen RDL- und RDLC-Formaten?

A: RDL-Dateien werden von der SQL Server 2005-Version von Report Designer erstellt. RDLC-Dateien werden von der Visual Studio 2008-Version von Report Designer erstellt.

RDL- und RDLC-Formate haben dasselbe XML-Schema. In RDLC-Dateien dürfen jedoch einige Werte (z. B. Abfragetext) leer sein. Dies bedeutet, dass sie nicht sofort für die Veröffentlichung auf einem Berichtsserver bereit sind. Die fehlenden Werte können durch Öffnen der RDLC-Datei mit der SQL Server 2005-Version von Report Designer eingegeben werden. (Sie müssen zuerst .rdlc in .rdl umbenennen.)

RDL-Dateien sind vollständig mit der ReportViewer-Steuerelementlaufzeit kompatibel. RDL-Dateien enthalten jedoch keine Informationen, von denen die Entwurfszeit des ReportViewer-Steuerelements abhängt, um automatisch Datenbindungscode zu generieren. Durch manuelles Binden von Daten können RDL-Dateien im ReportViewer-Steuerelement verwendet werden. Neu! Siehe auch das RDL Viewer-Beispielprogramm.

Beachten Sie, dass das ReportViewer-Steuerelement keine Logik zum Herstellen einer Verbindung zu Datenbanken oder zum Ausführen von Abfragen enthält. Durch die Trennung dieser Logik wurde der ReportViewer mit allen Datenquellen kompatibel gemacht, einschließlich Datenquellen, die keine Datenbanken sind. Dies bedeutet jedoch, dass bei Verwendung einer RDL-Datei durch das ReportViewer-Steuerelement die SQL-bezogenen Informationen in der RDL-Datei vom Steuerelement einfach ignoriert werden. Es liegt in der Verantwortung der Hostanwendung, eine Verbindung zu Datenbanken herzustellen, Abfragen auszuführen und Daten in Form von ADO.NET DataTables an das ReportViewer-Steuerelement zu senden.

http://www.gotreportviewer.com/

Matthew Lock
quelle
Kann ich benutzerdefinierte Objekte ( List<T>von MyEntity) als Quelle für Remote Reports ( RDL ) verwenden, nicht RDLC ?
Kiquenet
21

Ich habe immer gedacht, dass der Unterschied zwischen RDL und RDLC darin besteht, dass RDL für SQL Server Reporting Services und RDLC in Visual Studio für clientseitige Berichte verwendet werden. Die Implementierung und der Editor sind nahezu identisch. RDL steht für Report Defintion Languageund RDLC Report Definition Language Client-side .

Ich hoffe das hilft.

Moskito Mike
quelle
3
Ich konnte mich nicht mit dem "clientseitigen" Teil befassen, bis mir klar wurde, dass es mit RDLC möglich (sogar erforderlich) ist, die Daten manuell für den Bericht bereitzustellen, ohne eine Verbindung zu einer Datenbank zu erzwingen.
Daan
16

Nach meiner Erfahrung sollten Sie sich für rdlc entscheiden, wenn Sie für große Berichte eine hohe Leistung benötigen (dies hängt geringfügig von Ihren Client-Spezifikationen ab). Darüber hinaus bieten rdlc-Berichte Ihnen eine umfassende Kontrolle über Ihre Daten. Möglicherweise können Sie sich verschwendete Datenbankfahrten usw. durch die Verwendung clientseitiger Berichte ersparen. Bei dem Projekt, an dem ich gerade arbeite, benötigt ein kritischer Bericht ungefähr 2 Minuten, um auf der Serverseite gerendert zu werden, und entfernt so ziemlich jeden Berichtsserver, auf den er für diese Zeit trifft. Wenn Sie es auf clientseitiges Rendering umstellen, sehen Sie eine Leistung, die viel näher an 20 bis 40 Sekunden liegt, ohne den Berichtsserver zu belasten und weniger Bandbreite zu verwenden, da nur die Datasets heruntergeladen werden.

Ihr Kilometerstand kann variieren, und ich finde, dass rdlc die Entwicklungs- und Wartungskomplexität erhöht, insbesondere wenn Ihr Bericht als serverseitiger Bericht konzipiert wurde.

marr75
quelle
Ich denke, dass es in Bezug auf die Leistung am besten ist, RDL-Berichte auf einem Remote-Server zu speichern, auf dem Reporting Services ausgeführt wird. Sie müssen nicht jede Arbeitsstation Ihres Kunden aktualisieren (Sie müssen nur einen Bericht nur an einer Site aktualisieren). In der Version 2005 gibt es einen Speicherverlust und einige kleinere Fehler, die bei der Verwendung von Berichtsdiensten vermieden zu werden scheinen.
Junior Mayhé
1
Ich bin mir nicht sicher, was Sie sagen wollen. Mit clientseitiger Berichterstellung haben wir bereits die beste Leistung erzielt. RDLs auf einem Remote-Server waren für uns ein großer Engpass.
März 75
2
Dies hängt sehr stark von a) der relativen Verarbeitungskapazität des Berichtsservers und b) davon ab, ob Ihre Steuerelemente für die Berichtsanzeige für die lokale oder Remoteverarbeitung konfiguriert sind. Durch die Verwendung von Steuerelementen für die Berichtsanzeige im lokalen Verarbeitungsmodus übertragen Sie die Berichtsverarbeitungsarbeit auf den Client. Dies kann in einer Situation von Vorteil sein, in der der Berichtsserver nicht über die Kapazität verfügt, die Arbeitslast zu bewältigen (z. B. wenn viele Clients vorhanden sind). Ein einigermaßen gut spezifizierter Berichtsserver sollte jedoch in der Lage sein, die meisten Berichtsauslastungen zu bewältigen. Andere Engpässe können das Berichts- / Abfragedesign und Datenquellen sein.
Nathan Griffiths
1
Als ich darauf antwortete, handhabten serverseitige Berichte nicht sehr gut gleichzeitige Benutzer, sondern nur eine Anfrage gleichzeitig (ich wäre sehr überrascht, wenn dies überhaupt verbessert worden wäre). Darüber hinaus ist in unserer Umgebung (und vielen anderen, die ich annehmen müsste) das Rendern des Berichts im Vergleich zu der Arbeit des Datenbankservers ein sehr kleines Detail. Durch clientseitige Berichte konnten wir die Parallelitätsaspekte der Anwendung wesentlich besser steuern. Dies erhöht jedoch die Komplexität des Systems. Es ist also eine technische Entscheidung, die getroffen werden muss.
März 75
@ marr75 - Server und Client skalieren unterschiedlich. Auf der Serverseite stoßen Sie eher auf eine Mauer, wenn Sie 25 Mitarbeiter einstellen, die alle gleichzeitig auf den Server treffen. Auf der Client-Seite erhalten alle 25 einen eigenen PC, um die Last zu tragen, sodass Sie möglicherweise überhaupt keine Mauer treffen. Wenn Ihr Unternehmen wächst, erfordert die serverseitige Lösung mehr Babysitting. Das heißt, Sie können den Server weiter optimieren, und das muss nur an einer Stelle erfolgen - ich denke, die richtigen Indizes zu erstellen - und Ihren DBA einbeziehen. Ich bevorzuge die Verwendung auf der Clientseite, optimiere aber beide für maximale Leistung!
MicroservicesOnDDD
11

Einige dieser Punkte wurden oben angesprochen, aber hier sind meine 2 Cent für die VS2008-Umgebung.

RDL (Remote Reports): Viel bessere Entwicklungserfahrung, mehr Flexibilität, wenn Sie einige erweiterte Funktionen wie Zeitplanung, Ad-hoc-Berichterstellung usw. verwenden müssen.

RDLC (Local Reports): Bessere Kontrolle über die Daten vor dem Senden an den Bericht (einfachere Validierung oder Bearbeitung der Daten vor dem Senden an den Bericht). Viel einfachere Bereitstellung, keine Instanz von Reporting Services erforderlich.

Eine RIESIGE Einschränkung bei lokalen Berichten ist ein bekannter Speicherverlust, der die Leistung erheblich beeinträchtigen kann, wenn Ihre Clients zahlreiche große Berichte ausführen. Dies soll mit der neuen VS2010-Version des Report Viewers behoben werden.

In unserem Fall entwickle ich, da eine Instanz von Reporting Services verfügbar ist, neue Berichte als RDLs und konvertiere sie dann in lokale Berichte (was einfach ist) und stelle sie als lokale Berichte bereit.

Harrison
quelle
7

Wenn Ihnen eine Reporting Services-Infrastruktur zur Verfügung steht, verwenden Sie diese. Sie werden feststellen, dass die RDL-Entwicklung etwas angenehmer ist. Sie können eine Vorschau des Berichts anzeigen, Parameter einfach einrichten usw.

Kevin Fisher
quelle
7

Während ich mich derzeit für RDL interessiere, weil es flexibler und einfacher zu verwalten scheint, hat RDLC den Vorteil, dass es Ihre Lizenzierung zu vereinfachen scheint. Da RDLC keine Reporting Services-Instanz benötigt, benötigen Sie keine Reporting Services-Lizenz, um sie zu verwenden.

Ich bin nicht sicher, ob dies für die neueren Versionen von SQL Server noch gilt. Wenn Sie jedoch einmal entschieden haben, die Instanzen von SQL Server Database und Reporting Services auf zwei separaten Computern zu speichern, mussten Sie über zwei separate SQL Server-Lizenzen verfügen:
http://social.msdn.microsoft.com/forums/en-US/sqlgetstarted/thread/82dd5acd-9427-4f64-aea6-511f09aac406/

Sie können Bing für andere ähnliche Blogs und Beiträge zur Reporting Services-Lizenzierung.

Shawn Eary
quelle
3
Für die SQL Server-Lizenzierung ist weiterhin eine Lizenz für jeden Computer erforderlich, auf dem eine beliebige Komponente von SQL Server installiert ist. Daher erfordert eine Scale-Out-Bereitstellung, bei der sich die Berichtsserverdatenbanken auf einem anderen Server als der Berichtsserverdienst befinden, eine separate Lizenz für jeden Server.
Nathan Griffiths
2

Ich glaube, dass RDL für VS2008 bessere Bearbeitungsfunktionen bietet als RDLC. Zum Beispiel kann ich das Fettdruck für eine ausgewählte Textmenge in einem Textfeld mit RDL ändern, während dies in RDLC nicht möglich ist.

RDL: abcd efgh ijklmnop

RDLC: abcd efgh ijklmnop -oder- abcd efgh ijklmnop (sind Ihre einzigen Optionen)

Dies liegt daran, dass RDLC einen früheren Namespace / eine frühere Formatierung aus dem Jahr 2005 verwendet, während RDL 2008 verwendet. Dies wird sich jedoch mit VS2010 ändern

Durchschnitt
quelle
4
Dies liegt nicht am Unterschied zwischen rdl und rdlc, sondern an den SQL Server-Berichterstellungsdiensten 2005 und 2008. Die neu verteilbaren Berichts-Viewer, die hinter der SQL Server-Entwicklung zurückbleiben, unterstützen die clientseitige Berichterstellung. Diese Verzögerung ist der Grund für den Unterschied du beschreibst.
März 75
1
Aufgrund der großen Anzahl von Fehlern migriere ich von 2005 (RDLC) zu 2008 Reporting Services (RDL)
Junior Mayhé
1

Wenn wir weniger Berichte haben, die weniger komplex sind und von asp.net-Webseiten verwendet werden. Es ist besser, mit rdlc zu arbeiten. Der Grund dafür ist, dass wir vermeiden können, Berichte über RS-Instanzen zu verwalten. Wir müssen die Daten jedoch manuell aus der Datenbank abrufen und an rdlc binden.

Nachteile: Das Entwerfen von rdlc in Visual Studio ist im Vergleich zu SSrs Designer wenig schwierig.

Pro: Die Wartung ist einfach. Beim Exportieren des Berichts von unserer Seite wurde festgestellt, dass die Leistung im Vergleich zu serverseitigen Berichten zunimmt.

Feuerflügel
quelle
-3

Wenn Sie report in asp.net verwenden möchten, verwenden Sie .rdl. Wenn Sie / view in report builder / report server verwenden möchten, verwenden Sie .rdlc, indem Sie das Format manuell konvertieren. Dies funktioniert

Mahendramaid
quelle
Dies scheint dazu geführt zu haben, dass RDL und RDLC in Bezug auf ihren Ausführungsort vertauscht wurden - und selbst wenn dies nicht der Fall wäre, würde dies den Dutzenden der vorhandenen Antworten nichts Nützliches hinzufügen.
underscore_d
rdlc ist eine Erweiterung für die lokale Berichterstellung, die Sie in aspnet, winforms oder wpf verwenden können. msdn.microsoft.com/es-es/library/ms252104.aspx . Sie können keine .rdlc-Dateien im Fernverarbeitungsmodus verwenden
dgzornoza