Kapan menggunakan RDLC di atas laporan RDL?

117

Saya telah mempelajari SSRS 2005/2008 dalam beberapa minggu terakhir dan telah membuat beberapa laporan sisi server. Untuk beberapa aplikasi, seorang kolega menyarankan agar saya melihat RDLC untuk situasi tertentu itu. Sekarang saya mencoba memahami perbedaan utama antara RDL dan RDLC.

Mencari informasi ini paling baik menghasilkan informasi yang terfragmentasi. Saya telah belajar bahwa:

  • Laporan RDLC tidak menyimpan informasi tentang cara mendapatkan data.
  • Laporan RDLC dapat dijalankan langsung oleh kontrol ReportViewer.

Tetapi saya masih belum sepenuhnya memahami hubungan antara file RDLC dan sistem terkait lainnya (Server Pelaporan, database sumber, klien).

Untuk mendapatkan pemahaman yang baik tentang file RDLC, saya ingin tahu bagaimana penggunaannya berbeda dari file RDL dan dalam situasi apa seseorang akan memilih RDLC daripada RDL. Tautan ke sumber daya juga diterima.

Memperbarui:

Sebuah utas di forum ASP.NET membahas masalah yang sama ini. Dari situ, saya mendapatkan pemahaman yang lebih baik tentang masalah ini.

Fitur RDLC adalah dapat dijalankan sepenuhnya di sisi klien dalam kontrol ReportViewer.

  • Ini menghilangkan kebutuhan akan instance Reporting Services, dan bahkan menghilangkan kebutuhan untuk koneksi database apa pun, tetapi:
  • Ini menambahkan persyaratan bahwa data yang diperlukan dalam laporan harus disediakan secara manual.

Apakah ini keuntungan atau kerugian tergantung pada aplikasi tertentu.

Dalam aplikasi saya, sebuah contoh Layanan Pelaporan tetap tersedia dan data yang diperlukan untuk laporan dapat dengan mudah ditarik dari database. Apakah ada alasan tersisa bagi saya untuk mempertimbangkan RDLC, atau haruskah saya tetap menggunakan RDL?

Daan
sumber

Jawaban:

84

Dari pengalaman saya, ada beberapa hal yang perlu dipikirkan tentang kedua hal tersebut:

I. Laporan RDL adalah laporan HOSTED secara umum. Ini berarti Anda perlu mengimplementasikan SSRS Server. Mereka adalah ekstensi yang dibangun di Visual Studio dari SQL Server untuk bahasa pelaporan. Saat Anda menginstal SSRS, Anda harus memiliki add on yang disebut 'Business Intelligence Development Studio' yang lebih mudah untuk bekerja dengan laporan daripada tanpa itu.

R eport

D efinisi

L angauge

Manfaat laporan RDL:

  1. Anda dapat menghosting laporan di lingkungan yang memiliki layanan yang berjalan untuk Anda.
  2. Anda dapat mengonfigurasi keamanan pada item atau level pewarisan untuk menangani keamanan sebagai konsep mandiri
  3. Anda dapat mengonfigurasi layanan untuk mengirim email (asalkan Anda memiliki server SMTP yang dapat Anda akses) dan menyimpan file sesuai jadwal
  4. Anda memiliki database yang umumnya disebut 'ReportServer', Anda dapat meminta info tentang laporan setelah diterbitkan.
  5. Anda masih dapat mengakses laporan ini melalui 'ReportViewer' dalam aplikasi klien yang ditulis dalam ASP.NET, WPF (dengan kontrol winform bleh!), Atau Winforms di .NET menggunakan 'ProcessingMode.Remote'.
  6. Anda dapat mengatur parameter yang dapat dilihat dan digunakan pengguna untuk mendapatkan lebih banyak fleksibilitas.
  7. Anda dapat mengonfigurasi bagian laporan yang akan digunakan untuk string koneksi sebagai 'Sumber Data' serta kueri sql, xml, atau kumpulan data lain sebagai 'Set Data'. Bagian-bagian ini dan lainnya dapat disimpan dan dikonfigurasikan ke cache data secara teratur.
  8. Anda dapat menulis kelas proxy .NET dari layanan http: // / ReportServer / ReportingService2010 atau / ReportExecution2005. Anda kemudian dapat membuat metode SENDIRI di .NET untuk mengirim email, menyimpan, atau memanipulasi data SSRS dari layanan secara langsung Server yang menghosting laporan SSRS dalam kode. Ekspor laporan SSRS secara terprogram dari sharepoint menggunakan ReportService2010.asmx

Kerugian:

  1. SSRS adalah jenis menangkey dibandingkan dengan hal lain untuk mendapatkannya dengan cepat. Kebanyakan orang menjadi bingung dengan kebijakan keamanan dan merancang laporan sebagai 'tambahan' untuk VS. SQL 2005 = VS BIDS 2005, SQL 2008 = VS BIDS 2008, SQL 2012 = VS BIDS 2010 (LOL).
  2. Melanjutkan 1 kebijakan untuk pengaturan keamanan IMHO secara idiot terlalu rumit. Ada keamanan server, keamanan database dan peran, dua pengaturan keamanan pada halaman yang dihosting untuk layanan tersebut. Kebanyakan orang hanya mengatur admin daripada tidak bisa masuk dan bertanya-tanya mengapa pengguna lain tidak bisa. Keluhan atau pertanyaan paling umum tentang SSRS terkait dengan masuk secara umum dari pengalaman saya.
  3. Anda dapat menggunakan 'ekspresi' yang seharusnya akan 'meningkatkan' laporan Anda. Seringkali Anda melakukan lebih dari sedikit dan laporan Anda mengalami penurunan kinerja.
  4. Anda memiliki sejumlah hal yang dapat Anda lakukan dan ekspor. SSRS tidak memiliki laporan hover over yang saya tahu tanpa javascript hack.
  5. Kecepatan dan kinerja dapat terpukul karena konfigurasi SSRS yang bodoh mendaur ulang sistem dan laporan pertama dapat memakan waktu cukup lama pada saat hanya memuat situs. Anda dapat menyiasati ini dengan mengubahnya tetapi saya telah menemukan membuat layanan tetap hidup agar berfungsi lebih baik.

II. Laporan RDLC adalah laporan CLIENT CONTAINED yang TIDAK DIBAWAH DI MANA SAJA. C ekstra dalam nama berarti 'Klien'. Umumnya ini adalah ekstensi dari bahasa RDL yang dimaksudkan untuk digunakan hanya dalam Aplikasi Klien Visual Studio. Itu ada di Visual Studio ketika Anda menambahkan item 'pelaporan'.

Manfaat laporan RDLC:

  1. Anda dapat menghubungkan layanan wcf dengan lebih mudah ke kumpulan data.
  2. Anda memiliki kontrol lebih besar atas kumpulan data dan dapat menggunakan kelas POCO yang diisi dengan objek kerangka kerja Entitas atau ADO.NET secara langsung serta tabel itu sendiri. Anda dapat menggunakan data untuk pengoptimalan sebelum mengikatnya ke laporan.
  3. Anda dapat menyesuaikan tampilan lebih banyak dengan pengaya langsung di kode di belakang.

Kerugian:

  1. Anda perlu menangani parameter sendiri dan sementara Anda dapat menerapkan metode pembungkus untuk membantu kerja keras sedikit lebih dari yang diharapkan dan disayangkan.
  2. Pengguna tidak dapat MELIHAT parameter dalam kontrol 'ReportViewer' kecuali dalam mode jarak jauh dan mengakses laporan RLD. Jadi, Anda perlu membuat kotak teks, dropdown, tombol radio sendiri di luar kendali untuk meneruskannya. Beberapa orang seperti ini menambahkan kontrol, saya tidak secara pribadi.
  3. Apa pun yang ingin Anda lakukan dengan melayani laporan untuk distribusi, Anda perlu membangunnya sendiri. Mengirim email, berlangganan, menyimpan. Maaf, Anda perlu membangunnya di .NET atau menerapkan proxy yang sudah melakukan itu dari atas, Anda bisa saja menggunakan laporan yang dihosting.

Jujur saya suka keduanya untuk tujuan yang berbeda. Jika saya ingin sesuatu untuk analis yang mereka gunakan sepanjang waktu dan tweak untuk grafik, bagan, menelusuri dan ekspor ke Excel saya menggunakan RDL dan hanya situs SSRS yang melakukan semua kerja keras menangani distribusi email. Jika saya menginginkan aplikasi yang memiliki bagian laporan dan saya tahu bahwa aplikasi itu adalah modul itu sendiri dengan aturan dan tata kelola, saya menggunakan RDLC dan memiliki parameter yang lebih kecil dan didorong oleh keputusan yang dibuat pengguna sebelum sampai ke bagian laporan dari apa klien tempat mereka berada dan situs dan kemudian mereka biasanya hanya memilih kerangka waktu atau jenis dan tidak lebih. Jadi umumnya laporan yang kompleks saya akan menggunakan RDL dan untuk sesuatu yang sederhana saya akan menggunakan RDLC IMHO.

Saya harap itu membantu.

djangojazz.dll
sumber
57

T: Apa perbedaan antara format RDL dan RDLC?

J: File RDL dibuat oleh versi SQL Server 2005 Report Designer. File RDLC dibuat oleh versi Visual Studio 2008 dari Report Designer.

Format RDL dan RDLC memiliki skema XML yang sama. Namun, dalam file RDLC, beberapa nilai (seperti teks kueri) dibiarkan kosong, yang berarti nilai tersebut tidak segera siap untuk diterbitkan ke Server Laporan. Nilai yang hilang dapat dimasukkan dengan membuka file RDLC menggunakan versi SQL Server 2005 dari Desainer Laporan. (Anda harus mengganti nama .rdlc menjadi .rdl terlebih dahulu.)

File RDL sepenuhnya kompatibel dengan runtime kontrol ReportViewer. Namun, file RDL tidak berisi beberapa informasi yang bergantung pada waktu desain kontrol ReportViewer untuk membuat kode pengikat data secara otomatis. Dengan mengikat data secara manual, file RDL dapat digunakan dalam kontrol ReportViewer. Baru! Lihat juga program contoh RDL Viewer.

Perhatikan bahwa kontrol ReportViewer tidak berisi logika apa pun untuk menyambungkan ke database atau menjalankan kueri. Dengan memisahkan logika tersebut, ReportViewer telah dibuat kompatibel dengan semua sumber data, termasuk sumber data non-database. Namun ini berarti bahwa ketika file RDL digunakan oleh kontrol ReportViewer, informasi terkait SQL di file RDL diabaikan begitu saja oleh kontrol. Ini adalah tanggung jawab aplikasi host untuk menyambung ke database, menjalankan kueri dan menyediakan data ke kontrol ReportViewer dalam bentuk ADO.NET DataTables.

http://www.gotreportviewer.com/

Matthew Lock
sumber
Dapatkah saya menggunakan objek kustom ( List<T>dari MyEntity) sebagai sumber Laporan Jarak Jauh ( RDL ), bukan RDLC ?
Kiquenet
21

Saya selalu berpikir perbedaan antara RDL dan RDLC adalah bahwa RDL digunakan untuk SQL Server Reporting Services dan RDLC digunakan di Visual Studio untuk pelaporan sisi klien. Pelaksanaan dan editornya hampir identik. RDL adalah singkatan dari Report Defintion Languagedan RDLC Report Definition Language Client-side .

Saya harap itu membantu.

Nyamuk Mike
sumber
3
Saya tidak bisa memahami bagian 'sisi klien', sampai saya menyadari bahwa dengan RDLC dimungkinkan (bahkan diperlukan) untuk memberikan data secara manual ke laporan, tanpa memaksa koneksi ke beberapa database.
Daan
16

Dari pengalaman saya, jika Anda membutuhkan kinerja tinggi (ini sedikit bergantung pada spesifikasi klien Anda) pada laporan besar, gunakan rdlc. Selain itu, laporan rdlc memberi Anda kendali penuh atas data Anda, Anda mungkin dapat menghemat perjalanan database yang sia-sia, dll. Dengan menggunakan laporan sisi klien. Pada proyek yang sedang saya kerjakan, laporan kritis membutuhkan sekitar 2 menit untuk dirender di sisi server, dan cukup banyak mengambil server pelaporan mana pun yang terkena saat itu. Mengalihkannya ke rendering sisi klien, kami melihat performa lebih mendekati 20-40 detik tanpa beban di server laporan dan lebih sedikit bandwidth yang digunakan karena hanya kumpulan data yang diunduh.

Jarak tempuh Anda mungkin berbeda, dan menurut saya rdlc menambah kompleksitas pengembangan dan pemeliharaan, terutama bila laporan Anda telah dirancang sebagai laporan sisi server.

marr75
sumber
Saya berpikir di sini akan lebih baik, terkait kinerja, untuk meletakkan laporan RDL di server jauh dengan Layanan Pelaporan berjalan. Anda tidak perlu memperbarui setiap workstation pelanggan Anda (Anda hanya perlu memperbarui satu laporan di satu situs saja). Ada kebocoran memori pada versi 2005 dan beberapa bug minor yang tampaknya dihindari saat menggunakan layanan pelaporan.
Junior Mayhé
1
Saya tidak yakin apa yang Anda coba katakan. Kami sudah menemukan kinerja terbaik menggunakan pelaporan sisi klien. RDL di server jauh merupakan hambatan besar bagi kami.
marr75
2
Ini sangat bergantung pada a) kemampuan pemrosesan relatif dari server laporan dan b) apakah kontrol penampil laporan Anda dikonfigurasi untuk pemrosesan lokal atau jarak jauh. Dengan menggunakan kontrol penampil laporan dalam mode pemrosesan lokal, Anda mentransfer pekerjaan pemrosesan laporan ke klien, yang mungkin bermanfaat dalam situasi di mana server laporan tidak memiliki kapasitas untuk menangani beban kerja (misalnya jika ada banyak klien). Namun server laporan dengan spesifikasi yang cukup baik seharusnya dapat menangani sebagian besar beban kerja laporan. Hambatan lain dapat berupa desain laporan / kueri dan sumber data.
Nathan Griffiths
1
Pada saat saya menjawab ini, laporan sisi server tidak menangani pengguna secara bersamaan dengan sangat baik, pada dasarnya hanya menangani satu permintaan pada satu waktu (saya akan sangat terkejut jika ini telah ditingkatkan sama sekali). Selain itu, di lingkungan kita (dan banyak lainnya yang harus saya asumsikan) rendering laporan adalah detail yang sangat kecil dibandingkan dengan pekerjaan yang dilakukan oleh server database. Laporan sisi klien memberi kami lebih banyak kendali atas aspek konkurensi aplikasi. Namun, itu menambah kompleksitas tambahan pada sistem. Jadi, ini adalah keputusan teknik yang harus dibuat.
marr75
@ marr75 - Skala Server vs Klien berbeda. Dengan sisi server, Anda kemungkinan besar akan menemui jalan buntu saat Anda mempekerjakan 25 karyawan dan mereka semua masuk ke server sekaligus. Dengan sisi klien, ke-25 orang tersebut mendapatkan PC mereka sendiri untuk membantu memikul beban, jadi Anda tidak boleh menabrak tembok bata sama sekali - seiring pertumbuhan perusahaan Anda, solusi sisi server memerlukan lebih banyak pengasuhan anak. Meskipun demikian, Anda dapat lebih mengoptimalkan server, dan itu hanya perlu dilakukan di satu tempat - saya pikir membuat indeks yang tepat - melibatkan DBA Anda. Preferensi saya adalah menggunakan sisi klien, tetapi optimalkan keduanya untuk performa maksimal!
MicroservicesOnDDD
11

Beberapa poin ini telah dibahas di atas, tapi inilah 2-sen saya untuk lingkungan VS2008.

RDL (Laporan jarak jauh): Pengalaman pengembangan yang jauh lebih baik, lebih banyak fleksibilitas jika Anda perlu menggunakan beberapa fitur lanjutan seperti penjadwalan, pelaporan ad-hoc, dll ...

RDLC (Laporan lokal): Kontrol yang lebih baik atas data sebelum mengirimnya ke laporan (lebih mudah untuk memvalidasi atau memanipulasi data sebelum mengirimnya ke laporan). Penerapan jauh lebih mudah, tidak perlu contoh Layanan Pelaporan.

Satu peringatan BESAR dengan laporan lokal adalah kebocoran memori yang diketahui yang dapat sangat mempengaruhi kinerja jika klien Anda akan menjalankan banyak laporan besar. Ini seharusnya diatasi dengan versi VS2010 dari penampil laporan.

Dalam kasus saya, karena kami memiliki contoh Layanan Pelaporan yang tersedia, saya mengembangkan laporan baru sebagai RDL dan kemudian mengonversinya menjadi laporan lokal (yang mudah) dan menerapkannya sebagai laporan lokal.

Harrison
sumber
7

Jika Anda memiliki infrastruktur layanan pelaporan yang tersedia untuk Anda, gunakanlah. Anda akan menemukan pengembangan RDL menjadi sedikit lebih menyenangkan. Anda dapat melihat pratinjau laporan, mengatur parameter dengan mudah, dll.

Kevin Fisher
sumber
7

Sementara saya saat ini condong ke RDL karena tampaknya lebih fleksibel dan lebih mudah dikelola, RDLC memiliki keunggulan karena tampaknya menyederhanakan lisensi Anda. Karena RDLC tidak memerlukan instans Layanan Pelaporan, Anda tidak memerlukan Lisensi Layanan Pelaporan untuk menggunakannya.

Saya tidak yakin apakah ini masih berlaku dengan versi SQL Server yang lebih baru, tetapi pada satu waktu jika Anda memilih untuk meletakkan contoh SQL Server Database dan Reporting Services di dua mesin terpisah, Anda diminta untuk memiliki dua lisensi SQL Server yang terpisah:
http://social.msdn.microsoft.com/forums/en-US/sqlgetstarted/thread/82dd5acd-9427-4f64-aea6-511f09aac406/

Anda dapat menggunakan Bing untuk blog dan posting serupa lainnya tentang lisensi Layanan Pelaporan.

Shawn Eary
sumber
3
Lisensi SQL Server masih mengharuskan Anda memiliki lisensi untuk setiap mesin yang memiliki komponen SQL Server yang diinstal. Oleh karena itu, penyebaran skala di mana database server laporan berada di server yang berbeda ke layanan server laporan memerlukan lisensi terpisah untuk setiap server.
Nathan Griffiths
2

Untuk VS2008, saya yakin RDL memberi Anda fitur pengeditan yang lebih baik daripada RDLC. Misalnya, saya dapat mengubah Bold pada jumlah teks yang dipilih di textbox dengan RDL, sedangkan di RDLC tidak mungkin.

RDL: abcd efgh ijklmnop

RDLC: abcd efgh ijklmnop -atau- abcd efgh ijklmnop (adalah satu-satunya pilihan Anda)

Ini karena RDLC menggunakan namespace / pemformatan sebelumnya dari 2005, sedangkan RDL menggunakan 2008. Namun ini akan berubah dengan VS2010

avgbody
sumber
4
Ini bukan karena perbedaan antara rdl dan rdlc, ini adalah perbedaan antara layanan pelaporan server sql 2005 dan 2008. Penampil laporan yang dapat didistribusikan ulang, yang tertinggal di belakang pengembangan server sql, mendukung pelaporan sisi klien, kelambatan ini adalah alasan perbedaan Anda sedang menjelaskan.
marr75
1
karena banyaknya bug, saya bermigrasi dari 2005 (RDLC) ke 2008 Reporting Services (RDL)
Junior Mayhé
1

Jika kami memiliki lebih sedikit jumlah laporan yang tidak terlalu rumit dan dikonsumsi oleh halaman web asp.net. Lebih baik menggunakan rdlc, alasannya adalah kita dapat menghindari pemeliharaan laporan pada instance RS. tetapi kita harus mengambil data dari DB secara manual dan mengikatnya ke rdlc.

Kekurangan: mendesain rdlc di studio visual agak sulit dibandingkan dengan desainer SSrs.

Pro: Perawatannya mudah. saat mengekspor laporan dari halaman we, mengamati bahwa peningkatan kinerja dibandingkan dengan laporan sisi server.

WingsOfFire
sumber
-3

Jika Anda ingin menggunakan report di asp.net maka gunakan .rdl jika Anda ingin menggunakan / view di report builder / report server maka gunakan .rdlc hanya dengan mengonversi format secara manual sudah berfungsi

mahendramaid
sumber
Tampaknya RDL dan RDLC bertukar di mana mereka dijalankan - dan bahkan jika tidak, ini tidak akan menambahkan sesuatu yang berguna ke puluhan jawaban yang ada.
underscore_d
rdlc adalah ekstensi untuk pelaporan lokal, Anda dapat menggunakan aspnet, winforms atau wpf. msdn.microsoft.com/es-es/library/ms252104.aspx . Anda tidak dapat menggunakan file .rdlc dalam mode pemrosesan jarak jauh
dgzornoza