Você está na página 1de 30

Arquitetura em Camadas na Plataforma .

NET

Centro XML Recife


verso 2.1

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

1 de 30

Contedo
1 Introduo........................................................................................................................ 4 2 Plataforma .Net................................................................................................................ 4 2.1 Tecnologias .Net........................................................................................................4 ASP.NET..................................................................................................................... 4 Windows orms........................................................................................................... ! A"#.NET..................................................................................................................... $ %&'............................................................................................................................. $ %&' We( Ser)ices......................................................................................................* A+lica,es m-)eis.......................................................................................................* . Ar/uitetura em 0amadas Pro+osta..................................................................................1 ..1 0amada de A+resentao.........................................................................................2 ..2 0amada de Neg-cio..................................................................................................2 Entidades..................................................................................................................... 2 ac3ada....................................................................................................................... 2 0adastros e controladores.........................................................................................14 0onsidera,es so(re o uso de fac3adas e controladores.........................................14 ... 0amada de Persist5ncia..........................................................................................11 6e+osit-rios............................................................................................................... 11 4 Estudo de caso...............................................................................................................12 4.1 6e/uisitos de instalao..........................................................................................12 4.2 0en7rios.................................................................................................................. 1. ! 0en7rio 18 0adastro.......................................................................................................1. !.1 "escrio geral........................................................................................................1. 96 0A441: Inserir.....................................................................................................14 96 0A442: ;uscar....................................................................................................1! 96 0A44.: Atuali<ar..................................................................................................1$ 96 0A444: E=cluir.....................................................................................................1* !.2 0adastro de 0lientes...............................................................................................1* !.. 0adastro de 0ontas.................................................................................................1* !.4 Pro>eto l-gico...........................................................................................................12 0amada de a+resentao..........................................................................................12 211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh 2 de 30

0amada de neg-cio...................................................................................................24 0amada de +ersist5ncia............................................................................................24 $ 0en7rio 28 Ser)ios........................................................................................................ 24 $.1 "escrio geral.......................................................................................................24 96 SE441: Transfer5ncia entre contas (anc7rias.....................................................24 $.2 Pro>eto l-gico.......................................................................................................... 2. 0amada de a+resentao..........................................................................................24 0amada de neg-cio...................................................................................................24 0amada de +ersist5ncia............................................................................................24 * 0en7rio .8 6elat-rios......................................................................................................24 *.1 "escrio geral........................................................................................................2! 96 6E441: ?isuali<ao de relat-rio de e=trato de conta..........................................2! *.2 Pro>eto l-gico...........................................................................................................2$ 0amada de a+resentao..........................................................................................2* 0amada de neg-cio...................................................................................................2* 0amada de +ersist5ncia............................................................................................2* 1 &ecanismos ar/uiteturais...............................................................................................21 1.1 @erenciamento de Transa,es................................................................................21 &odo Program7tico...................................................................................................21 &odo "eclarati)o.......................................................................................................22 1.2 Singleton..................................................................................................................22 1.. A(stract actorA.......................................................................................................4 2 6efer5ncias.................................................................................................................... .4

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

3 de 30

1 Introduo
Este documento tem o o !eti"o de #$o#o$ uma a$%uitetu$a em camadas utilizando as tecnolo&ias e 'e$$amentas da #lata'o$ma .(E). * documento + di$i&ido a desen"ol"edo$es da #lata'o$ma %ue #$ocu$am uma a$%uitetu$a em camadas aseada em oas #$,ticas da En&enha$ia de -o't.a$e.

2 Plataforma .Net
/ #lata'o$ma .(E) #ode se$ de'inida como um framework %ue su#o$ta #$o&$amao em ",$ias lin&ua&ens0 acom#anhado de uma s+$ie de #$odutos o'e$ecidos #ela Mic$oso't #a$a desen"ol"imento e e1ecuo de a#lica2es. * #$inci#al o !eti"o da a$%uitetu$a .(E) + #e$miti$ ao usu,$io o ',cil acesso a seus a#licati"os e dados em %ual%ue$ lu&a$0 a %ual%ue$ ho$a e usando %ual%ue$ dis#ositi"o. Pa$a conc$etiza$ esta "iso e1istem ",$ios com#onentes0 de se$"ido$es a 'e$$amentas de desen"ol"imento.

2.1 Tecnolo ias .Net


Esta seo a#$esenta um $esumo das #$inci#ais tecnolo&ias da #lata'o$ma .(E).

!"P.N#T
/-P .(E) + uma e"oluo de /-P e tem como o !eti"o a c$iao0 de uma manei$a sim#les e ',cil0 tanto de sites come$ciais de &$ande escala como de #e%uenas a#lica2es #a$a intranet. / #$inci#al 'e$$amenta de desen"ol"imento /-P.(E) + o Mic$oso't 3isual -tudio .(E)0 %ue a#$esenta uma e1celente #$oduti"idade ao #e$miti$ %ue uma inte$'ace .e se!a desenhada at$a"+s de com#onentes "isuais0 da mesma 'o$ma %ue uma inte$'ace 4indo.s 5o$ms. /l+m do 3isual -tudio .(E)0 h, uma 67E &$atuita #a$a desen"ol"imento /-P .(E)0 o 4e Mat$i10 im#lementada em 89 e dis#oni ilizada #ela Mic$oso't. * :uia de 6m#lementao o'e$ece mais detalhes de 67Es #a$a desen"ol"imento /-P.(E). / ai1o so listadas im#o$tantes ca$acte$;sticas do /-P .(E): * c<di&o de a#$esentao #ode se$ im#lementado em %ual%ue$ lin&ua&em su#o$tada #ela #lata'o$ma .(E)= 5acilidade #a$a im#lementao de "alidao das ent$adas dadas #elo usu,$io utilizando com#onentes do ti#o 3alidato$= 8$iao de #,&inas 4e at$a"+s de com#onentes "isuais no 3isual -tudio .(E) e com cont$oles o$ientados a e"entos0 o %ue + muito 'amilia$ #a$a a maio$ia dos desen"ol"edo$es= >e$ana de 4e 5o$ms e 4e 8ont$ols0 utilizando o mesmo conceito dos 4indo.s 5o$ms e 4indo.s 8ont$ols= -e#a$ao ent$e o >)M? e o c<di&o de l<&ica de a#$esentao da #,&ina. Essa se#a$ao 'acilita a atualizao de cada ti#o de c<di&o0 sim#li'ica a le&i ilidade do c<di&o @um &$ande

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

4 de 30

#$o lema %ue e1iste %uando o c<di&o de sc$i#t est, mistu$ado com o >)M?A0 e #ossi ilita o cont$ole de "e$so do c<di&o mais 'acilmente= 8<di&o /-P .(E) + a&o$a com#ilado ao in"+s de inte$#$etado0 o %ue causa um aumento conside$,"el na #e$'o$mance da #,&ina= 8a#acidade de identi'ica$ o $o.se$ %ue est, sendo utilizado #elo cliente e a#$esenta$ a#enas as 'uncionalidades da #,&ina es#eci'icadas #a$a o $o.se$. o o o htt#://....as#.net htt#://....&otdotnet.com htt#://msdn.mic$oso't.com/li $a$B/de'ault.as#Cu$lD/li $a$B/enE us/dnancho$/html/ancho$as#dotnet.as#.

Mais in'o$ma2es so $e /-P.(E) #odem se$ encont$adas em:

$indo%s &orms
4indo.s 5o$ms + a tecnolo&ia $ecomendada #a$a desen"ol"imento em am iente local @ DesktopA. /s !, conhecidas !anelas 4indo.s #odem se$ im#lementadas utilizando %ual%ue$ lin&ua&em da #lata'o$ma .(E). / ai1o so listadas im#o$tantes ca$acte$;sticas do 4indo.s 5o$ms: Ftilizao de he$ana0 t$azida #a$a todas as lin&ua&ens %ue a&o$a so o$ientadas a o !etos. E1iste a #ossi ilidade de ha"e$ he$ana ent$e os 5o$ms @!anelasA do 4indo.s e tam +m he$ana ent$e 8ont$ols @cont$olesA. Fma "anta&em desta #ossi ilidade + #e$miti$ %ue se!am c$iados #ad$2es de inte$'ace &$,'ica. Po$ e1em#lo0 uma dete$minada o$&anizao #ode desen"ol"e$ um 5o$m do %ual todos os demais 5o$ms de a#lica2es de"e$o he$da$. )am +m + #oss;"el c$ia$ com#onentes "isuais #e$sonalizados e adicion,Elos G a$$a de com#onentes "isuais do 3isual -tudio .(E) #a$a %ue esses se!am usados em %ual%ue$ a#licao e 5acilidade de im#lementao at$a"+s do 3isual -tudio .(E) @uso de drag-and-drop e #$o&$amao o$ientada a e"entosA e inte&$ao com os a#licati"os do M- *''ice0 como 4o$d e E1cel0 al+m do #$<#$io 4indo.s0 a #a$ti$ do names#ace -Bstem.4indo.s.

/l+m do 3isual -tudio .(E)0 e1iste out$a 67E de desen"ol"imento de 4indo.s 5o$ms astante inte$essante0 chamada -ha$#7e"elo#. Mais detalhes #odem se$ encont$ados no :uia de 6m#lementao. Mais in'o$ma2es so $e 4indo.s 5o$ms #odem se$ encont$adas em: o o o htt#://.....indo.s'o$ms.net/ ....&otdotnet.com htt#://msdn.mic$oso't.com/li $a$B/de'ault.as#Cu$lD/li $a$B/enE us/dnancho$/html/.in'o$msancho$.as#

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

H de 30

!'(.N#T
/7* .(E) + o con!unto de classes do .(E) 5$ame.o$I 8lass ?i $a$B %ue #e$mite o acesso a dados em a#licati"os .(E). /7* .(E) + a e"oluo do /cti"eJ 7ata * !ects @/7*A0 t$azendo ",$ias ino"a2es em $elao G sua "e$so ante$io$0 sendo a #$inci#al delas a t$ans'o$mao do t$adicional Keco$dset do /7* em um con!unto 'o$mado #elos o !etos 7ata)a le0 7ata-et0 7ata/da#te$0 e 7ataKeade$. *s #a#+is de cada o !eto so desc$itos a se&ui$: DataTable: Ke#$esenta um con!unto de linhas de uma ta ela sim#les= DataSet: Ke#$esenta um con!unto de 7ata)a les e seus $elacionamentos. * 7ata-et + uma est$utu$a a$mazenada em mem<$ia0 #odendo se$ #assado ent$e as camadas de uma a#licao multicamadas. )am +m + #oss;"el se$ializa$ um 7ata-et em um a$%ui"o JM? e #e$miti$ a comunicao ent$e a#lica2es de #lata'o$mas di'e$entes. Esse com#onente $e#$esenta uma c<#ia dos dados %ue esto no anco de dados0 o$&anizados em uma est$utu$a JM?. /l+m disso0 o 7ata-et #ode se$ c$iado utilizando dados de um JM?0 no sendo necessa$iamente utilizado com anco de dados. L im#o$tante salienta$ %ue o 7ata-et no est, at$elado G o$i&em dos dados0 ou se!a0 ele no se conecta com o anco de dados0 a#enas tem uma c<#ia das in'o$ma2es contidas nele. * $es#ons,"el #ela cone1o com o anco e #$eenchimento dos dados do 7ata-et + uma entidade chamada 7ata/da#te$. DataAdapter: * !eto %ue se conecta com o anco de dados e #$eenche o 7ata-et com as in'o$ma2es do anco de dados. * ti#o do 7ata/da#te$ de#ende do -:M70 en%uanto o 7ata-et + &en+$ico. Data Provider: 8om#onente $es#ons,"el #o$ 'o$nece$ a /P6 de acesso aos dados do -:M7 @d$i"e$A. /tualmente e1istem data providers #a$a @#elo menosA os se&uintes ancos de dados: -N? -e$"e$0 *7M8 e *$acle. o htt#://msdn.mic$oso't.com/li $a$B/de'ault.as#Cu$lD/li $a$B/enE us/dnancho$/html/adonetancho$.as#.

Mais in'o$ma2es so $e /7*.(E) #odem se$ encont$adas em:

XML
/ lin&ua&em JM? se to$nou um #ad$o #a$a a$mazenamento e t$oca de dados0 incluindo tanto dados de con'i&u$ao %uanto dados com conteOdo $elacionado ao ne&<cio das a#lica2es. / #lata'o$ma .(E) tem JM? numa #osio cent$al0 o'e$ecendo inte&$ao total com essa tecnolo&ia. * #ad$o JM? #e$mite0 #o$ e1em#lo0 %ue os dados #ossam se$ most$ados em %ual%ue$ dis#ositi"o e de ",$ias 'o$mas di'e$entes. 8om essa #ossi ilidade0 a inte$'ace &$,'ica de uma a#licao #ode se$ #$o!etada de manei$a inde#endente do dis#ositi"o %ue i$, e1ecut,Ela. Mais in'o$ma2es so $e JM? #odem se$ encont$adas em o htt#://.....3.o$&/JM?/.

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

6 de 30

XML $e) "ervices


JM? 4e -e$"ices @ou a#enas 4e -e$"icesA $e#$esentam uma no"a &e$ao de tecnolo&ia de desen"ol"imento de a#lica2es. 8om ela + #oss;"el c$ia$ a#lica2es modula$es e inde#endentes %ue so dist$i u;das 'acilmente em %ual%ue$ est$utu$a de $edes )8P/6P0 #ois esse + um dos #$inc;#ios 'undamentais de sua im#lementao. Fm &$ande #onto #ositi"o desta tecnolo&ia + a c$iao de a#lica2es se$"ido$as e clientes %ue inde#endem da lin&ua&em de #$o&$amao e do sistema o#e$acional em %ue so im#lementados. *s se$"ido$es #odem desc$e"e$ seus #$<#$ios se$"ios at$a"+s da 4-7? @4e -e$"ice 7e'inition ?an&ua&eA. 7essa 'o$ma0 os clientes #odem 'acilmente o te$ in'o$ma2es so $e os se$"ios %ue usa$o0 como seu nome e #a$Pmet$os e1i&idos. 6sso se to$na essencialmente Otil #a$a a codi'icao de se$"ido$es %ue se$o usados #o$ te$cei$os ou im#lementando clientes %ue usam se$"ios de out$as em#$esas. / #lata'o$ma .(E) o'e$ece um &$ande su#o$te ao desen"ol"imento de 4e -e$"ices0 tanto do #onto 'e$$amental %uanto de su#o$te da lin&ua&em. * 3isual -tudio .(E) o'e$ece $ecu$sos %ue #e$mitem a c$iao ',cil e sim#les de 4e -e$"ices0 tanto #a$a im#o$tao de se$"ios %uanto #a$a e1#o$tao. Mais in'o$ma2es so $e JM? 4e -e$"ices #odem se$ encont$adas em: o o htt#://msdn.mic$oso't.com/.e se$"ices/de'ault.as#1 htt#://....&otdotnet.com.

!*lica+es m,veis
* desen"ol"imento de a#lica2es m<"eis na #lata'o$ma .(E) + 'eito at$a"+s do Mic$oso't Mo ile 6nte$net )oolIit @ou a#enas Mo ile )oolIitA. 8om o Mo ile )oolIit #odeEse escolhe$ o 'o$mato em %ue uma a#licao a#a$ece$, na tela do usu,$io0 !, %ue os di"e$sos dis#ositi"os e1istentes utilizam di'e$entes lin&ua&ens de ma$cao. Po$ e1em#lo0 al&uns dis#ositi"os utilizam um su Econ!unto de >)M? "e$so 3.20 out$os $e%ue$em %ue os dados se!am en"iados em 4i$eless Ma$Iu# ?an&ua&e @4M?A0 e out$os ainda su#o$tam out$os #ad$2es como 8om#act >)M? @c>)M?A. Pe$ce eEse0 ento0 %ue a tecnolo&ia #e$mite a c$iao uma Onica a#licao 4e com /-P.(E) %ue #ode$, se$ utilizada #o$ ",$ios dis#ositi"os di'e$entes0 com seus di'e$entes #ad$2es de ma$cao0 incluindo dis#ositi"os como PocIet P80 tele'ones 4/P0 tele'ones iMode e out$os. Pa$a dis#ositi"os como o PocIet P80 %ue usam o 4indo.s 8E0 e1iste0 o .(E) 8om#act 5$ame.o$I0 um su con!unto da #lata'o$ma0 com menos 'uncionalidades #a$a su#o$ta$ a #ouca %uantidade mem<$ia e menos ca#acidade de #$ocessamento desses dis#ositi"os. *s desen"ol"edo$es #odem usa$ as -ma$t 7e"ice E1tensions no 3isual -tudio .(E) #a$a c$ia$ a#lica2es %ue necessitam do .(E) 8om#act 5$ame.o$I. Fm e1em#lo de 'uncionalidade %ue no est, #$esente no .(E) 8om#act 5$ame.o$I so os cont$oles de "alidao dos 4indo.s 5o$ms0 %ue de"em se$ im#lementados #elo desen"ol"edo$0 #a$a cont$ola$ as ent$adas de dados na a#licao m<"el. Mais in'o$ma2es so $e a#lica2es m<"eis em .(E) #odem se$ encont$adas em: 211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh Q de 30

htt#://....&otdotnet.com.

- !r.uitetura em Camadas Pro*osta


Esta seo desc$e"e $esumidamente a #$o#osta de a$%uitetu$a em camadas #a$a desen"ol"imento de a#lica2es .(E). *s $e%uisitos a se$em conside$ados so $e"emente desc$itos. / a$%uitetu$a em camadas tem o o !eti"o de #e$miti$ %ue a#lica2es se!am desen"ol"idas de manei$a #$oduti"a e com 'acilidade de manuteno. *s o !eti"os #$inci#ais so: Modularidade R 7i"idi$ a a#licao em m<dulos to inde#endentes %uanto #oss;"el. Manutenibilidade R Keduzi$ o custo de manuteno da a#licao. Extensibilidade R Pe$miti$ %ue no"as 'uncionalidades se!am adicionadas sem &$ande im#acto nas !, e1istentes. Reusabilidade R Pe$miti$ %ue classes e com#onentes se!am $eusados em out$os m<dulos da mesma a#licao ou em out$as a#lica2es.

Ent$e out$os ene';cios0 a di"iso em camadas inde#endentes #e$mite a su stituio da inte$'ace &$,'ica ou do meio de a$mazenamento dos dados @t$oca$ a$%ui"os #o$ um -:M70 #o$ e1em#loA sem a'eta$ as $e&$as de ne&<cio da a#licao. 6sso 'acilita a $eusa ilidade das classes do ne&<cio em out$as a#lica2es e #e$mite maio$ 'le1i ilidade na escolha de tecnolo&ias #a$a im#lementa$ a a#licao. /s t$Ss camadas da a$%uitetu$a #odem se$ "istas na 5i&u$a 10 e tSm os se&uintes #a#+is: Camada de Apresentao R Esta camada tem a 'uno de im#lementa$ uma inte$'ace de ent$ada e sa;da #a$a a inte$ao da a#licao com usu,$io. -eu #a#el + de "alida$ as in'o$ma2es 'o$necidas #elo usu,$io e de conect,Elo aos se$"ios o'e$ecidos #ela camada de (e&<cio. Camada de Neg io R Esta camada $e#$esenta o nOcleo da a#licao e + $es#ons,"el #o$ im#lementa$ a l<&ica de ne&<cio da a#licao. (ela esto todas as classes ine$entes ao dom;nio da a#licao. Camada de Persist!n ia R Esta camada + $es#ons,"el #ela #e$sistSncia e acesso aos dados da a#licao. Ela isola o $esto da a#licao do meio de a$mazenamento usado @mem<$ia0 a$%ui"os0 -:M70 a#lica2es le&adas0 etc.A de manei$a %ue0 se o meio de a$mazenamento 'o$ t$ocado0 a#enas as classes desta camada #$ecisa$o se$ modi'icadas ou su stitu;das.

A+resentao A+resentao Neg-cio Persist5ncia


&i ura 1 / 0iso eral da ar.uitetura em camadas

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

T de 30

-.1 Camada de !*resentao


Esta camada + &e$almente chamada de :F6 @:$a#hical Fse$ 6nte$'aceA e0 no caso de a#lica2es .(E)0 o'e$ece conteOdo est,tico e conteOdo dinPmico #e$sonalizado0 %ue #ode se$ a#$esentado nos mais "a$iados 'o$matos dis#on;"eis0 como >)M?0 4indo.s 5o$ms ou JM?0 #a$a atende$ aos di'e$entes ti#os de dis#ositi"os cliente0 como 7esIto# P80 celula$es e P7/s. / camada de a#$esentao + im#lementada com uso dos com#onentes "isuais da #lata'o$ma .(E)0 tanto #a$a am ientes 4e %uanto #a$a am iente desktop. * o !eti"o + #e$miti$ ao 7esen"ol"edo$ o te$ #$oduti"idade at$a"+s da 'acilidade do desen"ol"imento da inte$'ace0 usando tecnolo&ias como a 8odeMehind0 %ue 8odeMehind #e$mite se#a$a$ em a$%ui"os di'e$entes o c<di&o >)M? do c<di&o de uma lin&ua&em da #lata'o$ma .(E)0 como 89 e 3M.(E). /s classes dessas camadas utilizam os se$"ios o'e$ecidos #ela camada de ne&<cios.

-.2 Camada de Ne ,cio


Esta camada + $es#ons,"el #o$ im#lementa$ a l<&ica de ne&<cio da a#licao. (ela esto todas as classes ine$entes ao dom;nio da a#licao0 como as classes de entidade e 'achadas.

#ntidades
/s entidades @ou classes ,sicasA $e#$esentam o !etos ,sicos de ne&<cio mani#ulados #ela a#licao. Elas so instanciadas em di"e$sas camadas0 mas esto alocadas na camada de ne&<cio. Fma a#licao anc,$ia0 #o$ e1em#lo0 #ossui as classes Cliente e Conta0 necess,$ias #a$a $e#$esenta$ dois conceitos cent$ais ao dom;nio da a#licao. (a a$%uitetu$a #$o#osta0 as entidades da a#licao so im#lementadas #o$ )B#ed7ata-ets0 ao in"+s de o !etos de ne&<cio comuns. *s )B#ed7ata-ets he$dam da classe DataSet0 de'inida #elo /7*.(E). * o !eti"o de se utiliza$ )B#ed7ata-ets ou 7ata-ets + a#$o"eita$ o ma#eamento 'acilitado dos 7ata-ets com a inte$'ace &$,'ica0 %ue #e$mite associa$ cam#os do 7ata-et a cam#os da inte$'ace &$,'ica e0 %uando os "alo$es de um deles 'o$ modi'icado @no caso0 a coluna do 7ata-et ou o cam#o da inte$'ace &$,'icaA0 o out$o #ode$, se$ atualizado utilizando um comando sim#les. L tam +m #oss;"el de'ini$ ma#eamento ent$e 7ata-ets e a ase de dados %ue de modo semelhante. E1istem al&umas "anta&ens de se utiliza$ )B#ed7ata-ets ao in"+s de 7ata-ets comuns. Po$ e1em#lo0 as colunas de cada ta ela do )B#ed7ata-et #ossuem os ti#os das colunas %ue as de'inem @ao cont$,$io do 7ata-et0 em %ue os ti#os so o !ectsA. /ssim0 os ti#os de um )B#ed7ata-et so checados em tem#o de com#ilao0 en%uanto os ti#os dos 7ata-ets so checados a#enas em tem#o de e1ecuo. /l+m disso0 os )B#ed7ata-ets tam +m #ossuem $e&$as de "alidao de dados0 como "e$i'icao se os "alo$es de dete$minadas colunas #odem se$ null.

&ac1ada
Este conceito de'ine %ue a camada de a#$esentao en1e$&a um #onto de acesso Onico ao $estante do sistema. 6sto + #a$ticula$mente Otil0 #ois uma a#licao #ode se$ com#osta #o$ di"e$sos elementos %ue no de"em se$ conhecidos #ela camada de a#$esentao. Este #onto de acesso Onico0 Gs "ezes chamado de U#o$ta de acesso G a#licaoV0 + !ustamente a classe 'achada da a#licao. / 'achada + utilizada #a$a cent$aliza$ as 'uncionalidades0 #$esentes nas demais classes da a#licao0 %ue de"e$iam se$ "is;"eis #o$ %uem usa a a#licao. Ela0 como #onto Onico de acesso0 de"e $edi$eciona$ a $e%uisio de um se$"io #a$a o m<dulo da a#licao %ue o im#lementa. 7essa 211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh 9 de 30

'o$ma0 as classes %ue usam os se$"ios @como a inte$'ace &$,'icaA no #$ecisam se #$eocu#a$ em conhece$ os m<dulos %ue com#2em a a#licao e nem mesmo #$ecisam sa e$ %ue a a#licao + di"idida em m<dulos. Em um sistema anc,$io0 #o$ e1em#lo0 a 'achada #ode conte$ m+todos #a$a sa%ue e e1t$ato0 %ue $e#assa$iam suas chamadas #a$a m+todos co$$es#ondentes nas cole2es de ne&<cio es#ec;'icas. 7o mesmo modo0 a 'achada tam +m #ode$ia conte$ um m+todo %ue $ealiza t$ans'e$Sncias ent$e contas e %ue0 neste caso0 te$ia l<&ica de ne&<cio #a$a 'aze$ chamadas a m+todos %ue de itam e c$editam em contas di'e$entes. 5achadas #odem im#lementa$ uma ou mais inte$'aces #O licas #a$a o'e$ece$ di'e$entes "is2es dos se$"ios dis#on;"eis. 8ada uma dessas inte$'aces #ode conte$ um su con!unto das 'uncionalidades dis#oni ilizadas #ela 'achada. Fma 'achada cont+m adastros e ontroladores @"e$ su seo a ai1oA e adicionam $e&$as de ne&<cios $elacionadas G inte$ao ent$e esses cadast$os e cont$olado$es. / classe de 'achada #ode conte$ as instPncias das classes de cont$olado$es e im#lementa$ todos os m+todos dese!,"eis de uma a#licao. /s 'achadas tam +m so $es#ons,"eis #o$ cont$ola$ t$ansa2es @"e$ -eo T.1A. 5$e%Wentemente0 s< de"e e1isti$ uma Onica instPncia de um o !eto da classe 'achada0 %ue se$, utilizado #ela camada de a#$esentao. Po$ isso0 de"e utiliza$ o #ad$o de #$o!eto -in&leton @"e$ seo T.2A #a$a &a$anti$ %ue e1iste a#enas uma instPncia do o !eto na a#licao.

Cadastros e controladores
8ada cadast$o @ou coleo de ne&<cioA cont+m m+todos $elacionados de uma dete$minada entidade. Po$ e1em#lo0 cont+m os m+todos %ue c$editam e de itam "alo$es da entidade 8onta. -eus m+todos adicionam $e&$as de ne&<cio @ine$entes G coleo de o !etosA aos m+todos dis#oni ilizados #ela camada de #e$sistSncia da $e'e$ida entidade. 8ont$olado$es a&$u#am 'uncionalidades semelhantes de uma a#licao. /ssim0 em "ez da 'achada cent$aliza$ todas as instPncias de cadast$os e im#lementa$ di$etamente todas as $e&$as de ne&<cio da a#licao0 as cole2es e $e&$as de ne&<cio #odem se$ a&$u#adas em cont$olado$es0 e G 'achada a#enas ca e$ia dele&a$ as solicita2es $ece idas aos cont$olado$es. *s cont$olado$es so usados #$inci#almente em a#lica2es %ue #ossuem 'uncionalidades de#endentes de ",$ios cadast$os. Em out$as #ala"$as0 %uando a im#lementao de al&um m+todo da 'achada #$ecisa acessa$ mais de um cadast$o0 + comum usa$ cont$olado$es #a$a a&$u#a$ a l<&ica de acesso aos m+todos desses cadast$os. 6sso e"ita %ue uma coleo de ne&<cio acesse uma out$a. Po$ e1em#lo0 #a$a cadast$a$ uma conta0 #ode$ia e1isti$ uma $e&$a %ue o $i&asse a a#licao a "e$i'ica$ inicialmente se o cliente !, ha"ia sido cadast$ado0 #a$a de#ois #$ocede$ com cadast$o da conta. / 'achada #ode$ia acessa$ o cont$olado$ anc,$io e o m+todo cadast$a$ deste #ode$ia acessa$ o 8adast$o8liente #a$a "e$i'ica$ a e1istSncia do cliente #a$a0 em se&uida0 cadast$a$ a conta at$a"+s do 8adast$o8ontas. 8om uso de cont$olado$es0 a 'achada de"e $e'e$encia$ cont$olado$es e estes0 os cadast$os. Nuando no se usam cont$olado$es0 a 'achada #ode $e'e$encia$ di$etamente os cadast$os0 aumentando a com#le1idade dessa classe.

Considera+es so)re o uso de fac1adas e controladores


/ 5i&u$a 2 ilust$a uma est$utu$ao muito comum da camada de ne&<cios. (ela e1iste uma Onica 'achada0 usada como #onto Onico de acesso0 $e'e$enciando cont$olado$es e cole2es de ne&<cio. 211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh 10 de 30

&i ura 2 / #struturao comum da camada de ne ,cios

7e#endendo das ca$acte$;sticas de cada a#licao0 al&uns desses elementos #odem se$ su t$a;dos0 caso sua e1istSncia no 'aa sentido. Po$ e1em#lo0 em a#lica2es %ue no #ossuem muitas $e&$as de ne&<cio0 os cadast$os #odem se to$na$ desnecess,$ios0 #ois no 'a$iam nada mais al+m de $e#assa$ chamadas #a$a as cole2es de dados @camada de #e$sistSnciaA. (este caso0 com a $emoo dos cadast$os0 a 'achada e/ou os cont$olado$es #odem acessa$ di$etamente a camada de #e$sistSncia. Fma out$a a o$da&em se $e'e$e ao uso da 'achada. /l&umas a#lica2es so com#ostas #o$ ",$ios m<dulos inde#endentes com U"ida #$<#$iaV e so inde#endentes do ne&<cio da a#licao em %uesto. Em &e$al0 esses m<dulos #odem se$ "istos como com#onentes inde#endentes %ue #ode$iam se$ $eutilizados #o$ out$as a#lica2es. Nuando uma a#licao + cla$amente com#osta #o$ m<dulos inde#endentes e %uando cada caso de uso 'az acesso a no mais %ue um desses m<dulos0 a 'achada #ode se$ a olida. Mais cla$amente0 se cada classe da inte$'ace &$,'ica #$ecisa a#enas dos se$"ios de um dete$minado m<dulo0 no 'az sentido ela te$ %ue acessa$ uma 'achada %ue cent$aliza todos os m<dulos0 #ois asta$ia acessa$ uma 'achada es#ec;'ica deste m<dulo. 8omo se #ode o se$"a$0 ao in"+s de uma 'achada Onica0 e1isti$iam ",$ias 'achadas na a#licao.

-.- Camada de Persist2ncia


/ camada de #e$sistSncia + im#lementada at$a"+s do ma#eamento ent$e )B#ed7ata-ets e as ta elas da ase de dados. )am +m so utilizados 7ata-ets comuns #a$a consultas %ue $eto$nem mais de um $e&ist$o de uma ou mais ta elas e %ue no #ossuem uma entidade de ne&<cio associada0 como + o caso de $eto$no de m+todos de $elat<$ios.

Re*osit,rios
*s $e#osit<$ios so com#onentes de acesso a dados $es#ons,"eis #o$ e1ecuta$ o ma#eamento ent$e os )B#ed7ata-ets e as ta elas do anco ou out$o meio de a$mazenamento. *s $e#osit<$ios0 ent$etanto0 no so acessados di$etamente #o$ out$as camadas. )odos os seus se$"ios so dis#oni ilizados a #a$ti$ de inte$'aces chamadas inter"a es neg io#dados. *s cadast$os0 #$esentes na camada de ne&<cios0 #ossuem $e'e$Sncias a#enas #a$a essas inte$'aces. 7essa 'o$ma0 esta eleceEse um cont$ato ent$e as camadas: as inte$'aces indicam os se$"ios 211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh 11 de 30

dis#on;"eis G camada de ne&<cio e o %ue a camada de dados de"e im#lementa$. X, im#lementao da inte$'ace ne&<cioEdados de"e se$ 'eita #ela coleo de dados co$$es#ondente. /s cole2es de dados de#endem do meio de a$mazenamento utilizado. Po$+m0 seus se$"ios so im#lementados de aco$do com uma inte$'ace comum. /ssim0 a sim#les su stituio de uma coleo de dados %ue usa uma /P6 #a$a anco $elacional #o$ out$a %ue utiliza /P6 #a$a anco de dados o$ientados a o !etos no causa nenhum im#acto na coleo de ne&<cio0 #ois a mesma $e'e$encia uma inte$'ace ne&<cioEdados imut,"el. 7e"e$, e1isti$ um con!unto distinto de classes #a$a t$ata$ cada ti#o de meio de a$mazenamento #oss;"el da camada de #e$sistSncia. 7e"eEse utiliza$ o #ad$o de #$o!eto 5acto$B @"e$ seo T.3A0 #a$a %ue se!am c$iadas as classes do meio de a$mazenamento dese!ado.

3 #studo de caso
* e1em#lo utilizado no $estante desse documento + uma a#licao #a$a manuteno de dados de um sistema anc,$io0 com 'uncionalidades #a$a manuteno do cadast$o de contas e clientes0 al+m de o#e$a2es anc,$ias0 como t$ans'e$Sncias. /s #$inci#ais entidades da a#licao so: 8onta R $e#$esenta uma conta co$$ente no anco0 e est, associada a um cliente= 8liente R $e#$esenta um cliente do anco0 e #ode #ossui$ uma ou mais contas co$$entes= )$ans'e$Sncia R $e#$esenta o $e&ist$o de uma o#e$ao de t$ans'e$Sncia de 'undos ent$e duas contas co$$entes.

/ a#licao + acessada at$a"+s de um browser. Ent$etanto0 de"e se$ #oss;"el muda$ a inte$'ace &$,'ica #a$a am iente local @ desktopA sem &$ande im#acto no c<di&o %ue im#lementa a l<&ica de ne&<cio. )am +m de"e se$ #oss;"el muda$ o #$oduto e "e$so do anco de dados sem nenhum im#acto na l<&ica de ne&<cio e a#$esentao e com ai1o im#acto no c<di&o de acesso a dados.

3.1 Re.uisitos de instalao


/ a#licao e1em#lo + acessada at$a"+s de na"e&ado$es 6nte$net e e1ecuta em se$"ido$es /-P.(E)0 como o se$"ido$ 66-. * conteOdo est,tico da #,&ina @#o$ e1em#lo0 a$%ui"os >)M?A + a$mazenado em %ual%ue$ se$"ido$ 4e 0 como o 66- ou o /#ache. X, o conteOdo dinPmico + $es#onsa ilidade dos se$"ido$es /-P.(E). / ase de dados e1ecuta em out$o se$"ido$. Essa con'i&u$ao + a#$esentada #ela 5i&u$a 3.
Am(iente cor+orati)o

;ase de dados Na)egador Ser)idor We( Ser)idores ASP.NET

&i ura - / re.uisitos de instalao da a*licao e4em*lo

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

12 de 30

3.2 Cen5rios
/ #$o#osta de a$%uitetu$a #a$a a #lata'o$ma .(E) se$, demonst$ada at$a"+s de t$Ss cen,$ios0 sendo %ue cada um $e#$esenta um ti#o de 'uncionalidade necess,$ia ao estudo de caso. Essas 'uncionalidades so: Cadastro R Manuteno do cadast$o das entidades 8onta e 8liente0 a#$esentado na -eo H. Servios R 6m#lementao de uma l<&ica de ne&<cio %ue en"ol"e mais de um m<dulo da a#licao0 desc$ito na -eo 6. Relatrios R :e$ao de $elat<$ios #a$a consulta dos dados da a#licao0 a#$esentado da -eo Q.

Esses t$Ss cen,$ios 'o$am escolhidos #o$%ue a o$dam a ti#os de 'uncionalidades astante comuns em sistemas de in'o$mao. * o !eti"o + demonst$a$ como soluciona$ #$o lemas comuns no desen"ol"imento de a#lica2es.

6 Cen5rio 17 Cadastro
Esta seo a#$esenta as 'uncionalidades do cen,$io de cadast$o0 a o$dado em duas eta#as: uma &en+$ica0 %ue se$"e #a$a todos os casos de cadast$o @no caso0 cliente e contaA e out$a a#ontando as #a$ticula$idades es#ec;'icas de cada im#lementao de cadast$o.

6.1 'escrio eral


7e uma manei$a &e$al0 um cadast$o #$o"S as 'uncionalidades de incluso0 atualizao0 e1cluso e usca dos dados de uma dete$minada entidade. / 5i&u$a 4 a#$esenta uma inte$'ace &$,'ica inicial &en+$ica #a$a casos de uso de cadast$o.

&i ura 3 / Interface en8rica inicial *ara manuteno de cadastro

/ inte$'ace + com#osta #elos se&uintes com#onentes: Cadastro$: linIs %ue a#ontam0 cada um0 #a$a a tela inicial de manuteno de uma coleo de ne&<cios es#ec;'ica @como conta ou cliente0 #o$ e1em#loA. 13 de 30

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

Sair: linI %ue $edi$eciona o usu,$io #a$a uma out$a tela0 a andonando a inte$'ace de manuteno de cadast$os. CampoC%ave$: -o cam#os de te1to #a$a ent$adas de dados dos usu,$ios0 $e#$esentando in'o$ma2esEcha"e %ue identi'icam unicamente um item no cadast$o. Campo$: -o cam#os de te1to #a$a ent$adas de dados dos usu,$ios0 contendo in'o$ma2es %ue no so necess,$ias #a$a identi'ica$ unicamente um item no cadast$o. (o h, nenhum cam#o deste ti#o na 5i&u$a 40 #ois eles a#a$ecem a#enas a#<s uma usca emEsucedida ou a#<s o usu,$io clica$ em 6nse$i$ de#ois de ha"e$ #$eenchido co$$etamente os cam#osEcha"e. & one de bus a 'lupa() Est, associado a um cam#o e #e$mite necess,$ias #a$a o seu #$eenchimento em um a !anela popup. usca$ as in'o$ma2es

*ot+es: 8ada oto a#$esenta uma 'uncionalidade es#ec;'ica e se$, desc$ito nos casos de uso a se&ui$.

9R&C!::1; Inserir
Des rio) Esse caso de uso #e$mite ao usu,$io inse$i$ dados na a#licao. 7uas telas com#2em este caso de uso. / #$imei$a + ilust$ada na 5i&u$a 4. / se&unda #o$ sua "ez0 + a#$esenta a ai1o0 na 5i&u$a H.

&i ura 6 < "e unda tela do caso de uso Inserir *ara cadastros en8ricos

,luxo prin ipal 1. * usu,$io acessa a ,$ea de manuteno do cadast$o0 sendo $edi$ecionado #a$a a tela da 5i&u$a 4. 2. * usu,$io #$eenche os cam#osEcha"e e clica em 6nse$i$= 3. / a#licao "e$i'ica %ue os cam#osEcha"e inse$idos so ",lidos e dete$minam unicamente um item no"o do cadast$o0 $edi$ecionando o usu,$io #a$a a tela da 5i&u$a H. *s cam#osE cha"e so desa ilitados e so e1i idos out$os cam#os %ue no so cha"e. 211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh 14 de 30

4. * usu,$io #$eenche os demais cam#os @noEcha"eA e clica em Y8on'i$ma$Z= H. / a#licao "alida e inse$e as in'o$ma2es na ase de dados0 e1i indo ao usu,$io uma mensa&em de sucesso. ,luxo de erro -,E../0 Campos# %ave preen %idos no so 1ni os ou so inv2lidos / a#licao a#$esenta o e$$o ao usu,$io e solicita o co$$eto #$eenchimento. -,E..30 Campos no# %ave so inv2lidos / a#licao a#$esenta o e$$o ao usu,$io e solicita o co$$eto #$eenchimento. ,luxo Alternativo -,A../0 Preen %imento de ampos via popup -e o usu,$io clica$ em um ;cone de usca a a#licao a $e uma !anela de popup %ue a#$esenta ao usu,$io o#2es #a$a #$eenche$ o cam#o ao %ual o ;cone est, associado . /ntes de clica$ no oto de usca0 o cam#o de"e esta$ "azio ou desa ilitado. -,A..30 Can elamento da operao -e o usu,$io clica$ em Y8ancela$Z0 a#<s te$ clicado em Y6nse$i$Z0 a inte$'ace $eto$na G tela inicial @5i&u$a 4A e nada acontece. -,A..40 5impar ampos -e o usu,$io clica$ em Y?im#a$Z0 os cam#os nos %uais ele #ode ent$a$ com dados 'icam com seus "alo$es sem $anco.

9R&C!::2; =uscar
Des rio) Essa o#o #e$mite ao usu,$io $ecu#e$a$ dados da a#licao. 7uas telas com#2em este caso de uso. / #$imei$a + ilust$ada na 5i&u$a 4. / se&unda #o$ sua "ez0 + a#$esenta a ai1o0 na 5i&u$a 6.

&i ura > / Resultado de uma )usca *ara cadastros en8ricos

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

1H de 30

,luxo prin ipal 1. * usu,$io acessa a ,$ea de manuteno do cadast$o0 sendo $edi$ecionado #a$a a tela da 5i&u$a 4. 2. * usu,$io #$eenche os cam#osEcha"e necess,$ios e clica no ;cone de usca= 3. / a#licao "e$i'ica %ue os "alo$es ent$ados #elo usu,$io nos cam#osEcha"e dete$minam unicamente um item do cadast$o0 $edi$ecionando o usu,$io #a$a a tela da 5i&u$a 6. *s cam#osEcha"e so desa ilitados e so e1i idos out$os cam#os %ue no so cha"e0 de"idamente #$eenchidos com os "alo$es do item uscado. ,luxo Alternativo -,A../0 Preen %imento de ampos via popup -e o usu,$io clica$ em um ;cone de usca a a#licao a $e uma !anela de popup %ue a#$esenta ao usu,$io o#2es #a$a #$eenche$ o cam#o ao %ual o ;cone est, associado. * cam#o $elacionado ao ;cone de usca de"e esta$ "azio ou desa ilitado @caso cont$,$io a a#licao no i$, a $i$ a tela de 'ilt$o de usca0 mas $ealiza$, uma usca no anco com o "alo$ es#eci'icado no cam#o0 como acontece no 'lu1o no$malA. ,luxo de erro -,E../0 Preen %imento de ampos inv2lidos / a#licao a#$esenta o e$$o ao usu,$io e solicita o co$$eto #$eenchimento. -,E..30 Entidade no en ontrada 8aso no e1ista uma entidade cadast$ada com o c<di&o es#eci'icado0 a a#licao e1i e uma mensa&em #a$a o usu,$io. -,A..40 5impar ampos -e o usu,$io clica$ em Y?im#a$Z0 os cam#os nos %uais ele #ode ent$a$ com dados 'icam com seus "alo$es sem $anco.

9R&C!::-; !tuali?ar
Des rio) Essa o#o #e$mite ao usu,$io modi'ica$ as in'o$ma2es %ue !, esto &ua$dadas na ase de dados. / tela desse caso de uso + ilust$ada na 5i&u$a 6. ,luxo prin ipal 1. * usu,$io $ealiza o caso de uso Musca$ com sucesso= 2. Fsu,$io modi'ica um ou mais cam#os de te1to e clica no oto Y/tualiza$Z= 3. / a#licao "alida se todas as in'o$ma2es o $i&at<$ias 'o$am #$eenchidas= 4. / a#licao atualiza as in'o$ma2es na ase de dados e $eto$na G sua con'i&u$ao inicial0 e1i indo ao usu,$io uma mensa&em de sucesso. ,luxo de erro 211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh 16 de 30

-,E../0 Preen %imento de ampos inv2lidos / a#licao a#$esenta o e$$o ao usu,$io e solicita o co$$eto #$eenchimento. -,A..30 Can elamento da operao -e o usu,$io clica$ em Y8ancela$Z0 a#<s a usca0 a inte$'ace $eto$na G tela inicial @5i&u$a 4A e nada acontece. -,A..40 5impar ampos -e o usu,$io clica$ em Y?im#a$Z0 os cam#os nos %uais ele #ode ent$a$ com dados 'icam com seus "alo$es sem $anco.

9R&C!::3; #4cluir
Des rio) Essa o#o #e$mite ao usu,$io a#a&a$ in'o$ma2es da ase de dados da a#licao. / tela desse caso de uso + ilust$ada na 5i&u$a 6. ,luxo de eventos prin ipal 1. * usu,$io $ealiza o caso de uso Musca$ com sucesso= 2. Fsu,$io clica no oto YE1clui$Z= 3. / a#licao con'i$ma se o usu,$io tem ce$teza %ue dese!a e1ecuta$ a o#e$ao= 4. / a#licao $emo"e as in'o$ma2es da ase de dados e o usu,$io $ece e uma mensa&em de sucesso. ,luxo de erro -,A../0 Can elamento da operao -e o usu,$io clica$ em Y8ancela$Z0 a#<s a usca0 a inte$'ace $eto$na G tela inicial @5i&u$a 4A e nada acontece. -,A..30 Ex luso no 6 poss7vel 8aso no se!a #oss;"el e1clui$ o item do cadast$o @al&uma $est$io de inte&$idade + "iolada no anco0 #o$ e1em#loA uma mensa&em de e$$o + in'o$mada ao usu,$io.

6.2 Cadastro de Clientes


* cadast$o de clientes de um anco cont+m casos de uso es#ec;'icos0 %ue he$dam dos casos de uso K58/001 at+ K58/004 da seo H.1. *s dados #a$ticula$es do cadast$o de clientes so: 8P5 @cha"eA0 acom#anhado de um ;cone de usca @lu#aA= (ome @noEcha"eA.

8bservao: / e1cluso de um cliente im#lica na e1cluso de todas as suas contas associadas.

6.- Cadastro de Contas


* cadast$o de contas de um anco cont+m casos de uso es#ec;'icos0 %ue he$dam dos casos de uso K58/001 at+ K58/004 da seo H.1. *s dados #a$ticula$es do cadast$o de contas so: 211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh 1Q de 30

(Ome$o da a&Sncia @cha"eA0 acom#anhado de um ;cone de usca @lu#aA= (Ome$o da conta @cha"eA0 acom#anhado de um ;cone de usca @lu#aA= 8P5 do titula$ @noEcha"eA= acom#anhado de um ;cone de usca @lu#aA= -aldo @noEcha"eA.

/#<s a usca de uma conta0 o cam#o de 8P5 de"e se$ desa ilitado e o nome do cliente da conta de"e se$ e1i ido na inte$'ace como la el. /l+m disso0 o cam#o Y(Ome$o da contaZ de"e esta$ desa ilitado sem#$e %ue o cam#o Y(Ome$o da a&SnciaZ contenha um "alo$ "azio. 8bservao: * nOme$o da conta e o nOme$o da a&Sncia so "alo$es num+$icos0 isto +0 no so aceitas let$as na sua com#osio @como U23431VA. Po$tanto0 uma conta @ou a&SnciaA de nOme$o 0123 + i&ual G conta @ou a&SnciaA de nOme$o 123.

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

1T de 30

6.3 Pro@eto l, ico


/s se2es se&uintes desc$e"em os elementos en"ol"idos na im#lementao desse cen,$io. Fma "iso &e$al das classes e seus $elacionamentos #odem se$ "istos na 'i&u$a a se&ui$.

&i ura A< 'ia rama de classes do cen5rio de cadastro

Camada de a*resentao
/ camada de a#$esentao desse cen,$io + im#lementada at$a"+s da tecnolo&ia /-P.(E). /s #,&inas ManterConta9aspx e ManterCliente9aspx so $es#ons,"eis #o$ inte$a&i$ com o usu,$io #a$a a#$esenta$ e o te$ os dados nas o#e$a2es de inse$o0 $emoo0 atualizao e usca #a$a as entidades 8onta e 8liente0 $es#ecti"amente. 211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh 19 de 30

L inte$essante o se$"a$ %ue essas #,&inas cont$olam as o#e$a2es a se$em e1ecutadas #elo usu,$io como tam +m o cont$ole de 'lu1o da a#licao @na"e&ao ent$e as #,&inasA. / "alidao dos dados de ent$ada + 'eita at$a"+s de 3alidato$s0 conectados aos cam#os de ent$ada. / leitu$a e a#$esentao dos dados nos cam#os de te1to so 'eitas at$a"+s do ma#eamento nos cam#os dos )B#ed7ata-ets Conta e Cliente. Esse ma#eamento #ode se$ 'eito "isualmente at$a"+s da 'e$$amenta 3isual -tudio .(E).

Camada de ne ,cio
/s entidades 8onta e 8liente so $e#$esentadas #elas classes Conta e Cliente0 $es#ecti"amente. Essas classes so )B#ed7ata-ets usadas #a$a a$mazena$ os dados das entidades em mem<$ia e 'acilita$ a inte$ao com a inte$'ace &$,'ica e o anco de dados. / im#o$tPncia da classe Fachada !, 'oi desc$ita na seo 5achada deste documento. Essa classe dele&a a #e$sistSncia das entidades Cliente e Conta #a$a a camada de #e$sistSncia. * #a#el dessa classe + im#lementa$ $e&$as de ne&<cios %ue en"ol"am entidades di'e$entes. *s cadast$os im#lementam as $e&$as de ne&<cios %ue en"ol"em uma entidade.

Camada de *ersist2ncia
/ im#lementao da #e$sistSncia das entidades + 'eita at$a"+s do ma#eamento dos )B#ed7ata-ets Conta e Cliente em ta elas do anco de dados. 6sso + 'eito com o au1ilio de o !etos DataAdapters. / mani#ulao dos dados e acesso ao anco + de $es#onsa ilidade das classes %ue im#lementam as inte$'aces IRepositorioContas e IRepositorioClientes0 %ue so RepositorioContasAcess e RepositorioClientesAcess. Essas classes so $es#ons,"eis #o$ #e$sisti$ as entidades Conta e Cliente0 $es#ecti"amente0 e1ecutando comandos -N? #a$a mani#ula$ os dados no anco de dados.

> Cen5rio 27 "ervios


Esta seo desc$e"e o cen,$io de im#lementao de uma $e&$a de ne&<cio "ista como um se$"io %ue en"ol"e mais de um cadast$o.

>.1 'escrio eral


* se$"io a#$esentado nessa seo + o caso de uso K5-E0010 desc$ito a se&ui$.

9R&"#::1; Transfer2ncia entre contas )anc5rias


Des rio) a t$ans'e$Sncia ent$e contas anc,$ias en"ol"e a mani#ulao de duas contas0 "alidao de saldo e &e$ao de um $e&ist$o de mo"imentao. / inte$'ace deste caso de uso + a#$esentada na 5i&u$a T. / tela de con'i$mao da t$ans'e$Sncia0 + e1i ida em se&uida0 na 5i&u$a 9.

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

20 de 30

&i ura B < Interface r5fica da o*erao de transfer2ncia

&i ura C < Confirmao de transfer2ncia

,luxo prin ipal 1. * usu,$io acessa a seo de t$ans'e$Sncia no site0 sendo $edi$ecionado #a$a a tela da 5i&u$a T. 2. * usu,$io ent$a com os "alo$es dos cam#os Y(Ome$o da a&SnciaZ e Y(Ome$o da contaZ #a$a as contas de o$i&em e destino0 assim como o "alo$ a se$ t$ans'e$ido e a data da t$ans'e$Sncia @esse checI o1 de"e a#a$ece$ #$eenchido com a data atualA= 3. * usu,$io clica no oto YKealiza$ )$ans'e$SnciaZ. 4. / a#licao "alida os nOme$os das contas e a&Sncias0 al+m do saldo e a data indicada.

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

21 de 30

H. / a#licao $edi$eciona o usu,$io #a$a a tela da 5i&u$a 90 solicitandoEo a con'i$mao da t$ans'e$Sncia. 6. * usu,$io a#e$ta o oto Y8on'i$ma$Z. Q. / a#licao #$ocessa a t$ans'e$Sncia e e1i e a tela de con'i$mao. ,luxo alternativo -,A../0 Preen %imento de ampos via popup (a tela de t$ans'e$Sncia @5i&u$a TA0 se o usu,$io clica$ em um ;cone de usca a a#licao a $e uma !anela de popup %ue a#$esenta ao usu,$io o#2es #a$a #$eenche$ o cam#o ao %ual o ;cone est, associado. -,A..30 5impar ampos (a tela de t$ans'e$Sncia @5i&u$a TA0 se o usu,$io clica$ em Y?im#a$Z0 os cam#os nos %uais ele #ode ent$a$ com dados 'icam com seus "alo$es sem $anco. -,A..40 Can elamento da operao (a tela de con'i$mao @5i&u$a 9A0 se o usu,$io clica$ em Y8ancela$Z0 nada acontece e a a#licao $edi$eciona o usu,$io #a$a a tela de t$ans'e$Sncia @5i&u$a TA. ,luxos de erro -,E../0 Preen %imento de ampos inv2lidos / a#licao e1i e uma mensa&em de e$$o in'o$mando o #$o lema na tela de inicial de t$ans'e$Sncia. -,E..30 Saldo insu"i iente / a#licao e1i e uma mensa&em de e$$o in'o$mando o #$o lema na tela de inicial de t$ans'e$Sncia. -,E..40 *us a de uma onta sem in"ormar a ag!n ia / a#licao e1i e uma mensa&em de e$$o in'o$mando %ue antes de usca$ #o$ uma conta em um popup "ia ;cone de usca @lu#aA + #$eciso %ue o cam#o da a&Sncia este!a #$eenchido.

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

22 de 30

>.2 Pro@eto l, ico


/s se2es se&uintes desc$e"em os elementos en"ol"idos na im#lementao desse cen,$io. Fma "iso &e$al das classes e seus $elacionamentos #odem se$ "istos na 5i&u$a 10.

&i ura 1: < 'ia rama de classes do cen5rio "ervios

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

23 de 30

Camada de a*resentao
/ camada de a#$esentao desse cen,$io + im#lementada at$a"+s da tecnolo&ia /-P.(E). /s 'un2es de cada #,&ina so: E"etuarTrans"eren ia9aspx: * t+m o nOme$o e a a&Sncia das contas de o$i&em e destino0 em como o 8P5 dos clientes0 ca#tu$ados at$a"+s da tela PopupPes:uisarCliente9aspx. PopupPes:uisarCliente9aspx: o'e$ece uma #es%uisa de clientes a #a$ti$ de um nome ou #a$te dele. /#<s a seleo do cliente a tela #assa o 8P5 do cliente escolhido #a$a a tela E"etuarTrans"eren ia9aspx. Con"irmarTrans"eren ia9aspx: $ece e a con'i$mao do usu,$io de %ue a t$ans'e$Sncia de"e se$ e'eti"ada.

* se$"e %ue essas #,&inas cont$olam as o#e$a2es a se$em e1ecutadas #elo usu,$io como tam +m o cont$ole de 'lu1o da a#licao @na"e&ao ent$e as #,&inasA. / "alidao dos dados de ent$ada + 'eita at$a"+s de 3alidato$s0 conectados aos cam#os de te1to. *s dados da t$ans'e$Sncia o tidos da inte$'ace so a&$u#ados no )B#ed7ata-et
Transferencia. / lista&em dos clientes %ue contSm o nome es#eci'icado #elo usu,$io +

im#lementada com o uso de um )B#ed7ata-et 8liente0 ma#eando os cam#os da #es%uisa #a$a uma ta ela >)M?0 im#lementada como um DataGrid.

Camada de ne ,cio
/ #$inci#al entidade deste cen,$io + a t$ans'e$Sncia0 $e#$esentada #elo )B#ed7ata-et Transferencia0 usado #a$a a$mazena$ os dados em mem<$ia e 'acilita$ a inte$ao com a inte$'ace &$,'ica e o anco de dados. * )B#ed7ata-et Transferencia cont+m todos os dados necess,$ios #a$a $e&ist$a$ uma t$ans'e$Sncia0 incluindo dados das contas e clientes. / l<&ica de ne&<cio necess,$ia #a$a im#lementa$ a o#e$ao de t$ans'e$Sncia est, contida classe ControladorBancario0 %ue + acessada at$a"+s da 5achada. / classe ControladorBancario utiliza os se$"ios do cadast$o @CadastroContasA #a$a "alida$ e atualiza$ os dados das contas anc,$ias e seus clientes. na /#<s a atualizao das contas a #e$sistSncia da t$ansao + dele&ada #a$a a classe RepositorioTransferencia0 da camada de #e$sistSncia.

Camada de *ersist2ncia
/ im#lementao da #e$sistSncia das entidades + 'eita at$a"+s do ma#eamento do )B#ed7ata-et Transferencia e da inse$o dos dados das duas mo"imenta2es &e$a$as #a$a cada t$ans'e$Sncia na ta ela de mo"imenta2es. * #a#el de acesso a dados0 %ue inclui e1ecuta$ comandos -N? + $es#onsa ilidade da classe
RepositorioTransferencia.

A Cen5rio -7 Relat,rios
Esta seo desc$e"e o cen,$io de im#lementao de um $elat<$io #a$a "isualizao de dados #$e"iamente cadast$ados na a#licao. / &e$ao do $elat<$io se$, au1iliada #ela 'e$$amenta 8$Bstal 211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh 24 de 30

Ke#o$ts. Esta 'e$$amenta #e$mite a c$iao e inte&$ao de conteOdo em a#lica2es .(E)0 ent$e out$as0 #$oduzindo $elat<$ios astante di"e$si'icados. 1

A.1 'escrio eral


* $elat<$io a#$esentado nessa seo + o caso de uso K5KE0010 desc$ito a se&ui$.

9R&R#::1; 0isuali?ao de relat,rio de e4trato de conta


Des rio) * $elat<$io de e1t$ato de uma conta co$$ente de"e conte$ todas as mo"imenta2es e'etuadas #a$a a%uela conta0 &e$adas #o$ uma o#e$ao %ual%ue$0 como t$ans'e$Sncia.

&i ura 11 < Interface *ara relat,rios

* ca ealho do $elat<$io de"e conte$ o nOme$o da conta0 o nOme$o da a&Sncia e os dados do cliente. /o 'im do $elat<$io0 de"e a#a$ece$ o saldo atual da conta. ,luxo prin ipal 1. * usu,$io acessa a seo de $elat<$io de e1t$ato de conta na a#licao0 sendo $edi$ecionado #a$a a tela da 5i&u$a 11= 2. * usu,$io ent$a com o nOme$o da conta0 o nOme$o da a&Sncia0 e a #a$ti$ de %ue dia do mSs atual dese!a solicita$ o e1t$ato= 3. / a#licao #es%uisa os dados necess,$ios e monta o $elat<$io. ,luxo alternativo -,A../0 Preen %imento de ampos via popup

Mais detalhes #odem se$ encont$ados em htt#://....c$Bstaldecisions.com/#$oducts/c$Bstal$e#o$ts/net/de'ault.as#

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

2H de 30

-e o usu,$io clica$ em um ;cone de usca a a#licao a $e uma !anela de popup %ue a#$esenta ao usu,$io o#2es #a$a #$eenche$ o cam#o ao %ual o ;cone est, associado. ,luxos de erro -,E../0 Preen %imento de ampos inv2lidos / a#licao e1i e uma mensa&em de e$$o in'o$mando o #$o lema na tela de inicial de $elat<$io @5i&u$a 11A. -,E..30 *us a de uma onta sem in"ormar a ag!n ia / a#licao e1i e uma mensa&em de e$$o in'o$mando %ue antes de usca$ no popup #o$ uma conta "ia ;cone de usca @lu#aA + #$eciso %ue o cam#o da a&Sncia este!a #$eenchido.

A.2 Pro@eto l, ico


/s se2es se&uintes desc$e"em os elementos en"ol"idos na im#lementao desse cen,$io. Fma "iso &e$al das classes e seus $elacionamentos #odem se$ "istos na 'i&u$a a se&ui$.

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

26 de 30

&i ura 12 / 'ia rama de classes do cen5rio relat,rios.

Camada de a*resentao
/ camada de a#$esentao deste cen,$io + im#lementada at$a"+s da tecnolo&ia /-P.(E). /s 'un2es de cada item so: Soli itaExtrato9aspx: * t+m o nOme$o e a a&Sncia da conta em como a data inicial do e1t$ato. ;isuali<arRelatorioExtrato9aspx: E1i e o e1t$ato da conta com as in'o$ma2es so $e cada mo"imentao e'etuada no #e$;odo disc$iminado. Possui um com#onente chamado U8$Bstal Ke#o$ts 3ie.e$V %ue0 como o #$<#$io nome !, diz0 se$"e #a$a "isualiza$ $elat<$ios &e$ados #ela 'e$$amenta 8$Bstal Ke#o$ts. RelatorioExtrato9rpt: 8om#onente de $elat<$io &e$ado #ela 'e$$amenta 8$Bstal Ke#o$ts0 %ue cont+m a de'inio da est$utu$a do $elat<$io e #e$mite %ue um $elat<$io se!a ca$$e&ado.

L inte$essante o se$"a$ %ue as #,&inas as#1 cont$olam no a#enas as o#e$a2es a se$em e1ecutadas #elo usu,$io como tam +m o cont$ole de 'lu1o da a#licao @na"e&ao ent$e as #,&inasA. / "alidao dos dados de ent$ada + 'eita at$a"+s de 3alidato$s0 conectados aos cam#os de te1to. /t$a"+s da 'e$$amenta 8$Bstal Ke#o$ts0 a a#$esentao dos dados do $elat<$io + modelada sem muito es'o$o de #$o&$amao. 8aso se!a o#tado #o$ no utiliza$ essa 'e$$amenta0 o com#onente de "isualizao do $elat<$io @8$Bstal Ke#o$ts 3ie.e$A #ode se$ su stitu;do #o$ ta elas >)M?0 7ata:$ids ou out$as 'e$$amentas. (este caso0 o com#onente de $elat<$io @Kelato$ioE1t$ato.$#tA tam +m no se$, mais utilizado0 #ois o mesmo + es#eci'ico ao 8$Bstal Ke#o$ts. Pa$a a c$iao do um $elat<$io + a utilizado um )B#ed7ata-et como 'onte de dados a se$ ca$$e&ada #elo com#onente do $elat<$io. Esse )B#ed7ata-et + &e$ado #elo 3-.(E) a #a$ti$ de uma consulta -N? co$$es#ondente ao $elat<$io. Esta a o$da&em #e$mite %ue o $elat<$io se!a customizado em mais detalhes0 #ois h, mais in'o$mao dis#on;"el em tem#o de com#ilao. /l+m disso0 no #$<#$io wizard de c$iao de $elat<$io do 8$Bstal Ke#o$ts + #oss;"el es#eci'ica$ e con'i&u$a$ 'acilmente um )B#ed7ata-et como sendo a 'onte de dados do $elat<$io. Fma out$a a o$da&em se$ia o uso de stored procedure #a$a &e$a$ o )B#ed7ata-et do $elat<$io0 ent$etanto0 caso o anco de dados mude '$e%Wentemente0 esta a o$da&em #ossui como des"anta&em a necessidade da $eesc$ita da stored procedure #a$a cada no"o ti#o de anco.

Camada de ne ,cio
/ $es#onsa ilidade da camada de ne&<cio neste cen,$io + t$ans'o$ma$ dados %ue tenham sido lidos da ase de dados. /s entidades no so $e#$esentadas #o$ nenhuma classe0 !, %ue este cen,$io 'oca a#enas em dados $elacionais %ue so &e$almente de 'o$ma ta ula$.

Camada de *ersist2ncia
* acesso a dados + im#lementado at$a"+s de consultas -N? e1ecutadas na ase de dados. * $esultado dessas consultas + ca$$e&ado em um )B#ed7ata-et0 %ue se$, a 'onte de dados ca$$e&ada #elo $elat<$io 8$Bstal Ke#o$ts. * #a#el de acesso aos $ecu$sos de #e$sistSncia0 %ue inclui a o teno de cone12es com o anco e &e$ao dos comandos -N?0 + $es#onsa ilidade da inte$'ace IConsultas %ue no caso 'oi im#lementada com a classe ConsultasAcess. 211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh 2Q de 30

B Mecanismos ar.uiteturais
Esta seo a#$esenta su&est2es de solu2es #a$a al&uns #$o lemas encont$ados comumente no desen"ol"imento de a#lica2es.

B.1 Derenciamento de Transa+es


Este documento su&e$e duas 'o$mas de $ealiza$ o &e$enciamento de t$ansa2es: o modo #$o&$am,tico e o modo decla$ati"o.

Modo Pro ram5tico


* cont$ole de t$ansa2es %ue en"ol"am mais de um com#onente de ne&<cio de"e se$ im#lementado com o au1;lio do com#onente GerenciadorTransacoes. Esse com#onente + $es#ons,"el #o$ utiliza$ os $ecu$sos da ase de dados #a$a o &e$enciamento de t$ansa2es. )$ansa2es so sem#$e cont$oladas #ela Fachada. -o os m+todos da Fachada %ue iniciam a t$ansao no GerenciadorTransacoes. Fma "ez iniciada0 os m+todos dos $e#osit<$ios #odem $ecu#e$a$ a cone1o co$$ente a #a$ti$ do GerenciadorTransacoes e e1ecuta$ os comandos de inte$ao com o anco de dados. * di&$ama de classes da 'i&u$a a se&ui$ a#$esenta um e1em#lo de classes en"ol"idas no &e$enciamento de t$ansa2es.

&i ura 1- / 'ia ama de classes do erenciamento de transa+es.

* dia&$ama de se%WSncia da 'i&u$a a se&ui$ a#$esenta como as classes inte$a&em #a$a im#lementa$ o cont$ole de t$ansa2es.

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

2T de 30

&i ura 13 / 'ia rama de se.E2ncia do controle de transa+es.

Modo 'eclarativo
*ut$a 'o$ma de $ealiza$ o cont$ole de t$ansa2es + utiliza$ o modo decla$ati"o. (esse caso uma o#e$ao %ue #$ecise se$ e1ecutada com cont$ole t$ansacional te$, essa in'o$mao em sua decla$ao na Fachada. /l+m disso0 o com#onente %ue cont$ola as t$ansa2es no + mais o GerenciadorTransacoes0 %ue dei1a de e1isti$0 e #assa a se$ a 'e$$amenta Mic$oso't )$ansaction -e$"e$0 %ue $ealiza$, o cont$ole t$ansacional de 'o$ma t$ans#a$ente.

B.2 "in leton


Esse #ad$o de'ine %ue uma dete$minada classe te$, a#enas um Onico o !eto instanciado du$ante a e1ecuo da a#licao. 7esse modo0 o const$uto$ da classe + #$i"ado e a classe #ossui$, um m+todo est,tico %ue #e$mite $ecu#e$a$ essa instPncia Onica da classe. Esse m+todo de"e$, in"oca$ o const$uto$ da classe @conse%Wentemente instanciando um o !etoA a#enas na #$imei$a "ez %ue 'o$ chamado. (as demais "ezes0 o const$uto$ no se$, chamado0 e se$, $eto$nada a instPncia #$e"iamente c$iada da classe. Mais detalhes em: o o htt#://msdn.mic$oso't.com/#$actices/tB#e/Patte$ns/Ente$#$ise/7es-in&leton/ htt#://....do'acto$B.com/#atte$ns/Patte$n-in&leton.as#1.

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

29 de 30

B.- !)stract &actorF


Esse #ad$o su&e$e a c$iao de uma ', $ica de o !etos. -eus m+todos c$iam o !etos de ti#os es#ec;'icos %ue so $eto$nados como uma inte$'ace. 7esse modo0 %uem #ossui a 'acto$B mani#ula inte$'aces e a l<&ica de %uais o !etos 'o$am e'eti"amente c$iados esta$, enca#sulada na 'acto$B. Mais detalhes em o htt#://....do'acto$B.com/#atte$ns/Patte$n/ st$act.as#1 .

C Refer2ncias
-./0 Kichte$0 Xe''$eB. /##lied Mic$oso't .(E) 5$ame.o$I P$o&$ammin& @4intellect0 2002A -.30 Mic$oso't. /##lication /$chitectu$e 'o$ .(E): 7esi&nin& /##lication and -e$"ices @M-7( ?i $a$B0 2003A -.40 MacIman0 /le1= M$ooIs0 8h$is= Mus B0 -te"e= Xezie$sIi0 Ed.a$d. .(E) 7ata /ccess /chitectu$e :uide @M-7( ?i $a$B0 *utu $o de 2001A -.=0 E$ich :amma0 Kicha$d >elm0 Kal#h Xohnson0 Xohn 3lissides= 7esi&n Patte$ns @/ddisonE 4esleB Pu 8o0 199HA

211209096.doc ltima atualizao: 29/04/2009 02:16:00 PMh

30 de 30