Intgration d'outils de reporting externes avec la platefore .!"# Livre Blanc : Intgration d'outils de reporting externes avec la plateforme .NET $%MM&I'" 1 I!#'%()*#I%! "# %B+"*#I,$.......................................................................- 2 ./!/'&#I%! (" 0(, &V"* .!"#...............................................................1 2.1 Introduction....................................................................................................................... 2.2 !olutions existantes.......................................................................................................... 2." #omparaison des diffrentes solutions.............................................................................. 2. $rc%itecture d'I&ex' $()# et N*)(....................................................................................+ 2.+ Emploi d'$()# et N*)( avec .NET....................................................................................., 2., Emploi de -.L(/* avec .NET..........................................................................................11 - L"$ $%L)#I%!$ (" BI &V"* .!"#.............................................................1- ".1 Intgration de #r0stal 1eports avec .NET........................................................................1" ".2 Intgration de !2L !erver 1eporting !ervice et .NET......................................................1, (age 2314 Livre Blanc : Intgration d'outils de reporting externes avec la plateforme .NET 1 I!#'%()*#I%! "# %B+"*#I,$ #ette tude recense les principales solutions permettant d'effectuer du reporting externe sur la plateforme .NET. L'tude se dcompose en deux parties : la premi5re s'intresse 6 la gnration de documents (/* 7 la seconde s'articule autour de l'intgration dans .NET de solutions de Business Intelligence 8BI9. (our c%acune de ces deux pro&lmati:ues' les principales solutions du marc% sont tudies et des exemples simples et concrets sont prsents. Nous avons volontairement cart de notre tude les solutions de .icrosoft 8BI ; 1eporting !ervices9' :ui ne s'int5grent :u'avec des outils .icrosoft. A contrario' les solutions prsentes ici sont des solutions tierces :ui permettent d'effectuer du reporting dans des environnement %trog5nes. (age "314 Livre Blanc : Intgration d'outils de reporting externes avec la plateforme .NET 2 ./!/'&#I%! (" 0(, &V"* .!"# 2.1 Introduction Il existe diffrents outils' plus ou moins complexes' pour la gnration de documents (/* 6 l<aide de .Net. #ette partie prsente les principales solutions et ta&lit un comparatif sur :uel:ues crit5res simples. #e document indi:ue galement comment emplo0er les diffrentes $(I disponi&les en .Net et propose des illustrations concr5tes. 2.2 $olutions existantes Il existe diffrentes &i&liot%5:ues permettant de gnrer des documents (/* avec .Net. )n peut notamment remar:uer : -.L(/* =>I! 2??+' %ttp:33@@@.xmlpdf.com3A I&ex =>I! 2??+&' %ttp:33@@@.xmlpdf.com3A $()# =#BI 2??+' %ttp:33@@@.c%ive.com3A N*)( =(ET 2??+' %ttp:33sourceforge.net3proCects3nfopA Les li&rairies -.L(/* et $()# ont t dveloppes en #D' alors :ue N*)( est crit en ED. N*)( ncessite donc' en plus de >isual !tudio' l<installation de .icrosoft >isual ED .NET >ersion 1.1 =.I# 2??+A. #%acune de ces :uatre &i&liot%5:ues est disponi&le dans une assembly autonome : xmlpdf.dll pour -.L(/* I&ex.dll pour I&ex #%ive.$poc.dll pour $()# $pac%e*op.Net.dll pour N*)( #%acun de ces :uatre outils permet de gnrer des fic%iers (/* en incluant des r5gles de mise en forme pousses. -.L(/* et $()# sont distri&us sous forme de fic%iers .!I directement installa&les' :ui contiennent la &i&liot%5:ue rec%erc%e. 2.- *oparaison des diffrentes solutions Le ta&leau comparatif suivant prsente les grandes diffrences entre ces :uatre solutions : (age 314 Livre Blanc : Intgration d'outils de reporting externes avec la plateforme .NET 2ML0(, I3ex &0%* !,%0 !implicit (ossi&ilits /ocumenF Ftation !>G *ormats d<images gif' Cpeg' png' svg &mp' Cpeg' png' svg' tiff &mp' emf' gif' icon' Cpeg' png' tiff' @mf &mp' eps' gif' Cpeg' png' svg' tiff /LL xmlpdf.dll I&ex.dll #%ive.$poc.dll $pac%e*op.Net.dll (1I- HI4+3dveloppeur 8environ ,J?K3dveloppeur9 HI4+3dveloppeur 8environ ,J?K3dveloppeur9 LI443dveloppeur 8environ 11I+K3dveloppeur9 Gratuit 8openFsource' licence $pac%e9 I&ex' $()# et N*)( proposent des solutions asseM complexes' emplo0ant -!LF*)' -.L(/* s<appuie sur un voca&ulaire -.L simple' proc%e de BT.L. Les possi&ilits offertes par I&ex' $()# et N*)( sont donc plus intressantes :ue celles' limites' de -.L(/*' mais elles induisent une complexit &ien plus leve. 2.1 &rc4itecture d'I3ex5 &0%* et !,%0 2.4.1 Introduction $()# et N*)( sont tous deux des ports du proCet *)( de la fondation $pac%e =$($ 2??+A. *)( est une application Eava :ui utilise un o&Cet de mise en forme -!L 8un document -!LF*)9 et la transforme en un document (/*. #e fic%ier -!LF*) doit au prala&le Ntre produit par un processeur -!LT' 6 partir d<un fic%ier de donnes -.L et d<une feuille de st0le -.L 8fic%ier -!L9. 2.4.2 Schma (age +314 Livre Blanc : Intgration d'outils de reporting externes avec la plateforme .NET 2.4.3 Intrts de XSL-FO Gnr par le processeur -!LT' -!LF*) permet au dveloppeur de clairement sparer la mise en forme de ses documents du cOur de son application. $insi' un c%angement dsir dans le formatage des fic%iers (/* gnrs par l<application pourra se faire en modifiant simplement la feuille -!L. Les avantages sont donc multiples : volutivit plus aise de l<application 7 rapidit de dveloppement et de modification 7 dissociation du cOur applicatif et des contraintes de prsentation. #eci dit' l<emploi de -!LF*) demeure tr5s complexe' car il suppose la maPtrise de -!L et une &onne connaissance du voca&ulaire de *). Le langage de &alisage emplo0 par -.L(/*' par contre' est plus simple 6 manipuler' mais ncessite le recours 6 un langage Q maison R propre 6 cette solution : cela signifie notamment :ue' si un Cour le produit n<tait plus maintenu' l<ensem&le des fic%iers -.L3-!L serait 6 rcrire. 2.6 "ploi d'&0%* et !,%0 avec .!"# Lors:ue la feuille -!LT de transformation du document -.L initial est crite' le dveloppeur peut directement faire appel aux fonctionnalits des &i&liot%5:ues #%ive.$poc.dll ou $pac%e*op.Net.dll pour gnrer le document (/* dsir. 2.5.1 Empoi de !"#I "#O$ ApocDriver driver = ApocDriver.Make(); driver.SetRenderer(RendererEngine.PDF); try { driver.Render( new StringReader(input.oString())! new Fi"eStrea#(Server.MapPat$(%#yDocu#ent.pd&%)! Fi"eMode.'reate)); Re(pon(e.Redirect(Server.MapPat$(%#yDocu#ent.pd&%)! true); ) catc$ { Re(pon(e.*rite(%Error *it$ PDF Fi"e 'reation%); ) 2.5.2 Empoi de !"#I %FO# pu+"ic void ran(&or#( (tring ,#"docFo! (tring (trFi"ena#e ) { -- Run t$e &u"" F. doc t$roug$ t$e engine to create a pd& Engine e = new Engine(); try { (+yte/0 (Pd& = e.Run(,#"docFo); int (1 = (Pd&.2engt$; (age ,314 Livre Blanc : Intgration d'outils de reporting externes avec la plateforme .NET Re(pon(e.*rite((1.oString()); +yte/0 pd& = new +yte/(10; &or(int i=3; i4(1; i55) pd&/i0 = (+yte) (Pd&/i0; --*rite output &i"e Fi"eStrea# &( = new Fi"eStrea#(Server.MapPat$((trFi"ena#e)! Fi"eMode.'reate); 6inary*riter (w = new 6inary*riter(&(); (w.*rite(pd&); (w.'"o(e(); &(.'"o(e(); ) catc$(E,ception &e) { Re(pon(e.*rite(%Pro+"e# in ran(&or# &unction%); ) ) ran(&or#(input.oString()! %#yDocu#ent.pd&%); Re(pon(e.Redirect(Server.MapPat$(%#yDocu#ent.pd&%)! true); 2.5.3 "#I X&L en .%E' $ l<aide de l<o&Cet -slTransform de l<$(I #D' le dveloppeur peut aisment manipuler des fic%iers -.L. (ar exemple' un simple appel aux mt%odes 2oad() et ran(&or#()permet d<o&tenir un document -!LF*) 6 partir du document -.L initial et de la feuille -!L. La mt%ode 7et8#"() peut galement Ntre utilise pour crer un document -.L 6 partir d<un /ataset. 2.5.4 Schma XS( Les sc%mas -.L 8fic%iers .-!/9 sont des documents -.L :ui permettent de dcrire le t0pe et la signification des donnes continues dans un document -.L. #<est pour:uoi' dans les exemples suivants' un sc%ma -.L a t crit' introduisant ainsi la possi&ilit de validation -.L. #eci dit' ce sc%ma -.L n<est pas ncessaire 6 l<emploi de N*)( ou $()#. 2.5.5 E)empes #ette partie donne deux exemples de l<emploi des $(I $()# et N*)(. Le second exemple permet de gnrer un document sur deux pages' avec une image intgre 6 la deuxi5me page. Les $(I sont gnralement livres avec des excuta&les S en ligne de commande ou non S :ui permettent de gnrer le document -.L sans passer par l<$(I .Net. #ela peut Ntre prati:ue pour' par exemple' vrifier la validit des documents -.L avant la p%ase de dveloppement .Net. (age I314 Livre Blanc : Intgration d'outils de reporting externes avec la plateforme .NET a7 "xeple siple Fichier XML 4doc9 4c$apter9 4tit"e9'$apter tit"e4-tit"e9 4paragrap$9Fir(t paragrap$4-paragrap$9 4paragrap$9Second paragrap$4-paragrap$9 4-c$apter9 4c$apter9 4tit"e9'$apter tit"e4-tit"e9 4paragrap$9:et anot$er paragrap$4-paragrap$9 4paragrap$9.ne #ore paragrap$4-paragrap$9 4-c$apter9 4-doc9 Fichier XSL 4;,#" ver(ion=%<.3% encoding=%ut&=>%;9 4,("?(ty"e($eet ,#"n(?,("=%$ttp?--www.w@.org-<AAA-8S2-ran(&or#% ,#"n(?&o=%$ttp?--www.w@.org-<AAA-8S2-For#at%9 4,("?te#p"ate #atc$=%c$apter%9 4&o?+"ock9 4,("?app"y=te#p"ate(-9 4-&o?+"ock9 4-,("?te#p"ate9 4,("?te#p"ate #atc$=%c$apter-tit"e%9 4&o?+"ock te,t=a"ign=%center% (pace=a&ter=%>pt% (pace=+e&ore=%<Bpt% (pace=a&ter.precedence=%@%9 4,("?app"y=te#p"ate(-9 4-&o?+"ock9 4-,("?te#p"ate9 4,("?te#p"ate #atc$=%paragrap$%9 4&o?+"ock te,t=indent=%3pc% (pace=a&ter=%Cpt% (pace=+e&ore.#ini#u#=%Bpt% (pace=+e&ore.opti#u#=%>pt% (pace=+e&ore.#a,i#u#=%<3pt%9 4,("?app"y=te#p"ate(-9 4-&o?+"ock9 4-,("?te#p"ate9 4-,("?(ty"e($eet9 37 "xeple coplet Fichier XML 4E,a#p"e9 4tit"e9itre ? Si#p"e E,a#p"e *it$ D di&&erent page(4-tit"e9 4aut$or9'"ever Age4-aut$or9 4(ection9 4$eader96eginning o& t$e Second Page4-$eader9 4tit"e9$e Fir(t Page contain an i#age4-tit"e9 4-(ection9 4-E,a#p"e9 (age J314 Livre Blanc : Intgration d'outils de reporting externes avec la plateforme .NET Fichier XSL 4;,#" ver(ion=%<.3% encoding=%EF=>% ;9 4,("?(ty"e($eet ver(ion=%<.3% ,#"n(?,("=%$ttp?--www.w@.org-<AAA-8S2-ran(&or#% ,#"n(?&o=%$ttp?--www.w@.org-<AAA-8S2-For#at%9 4,("?output #et$od=%,#"% indent=%ye(% -9 4,("?te#p"ate #atc$=%-%9 4&o?root ,#"n(?&o=%$ttp?--www.w@.org-<AAA-8S2-For#at%9 4&o?"ayout=#a(ter=(et9 4F== 'over page ==9 4&o?(i#p"e=page=#a(ter #a(ter=na#e=%cover% page=$eig$t=%DA.Cc#% page=widt$=%D<c#% #argin=top=%<c#% #argin=+otto#=%Dc#% #argin="e&t=%D.Gc#% #argin=rig$t=%D.Gc#%9 4&o?region=+ody #argin=top=%Gc#% -9 4-&o?(i#p"e=page=#a(ter9 4F== Page #a(ter &or (ection( ==9 4&o?(i#p"e=page=#a(ter #a(ter=na#e=%(ection% page=$eig$t=%DA.Cc#% page=widt$=%D<c#% #argin=top=%<c#% #argin=+otto#=%Dc#% #argin="e&t=%D.Gc#% #argin=rig$t=%D.Gc#%9 4&o?region=+e&ore e,tent=%<c#%-9 4&o?region=a&ter e,tent=%<c#%-9 4&o?region=+ody #argin=top=%<c#% #argin=+otto#=%<.<c#% -9 4-&o?(i#p"e=page=#a(ter9 4-&o?"ayout=#a(ter=(et9 4,("?app"y=te#p"ate(-9 4-&o?root9 4-,("?te#p"ate9 4,("?te#p"ate #atc$=%E,a#p"e%9 4&o?page=(eHuence #a(ter=re&erence=%cover%9 4&o?e,terna"=grap$ic (rc=%"ogo.gi&%-9 4&o?&"ow &"ow=na#e=%,("=region=+ody%9 4&o?e,terna"=grap$ic (rc=%"ogo.gi&%-9 4&o?+"ock te,t=a"ign=%rig$t% &ont=(i1e=%DIpt%9 4,("?va"ue=o& (e"ect=%tit"e%-9 4-&o?+"ock9 4&o?+"ock te,t=a"ign=%rig$t% &ont=(i1e=%<Ipt% (pace=a&ter=%<c#%9 4,("?va"ue=o& (e"ect=%aut$or%-9 4-&o?+"ock9 4-&o?&"ow9 4-&o?page=(eHuence9 (age 4314 Livre Blanc : Intgration d'outils de reporting externes avec la plateforme .NET 4,("?app"y=te#p"ate(-9 4-,("?te#p"ate9 4,("?te#p"ate #atc$=%(ection%9 4&o?page=(eHuence #a(ter=re&erence=%(ection% initia"=page=nu#+er=%D%9 4&o?(tatic=content &"ow=na#e=%,("=region=+e&ore%9 4&o?+"ock &ont=(i1e=%<3pt% te,t=a"ign=%center%9 4,("?va"ue=o& (e"ect=%$eader%-9 4&o?"eader "eader=pattern=%ru"e% ru"e=t$ickne((=%3.Gpt% "eader="engt$=%<33J% co"or=%+"ack%-9 4-&o?+"ock9 4-&o?(tatic=content9 4&o?(tatic=content &"ow=na#e=%,("=region=a&ter%9 4&o?+"ock &ont=(i1e=%<3pt% te,t=a"ign=%rig$t%9 Page 4&o?page=nu#+er -9 4-&o?+"ock9 4-&o?(tatic=content9 4&o?&"ow &"ow=na#e=%,("=region=+ody%9 4&o?+"ock te,t=a"ign=%"e&t% &ont=(i1e=%<>pt% (pace=a&ter=%<c#%9 4,("?va"ue=o& (e"ect=%tit"e%-9 4-&o?+"ock9 4&o?+"ock9 $e i#age ( 4&o?e,terna"=grap$ic widt$=%<33pt% $eig$t=%C3pt% (rc=%"ogo.gi&% -9 ) 4-&o?+"ock9 4-&o?&"ow9 4-&o?page=(eHuence9 4-,("?te#p"ate9 4-,("?(ty"e($eet9 Fichier XSD 4;,#" ver(ion=%<.3% encoding=%ut&=>%;9 4,(d?(c$e#a ,#"n(?,(d=%$ttp?--www.w@.org-D333-<3-8M2Sc$e#a%9 4,(d?e"e#ent na#e=%tit"e% type=%,(d?(tring%9 4,(d?e"e#ent na#e=%aut$or% type=%,(d?(tring%-9 4,(d?e"e#ent na#e=%$eaderK type=%,(d?(tring%-9 4-,(d?(c$e#a9 (age 1?314 Livre Blanc : Intgration d'outils de reporting externes avec la plateforme .NET Rsultat : Fichier PDF 2.6 "ploi de 2ML0(, avec .!"# 2.*.1 Empoi de !"#I X&L#(F L<emploi de l<$(I -.L(/* est extrNmement simple. La s:uence suivante gn5re un fic%ier m0/ocument.pdf 6 partir du document -.L m0!ample.xml : PDFDocu#ent doc = new PDFDocu#ent(); doc.generate(%#ySa#p"e.,#"%! %#yDocu#ent.pd&%); (age 11314 Livre Blanc : Intgration d'outils de reporting externes avec la plateforme .NET 2.*.2 "xeple simpe L<exemple suivant' asseM simple' permet de gnrer un fic%ier (/* contenant une mNme image affic%e en diffrentes tailles. Fichier XML 4;,#" ver(ion=%<.3% encoding=%ut&=>% ;9 4docu#ent9 4i#age(94i#age &i"e=na#e=L+ird.MpgL i#age=na#e=L+irdL-94-i#age(9 4+"ock9$e i#age at it( natura" (i1e.4-+"ock9 4($ow=i#age i#age=na#e=L+irdL-9 4+"ock9$e i#age (ca"ed to <33 , <33.4-+"ock9 4($ow=i#age i#age=na#e=L+irdL (ca"e=widt$=L<33L (ca"e=$eig$t=L<33L-9 4+"ock9$e i#age auto#atica""y (ca"ed to &it in a ta+"e ce"".4-+"ock9 4ta+"e widt$(=L@@J!@@J!NL +order=widt$=a""=L<L9 4row9 4ce""-9 4ce""94($ow=i#age i#age=na#e=L+irdL-94-ce""9 4ce""-9 4-row9 4-ta+"e9 4-docu#ent9 Rsultat : Fichier PDF (age 12314 Livre Blanc : Intgration d'outils de reporting externes avec la plateforme .NET - L"$ $%L)#I%!$ (" BI &V"* .!"# /eux solutions sont proposes dans cette tude : #r0stal 1eports de BT!INE!! )BEE#T! 1eporting !ervices de .I#1)!)*T -.1 Intgration de *r8stal 'eports avec .!"# 3.1.1 Introduction 1ac%et en 2??+ par Business )&Cects' #r0stal 1eports =BT! 2??+A est une solution de reporting avance' :ui permet de raliser des rapports et des grap%es complexes 6 partir de diverses sources de donnes : Bases de donnes /ocuments -.L *ormulaires Etc. #e document prsente les principales fonctionnalits de #r0stal 1eports et dtaille l<intgration de #r0stal 1eports 6 .Net : Intgration 6 l<I/E de dveloppement >isual !tudio .Net Gnration de rapports avec .Net #f. %ttp:33@@@.&usinesso&Cects.com3products3reporting3cr0stalreports3 3.1.2 #rsentation de *r8stal +eports a7 0rsentation gnrale de Business %39ects #r0stal 1eports fait partie de la suite Business )&Cects' :ui rpond aux &esoins de pilotage de la performance' de reporting' d'interrogation et d'anal0se' et d'intgration de donnes. #r0stal 1eports permet notamment de gnrer des rapports aux formats )ffice 8Uord' Excel9' (/* ou encore dans le format #r0stal 1eports. #es rapports peuvent intgrer des ta&les de donnes' des grap%es' des statisti:ues croises' etc. Le processus de reporting couvert par #r0stal 1eports concerne l'acc5s aux donnes' leur structuration' leur mise en forme et leur diffusion. La solution #r0stal 1eports se positionne sur l<ensem&le des (age 1"314 Livre Blanc : Intgration d'outils de reporting externes avec la plateforme .NET &esoins lis au reporting. 37 Intgration : Visual $tudio .!"# Il peut Ntre intressant de proposer des rapports en ligne' permettant par exemple aux utilisateurs d'explorer un diagramme et de filtrer les informations :u'il contient en fonction de leurs &esoins. L<ensem&le des informations gres dans un document #r0stal 1eports s<appelle un tat 7 un diagramme d0nami:ue est donc' en fait' un tat #r0stal 1eports :ui interagit avec d<autres contrVles de l'application. L<utilisateur dispose alors de fonctionnalits tr5s interactives' comme par exemple l'exploration de diagrammes' la navigation dans des tats et la rec%erc%e de texte. #r0stal 1eports propose donc une intgration 6 .Net' et est d<ailleurs prsent sur le site .!/N =.I# 2??+&A comme l<outil standard de reporting pour >isual !tudio .Net. Intgre 6 >isual !tudio depuis 144"' #r0stal 1eports propose un niveau lev de possi&ilits en terme de gnration d0nami:ue de grap%es et de rapports. Il est par exemple possi&le' dans >isual !tudio .Net' d<aCouter et de paramtrer grap%i:uement des o&Cets #r0stal 1eports aux Uin*orms 8applications9 comme aux Ue&*orms 8applications Ue&9. L<intgration de #r0stal 1eports dans >isual !tudio .Net est vaste' et ne se limite pas :u<au positionnement d<o&Cets de reporting dans les formulaires. Elle intervient galement au niveau de la liaison des donnes aux o&Cets #r0stal 1eport' et 6 la dfinition des proprits de ces o&Cets. (age 1314 Livre Blanc : Intgration d'outils de reporting externes avec la plateforme .NET 3.1.3 ,nration de rapports a-ec $r.sta +eports et .%E' a7 0rincipe de la gnration d8nai;ue d'un rapport La cration de rapports ou de grap%es avec #r0stal 1eports et .Net ncessite simplement de faire appel 6 l<$(I du produit pour insrer dans le rapport des donnes issues de fic%iers -.L' &ases de donnes ou autres sources de donnes : #r0stal 1eports propose une $(I asseM volue' permettant d<accder aux principales fonctionnalits de #r0stal 1eports depuis .Net' notamment au travers d<o&Cets de la classe #r0stal/ecisions.Uindo@s.*orms.#r0stal1eport>ie@er. 37 "xeple siple L<exemple suivant montre simplement comment crer et affic%er un rapport simple' prsentant des donnes issues d<une &ase !2L : -- 'onne,ion O un (erveur SP2 (tring connectionString = %Provider=SP2.2ED6;%; connectionString 5= %Server=NNNNNNNN;Data+a(e=NNNNNNNNN;%; connectionString 5= %E(er QD=NNNNNNNNN;Pa((word=NNNNNNNN%; -- .uverture dRune conne,ion ado."eD+'onnection = new ."eD+'onnection(connectionString); -- 'on(truction de "a reHuite SP2 (tring (H"String = %Se"ect N Fro# aut$or(%; -- SS"ection de( donnSe( ado."eD+DataAdapter = new ."eD+DataAdapter((H"String! ado."eD+'onnection); -- 'rSation dRun Data(et! re#p"i avec "e( donnSe( i((ue( de "a +a(e -- de "a ta+"e dan( "e Data(et doit Ttre "e #T#e Hue ce"ui de "a ta+"e -- dan( "e rapport 'ry(ta" Report( dataSet = new DataSet(); ado."eD+DataAdapter.Fi""(dataSet! %aut$or(%); // Cration dun Objet Report, et remplissage de celui-ci avec les // donnes du Dataset crReportDocument = ne Cr!stalReport"#$% crReportDocument&'etData'ource#data'et$% // (nsertion du rapport dans la))ic*eur de rapports& Cr!stalReport+ieer"&Report'ource = crReportDocument% (age 1+314 Livre Blanc : Intgration d'outils de reporting externes avec la plateforme .NET 3.1.4 (ocumentation/ support et ressources !i Business )&Cects propose un site de support' l<acc5s 6 la plupart des ressources disponi&les se fait sur a&onnement 8pa0ant9 : %ttp:33support.&usinesso&Cects.com3. -.2 Intgration de $<L $erver 'eporting $ervice et .!"# 3.2.1 Introduction 1eporting !ervice est un composant intgr 6 !2L !erver 8depuis la version 2???9 et il propose : moteur de haute performance pour traiter et mettre en forme les rapports ensemble complet d'outils de cration, de gestion et d'affichage des rapports architecture extensible et interfaces ouvertes pour incorporer les rapports ou intgrer les solutions de cration de rapports dans divers environnements informatiques. $vec !2L !erver 1eporting !ervices' les dveloppeurs informati:ues peuvent intgrer de mani5re transparente les services de rapports 6 une arc%itecture existante :ui inclut diverses sources de donnes' telles :ue !2L !erver' )LE /B' )/B# 8)pen /ata&ase #onnectivit09' )racle ou d'autres fournisseurs de donnes. 3.2.2 #rsentation de &icroso0t +eportin1 Ser-ices a7 0rsentation gnrale #e composant a t aCout afin de rgler les pro&l5mes suivants : Nombre de rapports Nombre de sources Besoins utilisateurs distincts DSI touours sollicites (age 1,314 Livre Blanc : Intgration d'outils de reporting externes avec la plateforme .NET Les caractristi:ues cls de cette solution sont : !apports traditionnels ou interactifs, bass sur le "eb #orte intgration avec les applications $icrosoft %ffice &rend en charge la diffusion 'pull' ou 'push' de rapports (rchitecture de services "eb extensible, pouvant faire face ) une monte en puissance &rise en charge d'%*(&, de S+BD, d'applications mtiers et de nombreuses sources de donnes #acilement grable via les (&I des services "eb et des outils graphiques #ormat de dfinition de rapport en ,$* et document *es vendeurs de solutions peuvent facilement intgrer des fonctions de rapports dans des outils ou des applications Dveloppement graphique de rapports intgr dans -isual Studio .N./ *es formats de rapports incluent 0 les formats "eb 12/$*3 4 les formats d'impression 1&D#,/I##3 4 les formats de donnes 1.xcel,,$*,5S-3 4 d'autres formats sont envisageables via l'(&I. 37 Intgration : Visual $tudio .!"# Le principal man:ue de la solution est l'a&sence d'un outil de cration de rapports intgr... Tne interface vers !2L !erver 1eporting !ervices a t aCoute 6 notre environnement de dveloppement 8>isual !tudio9 pour prendre en c%arge cet lment. .icrosoft 1eporting !ervices est donc totalement intgrer 6 >isual !tudio. >isual !tudio poss5de dlors un t0pe de proCet BI permettant la cration compl5te. >ous pouveM inclure des rapports directement au sein de Uin*orms 8applications9 et de Ue&*orms 8applications Ue&9. Non seulement vous pouveM utiliser les &ases de donnes traditionnelles comme source de donnes mais vous pouveM aussi utiliser des collections d'o&Cets. (age 1I314 Livre Blanc : Intgration d'outils de reporting externes avec la plateforme .NET 3.2.3 ,nration de rapports a-ec S2L +eportin1 Ser-ices et .%E' a7 "xtension de 'eporting $ervices : l'aide de code personnalis L'une des caractristi:ues essentielle de 1eporting !ervice rside dans son extensi&ilit. Il est possi&le d'tendre ou de remplacer prati:uement tous les aspects de 1eporting !ervices' :u'il s'agisse de donnes' de diffusion' de scurit ou des fonctions de gnration de rapports. 37 "criture de code intgr #omme son nom l'indi:ue' le code intgr est enregistr dans le fic%ier de dfinition des rapports 81/L9' et il s'tend au niveau rapport. #e code ne peut Ntre crit :u'en .icrosoft >isual Basic .NET. Tne fois :ue le code est prNt' vous pouveM l'appeler dans les expressions de rapport en utilisant le mem&re *ode dfini glo&alement. (ar exemple' si vous aveM cr une fonction de code intgr appele .etValue' vous pouveM l'appeler dans les expressions avec la s0ntaxe suivante : ='ode.7etUa"ue() (age 1J314 Livre Blanc : Intgration d'outils de reporting externes avec la plateforme .NET 3.2.4 3tiisation d!assem4ies e)ternes La seconde faWon d'tendre des rapports par programmation consiste 6 utiliser la logi:ue prdfinie dans des assem&lies .NET externes :ui peuvent Ntre crites dans n'importe :uel langage pris en c%arge par .NET. La possi&ilit d'intgrer des rapports avec du code personnalis dans des assem&lies externes augmente considra&lement les possi&ilits de programmation. (ar exemple' en utilisant du code personnalis' vous pouveM : /irer profit du eu complet de fonctions de .N./ #rame6or7. Imaginons que vous a8e9 besoin d'une collection pour stoc7er des donnes d'anal8se croise d'une rgion matricielle pour effectuer des calculs. -ous pouve9 : emprunter ; l'une des classes de collection qui accompagnent .N./, par exemple Array, ArrayList, Hashtable, etc. Intgrer vos rapports avec des assemblies .N./ personnalises, crites par vous ou par des fournisseurs tiers. <crire du code plus facilement en exploitant la puissance de l'environnement de dveloppement -isual Studio .N./ plut=t que l'diteur de code rudimentaire. (age 14314