web-dev-qa-db-fra.com

Quand utiliser RDLC sur les rapports RDL?

J'ai étudié SSRS 2005/2008 au cours des dernières semaines et j'ai créé des rapports côté serveur. Pour certaines applications, un collègue m'a suggéré de consulter RDLC pour cette situation particulière. J'essaie maintenant de comprendre la principale différence entre RDL et RDLC.

La recherche de cette information produit au mieux une information fragmentée. J'ai appris que:

  • Les rapports RDLC ne stockent pas d'informations sur la manière d'obtenir des données.
  • Les rapports RDLC peuvent être exécutés directement par le contrôle ReportViewer.

Mais je ne comprends toujours pas bien la relation entre le fichier RDLC et les autres systèmes associés (le serveur de rapports, la base de données source, le client).

Afin de bien comprendre les fichiers RDLC, j'aimerais savoir en quoi leur utilisation diffère des fichiers RDL et dans quelle situation on choisirait RDLC plutôt que RDL. Les liens vers des ressources sont également les bienvenus.

Mise à jour:

Un fil sur les forums ASP.NET aborde ce même problème. Cela m'a permis de mieux comprendre la question.

Une fonctionnalité de RDLC est qu'il peut être exécuté complètement côté client dans le contrôle ReportViewer.

  • Cela supprime la nécessité d'une instance de Reporting Services et même de toute connexion à une base de données, mais:
  • Il ajoute l'exigence selon laquelle les données nécessaires dans le rapport doivent être fournies manuellement.

Que cela soit un avantage ou un inconvénient dépend de l'application particulière.

Dans mon application, une instance de Reporting Services est néanmoins disponible et les données requises pour les rapports peuvent facilement être extraites d'une base de données. Reste-t-il une raison pour que je considère RDLC ou devrais-je simplement m'en tenir à RDL?

114
Daan

D'après mon expérience, il y a peu de choses à penser à ces deux choses:

I. Les rapports RDL sont généralement des rapports HOSTED. Cela signifie que vous devez implémenter le serveur SSRS. Ils constituent une extension intégrée de Visual Studio à partir de SQL Server pour le langage de génération de rapports. Lorsque vous installez SSRS, vous devez disposer d'un complément appelé "Business Intelligence Development Studio", qui est beaucoup plus facile à utiliser avec les rapports que sans ce dernier.

[~ # ~] r [~ # ~] eport

[~ # ~] d [~ # ~] efinition

[~ # ~] l [~ # ~] angauge

Avantages des rapports RDL:

  1. Vous pouvez héberger les rapports dans un environnement sur lequel des services sont exécutés.
  2. Vous pouvez configurer la sécurité d'un élément ou d'un niveau d'héritage pour gérer la sécurité en tant que concept autonome.
  3. Vous pouvez configurer le service pour envoyer des courriels (à condition que vous ayez un serveur SMTP auquel vous avez accès) et sauvegarder des fichiers sur des calendriers.
  4. Vous avez une base de données généralement appelée 'ReportServer', vous pouvez demander des informations sur les rapports une fois publiés.
  5. Vous pouvez toujours accéder à ces rapports via "ReportViewer" dans une application cliente écrite en ASP.NET, WPF (avec un bleform control bleh!) Ou Winforms en .NET en utilisant "ProcessingMode.Remote".
  6. Vous pouvez définir des paramètres qu'un utilisateur peut voir et utiliser pour gagner en flexibilité.
  7. Vous pouvez configurer des parties d'un rapport à utiliser pour les chaînes de connexion en tant que "Sources de données", ainsi que pour une requête SQL, XML ou d'autres ensembles de données en tant que "Ensemble de données". Ces pièces et d'autres peuvent être stockés et configurés pour mettre en cache des données sur une base régulière.
  8. Vous pouvez écrire des classes proxy .NET des services http: ///ReportServer/ReportingService2010 ou/ReportExecution2005. Vous pouvez ensuite créer vos méthodes OWN dans .NET pour envoyer par courrier électronique, enregistrer ou manipuler des données SSRS à partir du service directement d’un serveur hébergeant des rapports SSRS sous forme de code. Exporter par programme le rapport SSRS à partir d'un point de partage à l'aide de ReportService2010.asmx

Inconvénients:

  1. Le SSRS est un peu comme un vainqueur comparé à d’autres moyens de le faire rapidement. La plupart des gens sont désorientés par la politique de sécurité et la conception de rapports en tant qu’addition à VS. SQL 2005 = VS BIDS 2005, SQL 2008 = VS BIDS 2008, SQL 2012 = VS BIDS 2010 (LOL).
  2. En continuant sur 1, la stratégie pour les paramètres de sécurité IMHO est stupidement trop complexe. Il y a la sécurité du serveur, la sécurité de la base de données et les rôles, deux paramètres de sécurité sur la page hébergée pour le service. La plupart des gens ne configurent qu'un administrateur qui ne peut pas entrer et se demandent pourquoi d'autres utilisateurs ne le peuvent pas. La plainte ou la question la plus courante sur le SSRS est liée au fait que, selon mon expérience, il faut entrer.
  3. Vous pouvez utiliser des "expressions" censées "améliorer" votre rapport. Souvent, vous faites plus que quelques-uns et votre rapport va à la conquête des performances.
  4. Vous avez une quantité définie de choses que vous pouvez faire et exporter. SSRS n'a pas survolé les rapports que je connaisse sans piratage javascript.
  5. La vitesse et les performances peuvent prendre un coup car la configuration stupide de SSRS recycle le système et un premier rapport peut prendre un certain temps, par moment, juste pour charger le site. Vous pouvez contourner ce problème en le modifiant, mais j’ai constaté qu’il était préférable de créer un service de maintien en vie.

II. Les rapports RDLC sont des rapports CLIENT CONTENUS qui ne sont pas hébergés nulle part. Le c supplémentaire dans le nom signifie 'Client'. Généralement, il s'agit d'une extension du langage RDL destinée à être utilisée uniquement dans les applications client Visual Studio. Il existe dans Visual Studio lorsque vous ajoutez un élément "reporting".

Avantages des rapports RDLC:

  1. Vous pouvez connecter un service wcf beaucoup plus facilement au jeu de données.
  2. Vous avez davantage de contrôle sur l'ensemble de données et pouvez utiliser directement les classes POCO remplies d'objets de structure Entity ou ADO.NET, ainsi que les tables elles-mêmes. Vous pouvez utiliser les données pour l'optimiser avant de les lier au rapport.
  3. Vous pouvez personnaliser davantage l'apparence avec des ajouts directement dans le code situé derrière.

Inconvénients:

  1. Vous devez gérer les paramètres vous-même et, même si vous pouvez implémenter des méthodes d'encapsidation, le travail de la jambe est un peu plus long que prévu et malheureux.
  2. L'utilisateur ne peut pas voir les paramètres dans un contrôle 'ReportViewer' à moins d'être en mode distant et d'accéder à un rapport RLD. Ainsi, vous devez créer des zones de texte, des listes déroulantes et des boutons radio en dehors du contrôle pour y accéder. Certaines personnes aiment ce contrôle supplémentaire, je ne le fais pas personnellement.
  3. Tout ce que vous voulez faire avec le service des rapports pour la distribution dont vous avez besoin pour vous construire vous-même. Emailing, abonnements, sauvegarde. Désolé, vous devez créer cela dans .NET ou mettre en place un proxy qui le fait déjà d'en haut. Vous pourriez simplement utiliser des rapports hébergés.

Honnêtement, j'aime les deux à des fins différentes. Si je veux envoyer quelque chose aux analystes qu'ils utilisent tout le temps et à Tweak pour les graphiques, les graphiques, les forages et les exportations vers Excel, j'utilise RDL et le site de SSRS s'occupe simplement de la gestion des distributions par courrier électronique. Si je veux une application qui a une section de rapport et que je sais que cette application est son propre module avec des règles et une gouvernance, j'utilise un RDLC et les paramètres sont plus petits et dictés par les décisions que l'utilisateur a prises avant de passer au rapport. client, ils se trouvent sur le site, puis ils choisissent généralement un laps de temps ou un type et rien de plus. Donc généralement un rapport complexe j'utiliserais RDL et pour quelque chose de simple j'utiliserais RDLC IMHO.

J'espère que ça aide.

76
djangojazz

Q: Quelle est la différence entre les formats RDL et RDLC?

R: Les fichiers RDL sont créés par la version SQL Server 2005 de Report Designer. Les fichiers RDLC sont créés par la version Visual Studio 2008 de Report Designer.

Les formats RDL et RDLC ont le même schéma XML. Toutefois, dans les fichiers RDLC, certaines valeurs (telles que le texte de la requête) sont autorisées à être vides, ce qui signifie qu'elles ne sont pas immédiatement prêtes à être publiées sur un serveur de rapports. Les valeurs manquantes peuvent être entrées en ouvrant le fichier RDLC à l'aide de la version SQL Server 2005 de Report Designer. (Vous devez d'abord renommer .rdlc en .rdl.)

Les fichiers RDL sont entièrement compatibles avec le runtime du contrôle ReportViewer. Toutefois, les fichiers RDL ne contiennent pas certaines informations indispensables à la conception du contrôle ReportViewer pour la génération automatique de code de liaison de données. En liant manuellement les données, les fichiers RDL peuvent être utilisés dans le contrôle ReportViewer. Nouveau! Voir aussi l'exemple de programme RDL Viewer.

Notez que le contrôle ReportViewer ne contient aucune logique pour la connexion à des bases de données ou l'exécution de requêtes. En séparant cette logique, ReportViewer a été rendu compatible avec toutes les sources de données, y compris les sources de données autres que de bases de données. Toutefois, cela signifie que lorsqu'un contrôle RDL est utilisé par le contrôle ReportViewer, les informations relatives à SQL contenues dans le fichier RDL sont simplement ignorées par le contrôle. Il incombe à l'application hôte de se connecter aux bases de données, d'exécuter des requêtes et de fournir des données au contrôle ReportViewer sous la forme de ADO.NET DataTables.

http://www.gotreportviewer.com/

55
Matthew Lock

J'ai toujours pensé que la différence entre RDL et RDLC est que les RDL sont utilisés pour SQL Server Reporting Services et les RDLC sont utilisés dans Visual Studio pour les rapports côté client. L'implémentation et l'éditeur sont presque identiques. RDL signifie langage de définition de rapport et langage de définition de rapport RDLC côté client.

J'espère que ça aide.

20
Mosquito Mike

D'après mon expérience, si vous avez besoin de performances élevées (cela dépend légèrement des spécifications de votre client) de rapports volumineux, utilisez rdlc. De plus, les rapports rdlc vous donnent un très large éventail de contrôle sur vos données. Vous pourrez peut-être vous épargner des déplacements inutiles dans la base de données, etc. en utilisant des rapports côté client. Dans le projet sur lequel je travaille actuellement, un rapport critique nécessite environ 2 minutes pour être rendu côté serveur et supprime à peu près le serveur de rapports auquel il accède pour cette période. En basculant sur le rendu côté client, nous constatons des performances beaucoup plus proches de 20 à 40 secondes sans charge sur le serveur de rapports et moins de bande passante utilisée car seuls les jeux de données sont en cours de téléchargement.

Votre kilométrage peut varier et je trouve que rdlc ajoute une complexité supplémentaire en termes de développement et de maintenance, en particulier lorsque votre rapport a été conçu comme un rapport côté serveur.

15
marr75

Certains de ces points ont été abordés ci-dessus, mais voici mes 2 centimes pour l'environnement VS2008.

RDL (Rapports à distance): expérience de développement bien meilleure, plus de flexibilité si vous devez utiliser des fonctionnalités avancées telles que la planification, la création de rapports ad hoc, etc.

RDLC (rapports locaux): Meilleur contrôle des données avant de les envoyer au rapport (il est plus facile de valider ou de manipuler les données avant de les envoyer au rapport). Déploiement beaucoup plus facile, pas besoin d'une instance de Reporting Services.

Une énorme réserve avec des rapports locaux est une fuite de mémoire connue qui peut affecter gravement les performances si vos clients exécutent de nombreux rapports volumineux. Cela est censé être traité avec la nouvelle version VS2010 du visualiseur de rapports.

Dans mon cas, comme nous avons une instance de Reporting Services disponible, je développe de nouveaux rapports en tant que RDL, puis les convertis en rapports locaux (ce qui est facile) et les déploie en tant que rapports locaux.

11
Harrison

Tandis que je actuellement penche en faveur de RDL car il semble plus souple et plus facile à gérer, RDLC présente l'avantage de simplifier votre licence. Comme RDLC n’a pas besoin d’une instance de Reporting Services, vous n’avez pas besoin d’une licence Reporting Services pour l’utiliser.

Je ne sais pas si cela s'applique toujours aux versions les plus récentes de SQL Server, mais si vous avez choisi de placer les instances de base de données SQL Server et Reporting Services sur deux ordinateurs distincts, vous deviez disposer de deux licences SQL Server distinctes:
http://social.msdn.Microsoft.com/forums/en-US/sqlgetstarted/thread/82dd5acd-9427-4f64-aea6-511f09aac406/

Vous pouvez Bing consulter d'autres blogs et publications similaires concernant les licences de Reporting Services.

7
Shawn Eary

Si vous disposez d'une infrastructure de services de rapport, utilisez-la. Vous trouverez le développement de RDL un peu plus agréable. Vous pouvez prévisualiser le rapport, configurer facilement les paramètres, etc.

7
Kevin Fisher

Pour VS2008, je pense que RDL vous offre de meilleures fonctionnalités d’édition que RDLC. Par exemple, je peux changer le gras en fonction de la quantité de texte sélectionnée dans une zone de texte avec RDL, alors qu’en RDLC ce n’est pas possible.

RDL: abcd efgh ijklmnop

RDLC: abcd efgh ijklmnop -ou- abcd efgh ijklmnop (sont vos seules options)

En effet, RDLC utilise un espace de noms/formatage antérieur à 2005, alors que RDL utilise 2008. Cela changera toutefois avec VS2010.

2
avgbody

Si nous avons moins de rapports qui sont moins complexes et utilisés par les pages Web asp.net. Il vaut mieux utiliser rdlc, car nous pouvons éviter de maintenir des rapports sur une instance de RS. mais nous devons récupérer les données de la base de données manuellement et les lier à rdlc.

Inconvénients: concevoir rdlc dans Visual Studio est un peu difficile par rapport au concepteur SSRS.

Pro: La maintenance est facile. lors de l’exportation du rapport à partir de la page Web, nous avons observé une amélioration des performances par rapport aux rapports côté serveur.

1
WingsOfFire