UNIVERSIDADEFEDERALDEPERNAMBUCO GRADUAÇÃOEMCIÊNCIADACOMPUTAÇÃO CENTRODEINFORMÁTICA TIMELINEWEBBROWSEREARQUITETURADESOFTWAREPARA APLICAÇÕESWEB2.0 TRABALHODEGRADUAÇÃO Aluno:LivarCorreiadeOliveiraCavalcantiCunha(lcocc@cin.ufpe.br) Orientador:Prof.SilvioLemosMeira(srlm@cin.ufpe.br)
24deSetembrode2006 2
ASSINATURAS EsteTrabalhodeGraduaçãoéresultadodosesforçosdoalunoLivarCorreia deoliveiracavalcanticunha,sobaorientaçãodoprofessorsilviolemosmeira,sob otítulode TimelineWebBrowsereArquiteturaparaAplicaçõesWeb2.0.Todos abaixo estão de acordo com o conteúdo deste documento e os resultados deste TrabalhodeGraduação. LivarCorreiadeOliveiraCalvancantiCunha SilvioLemosMeira 3
Timeisonmyside.Yesitis! Timeisonmyside (RollingStones 12X5) 4
Agradecimentos Estetrabalhomarcaofimdemaisumafasenaminhavida.Ajornadaatéaqui teriasidomaisdifícilsetivessepercorridoestecaminhosozinho.eusempreestive,e estarei bem acompanhado. É impossível agradecer a todas as pessoas que me ajudaramachegaratéaquiequevãomeajudarachegaraindamaislonge,portanto gostariadeagradecerprimeiroaspessoasquenãocouberemouqueeumeesquecer deagradecernaspróximaslinhasdestetexto. Gostaria de agradecer em segundo lugar minha família, os primeiros responsáveisporeuserquemeusouhoje.comcertezafoiamelhorcriaçãopossível. Gostariadeagradecertambémaosgrandesprofessoresquetive,todoseles,do começodocolégioatéofimdagraduação. Gostaria de agradecer a Allan e Rafael (Cabelo), pelas várias reuniões e discussões,queajudaramageraraversãofinaldestedocumento.etambém,renan, Thiago,Fernando,JoséCarlos,etodosqueforammeusamigos,maispróximosemais afastadosduranteagraduação. Porúltimo,gostariadeagradeceraKatharina,quepassouameacompanhar nosúltimosmeses,masseiqueestesmeseslogoserãoanos,equedesdejáestá fazendosacrifíciospelomeufuturoprofissionaleacadêmico. Gostaria de terminar este agradecimento como comecei, agradecendo as pessoasqueeunãociteiounãoreferencieiaqui.atodosobrigado,eseiqueaindavou termuitoqueagradeceratodosvocês. 5
6
Resumo Este trabalho se propõe a analisar o conceito de Web2.0 ede plataformawebe estabelecerumaarquiteturaparaaplicaçõesbaseadasnesteconceito.éapresentada uma visão geral destes conceitos, e em seguida são abordadas as principais tecnologiasusadasparadesenvolvimentodeaplicaçõesnaplataformaweb.aseguiré sugeridaumaarquiteturaqueuseestastecnologias.eporfimédescritaumaaplicação chamadade TimelineWebBrowser,quesebaseianoconceitodeWeb2.0eusaa arquiteturadescritanestetrabalho. Palavraschave:Web2.0,PlataformaWeb,WebServices,SOA,SOAP,Padrõesde Projetos,ArquiteturadeSoftware. Abstract ThisworkintendstomakeananalysisoftheWeb2.0andWebPlatformconceptsand establishanarchitecturetoapplicationsbasedonthisconcept.itpresentsanoverview oftheseconcepts,andthendescribesthemaintechnologiesusedonthedevelopment of web platform applications. Then it establishes an architecture that uses these technologies.atlast,itdescribesanapplicationcalledtimelinewebbrowser,which is based on the concepts of Web 2.0 and web platform and uses the architecture describedhere. KeyWords:Web2.0,WebPlatform,WebServices,SOA,SOAP,DesignPatterns, SoftwareArchitecture. 7
Índice 1.Int r o d ução...1 1 1.1.Objetivos...1 2 1.2.Tra bal ho s Existe n te s...1 2 1.3.Visão Geral...1 3 2.Web 2.0...1 4 2.1.Visão Geral...1 5 2.2.Um p o uco d e his t ória...1 6 2.3.Tecnologias Web 2.0...1 7 2.3.1.Platafor m a Web...1 7 3.Tecn ologias d a Platafor m a Web...1 9 3.1.Arq uite t u r a SOA...1 9 3.2.Web Services...2 1 3.2.1.XML...2 1 3.2.2.SOAP...2 2 3.2.3.WSDL...2 4 3.2.4.UDDI...2 7 4.Arq uite t u r a d e u m a a plicação Web 2.0...2 8 4.1.Int r o d uç ão ao p a d r ã o e m ca m a d a s...2 8 4.2.Int r o d uç ão ao p a d r ã o ar q uitet u r al d e N - Ca ma d a s...2 9 4.3.Aplicações b a s ea d a s e m se rviços...3 1 4.3.1.Ca m a d a Web...3 3 5.Ti meline Web Browser...3 4 5.1.Arq uite t u r a d o Timeline Web Browser...3 5 5.1.1.Estr u t u r a d e p acote s...3 5 5.1.2.Ca m a d a Cliente...3 5 5.1.3.Ca m a d a Web...3 6 5.1.4.Ca m a d a d e Negócios...3 8 5.1.5.Ca m a d a d e Da do s...4 0 Conclu s õe s...4 3 5.2.Tra bal ho s f u t u r o s...4 4 5.3. Con si der açõe s finais...4 4 Apê n dice A...4 5 Referê ncias...4 7 8
ÍndicedeFiguras Figu r a Figu r a Figu r a Figu r a Figu r a Figu r a Figu r a Figu r a Figu r a Figu r a Figu r a Figu r a Figu r a Figu r a Figu r a Figu r a Figu r a Figu r a 1: Google Maps, d el.icio.us, digg, Flickr, Yout u be...1 4 2: ThinkFree, Writely, EyeOS, Netvibe s...1 5 3: Arq uitet u r a SOA...1 9 4: Uma m e n s age m SOAP...2 3 5: Co m u nicação client e - s erviço u s a n d o WSDL...2 5 6: Diagra m a d e Objeto s WSDL...2 6 7: Pa dr ão a r q uite t u r al e m ca m a d a s...2 9 8: Pa dr ão a r q uite t u r al d e N - Ca m a d a s...3 1 9: Arq uitet u r a d a s a plicações d a pla taf or m a web...3 2 1 0: Ca ma d a Web...3 3 1 1: Estr u t u r a d e p aco te s...3 5 1 2: Ca ma d a Clien te d o Ti meline Web Browser...3 6 1 3: Co m u nicação Cliente - Servido r...3 7 1 4: Pa dr ão d e Proje to Co m p o site...3 9 1 5: Estr u t u r a d o Playback...4 0 1 6: Co m e n t á rios n o playback...4 0 1 7: Estr u t u r a d a p e r sis tê ncia d e d a d o s...4 1 1 8: Ca ma d a d e d a d o s...4 2 9
ÍndicedeListagens Listage m 1: Exe m plo d e XML...2 1 Listage m 2: Exe m plo d e Mensage m SOAP...2 4 Listage m 3: Especificação d e u m a o pe r ação p a r a u m se rviço...2 6 Listage m 4: Especificação d e u m d a d o d e e n t r a d a p a r a o pe r ação WSDL...2 6 Listage m 5: Especificação d e u m d a d o d e s aí da p a r a o pe r ação WSDL.2 7 Listage m 6: Invacação d e u m web s e rvice...3 8 Listage m 7: Arq uivo WSDL d e u m s e rviço d o Ti meline Web Browser...3 8 10
1. Introdução Alongjourneybeginswiththefirststep NeilArmstrong Comumaalusãoaosnúmerosdeversões,normalmenteusadosparaindicar novasversõesdesoftware,otermo Web2.0 indicaumaformaaprimoradadaworld WideWeb. Estanovawebdáênfaseaferramentaseplataformasquepermitemao usuárionãoapenasserumreceptordeinformações,masumprodutor. AWeb2.0sediferenciadesuaversãoanterior(Web1.0)àmedidaqueelase distanciadossitesestáticos,dousodeengenhosdebuscaedanavegaçãodeumsite paraumoutro,emdireçãoaumawebmaisdinâmicaeinterativa. Atualmente,váriosfatorescontribuemparaoavançodawebemdireçãoasua versão2.0: Apopularizaçãodabandalarga,proporcionandoumusocadavezmaiorda internet. Oaumentodepessoasusandoainternetpararealizar atividadesqueantes eramrealizadasdeformaoffline,comocompras,leituradenotíciasetc. ApopularizaçãodetecnologiascomoAJAX,quepossibilitamaousuáriouma experiênciadeusomaisricanaweb. São exatamente tecnologias como AJAX que possibilitam a web imitar aplicaçõesdesktopcomoprocessadoresdetexto,planilhasdecálculoeprogramasde apresentaçãodeslides.alémdesistemasoperacionaisquefuncionamdentrodeum browser. Não sistemas operacionais em si, mas sim, plataformas de aplicações. Serviços com características e aplicações similares a um ambiente desktop. A principaldiferençaéqueelespodemserusadosapartirdequalquerbrowser. Dandoumpassoadiante,ossites Web2.0 permitemquedesenvolvedores externos construam novos serviços em cima de serviços providos por sites já existentes, semelhante à maneira como a Microsoft incentiva os programados a desenvolverememcimadowindows. 11
Osserviçosdestessites Web2.0 sãoconstruídosedisponibilizadosparaos desenvolvedores em geral em cima de arquiteturas de web services que usam ferramentas de publicação para publicar suas APIs para a comunidade de desenvolvedores. Istolevaaumimportanteconceitode Web2.0 :odawebcomoplataforma deserviços,ondeaplicaçõesweb basednãodeveriamoferecersuasfuncionalidades apenas através do browser, mas também através de web services. Desta forma, transformandoestasaplicaçõesemprovedoresdeserviçoseawebemplataforma destesserviços,semelhanteaumsistemaoperacional. 1.1.Objetivos Estetrabalhotemcomoobjetivorealizarestudodoconceitodeweb2.0que coloca a internet como uma plataforma de desenvolvimento baseada em serviços, alémdadefiniçãodeumaarquiteturaparaaplicaçõesbaseadasnesteconceito.estes serviços são disponibilizados através de web services, que são usados por outras aplicaçõesparaprovernovasfuncionalidadesaindamaiscomplexas.otrabalhopossui doisobjetivosprincipais,listadosabaixo: 1. Definição de uma arquitetura para aplicações que se baseiam no conceitodequeainternetseriaumaplataformaparadesenvolvimento deaplicaçõesbaseadasemserviços; 2. DesenvolvimentodeumTimelineWebBrowser,umbrowserquegrava asaçõesdousuáriorealizadasnainterneteasdisponibilizaatravésde webservices,permitindoacriaçãodenovosserviços. 1.2.TrabalhosExistentes Apesquisadereferênciasbibliográficasmostrouqueexistemdiversosartigos quetratamdosconceitosdeweb2.0. Existem também livros e artigos que apresentam as tecnologias de Web Services e de Service Oriented Architecture. Porém, muitos destes documentos apresentamestesconceitosatreladosatecnologiasespecíficas,comojavaou.net. 12
Estetrabalhonãopossuiprecedente,poistemcomoobjetivounirtodosestes conceitosnacriaçãodeumaarquiteturapadrãoindependentedeprodutosespecíficos. 1.3.VisãoGeral Estedocumentoestádivididonosseguintescapítulos: Introdução: apresentaocontextonoqualotrabalhoseinsere,bem comoseusobjetivos. Web2.0:apresentaumavisãogeraldotermoWeb2.0,suahistóriae tratamaisafundoadefiniçãotratadanestetrabalho awebcomo plataformadesoftware. TecnologiasdaplataformaWeb: apresentaasprincipaissoluçõese tecnologiasusadasparaseconstruiraplataformaweb. Arquiteturadeumaaplicação Web2.0: apresentaumaarquitetura independentedesoluçõesproprietáriasparaconstruçãodeaplicações deacordocomoconceitodewebcomoplataformadesoftware. TimelineWebBrowser: descreveumtimelinewebbrowseresua arquitetura. Conclusões e considerações finais: conclui o trabalho e apresenta pontosdecontinuidade. 13
2. Web2.0 Theworldischanging. TreeBeard(TheLordoftheRings:TheTwoTowers) OtermoWeb2.0serefereaumasegundafasededesenvolvimentodaweb,no quedizrespeitoasuaarquitetura,suasaplicaçõeseprincipalmente,suasformasde uso.otermoestáassociadoaváriossignificados,entreeles: A transição de sites estáticos para gerenciadores de conteúdo e funcionalidades,transformandoawebemplataformacomputacional; Umfenômenosocialrelacionadoàcriaçãoedistribuiçãodeconteúdo naweb,deformaabertaedescentralizada; Umamudançanovaloreconômicodaweb; Umtermodemarketing,paradiferenciarosnovosnegóciosdaweb daquelasdabolhadainternet. Figura1:GoogleMaps,del.icio.us,digg,Flickr,Youtube Noentanto,aindanãosechegouaumconsensoemrelaçãoaosignificado termo.talvez,umaformamaissimplesdeentenderosignificadodeweb2.0seja 14
atravésdaassociaçãodotermocomprodutosbaseadosnosseusprincípios.alguns desses produtosmais conhecidossãogooglemaps,del.icio.us,digg,flickr e Youtube. 2.1.VisãoGeral Aversãoanteriordaweb(Web1.0)consistiabasicamentedepáginasHTML estáticasqueeramraramenteatualizadas,setanto.osucessoda Era.com dependia de uma webmais dinâmica, ondesistemas degerenciamento deconteúdo (CMS) geravam páginas HTML dinâmicas a partir de um banco de dados que podia ser atualizadomais facilmente.emambos os casos, aquestãovisualeraconsiderada intrínsecaaousodaweb,tornandoestéticavisualumfatordeextremaimportância.a Web 2.0 transforma a aparência das aplicações web, deixando as com cara de aplicaçõesdesktopeelevandooconceitodepáginasdinâmicas.algunsexemplosde produtos, onde isso acontece de forma mais explicita, são ThinkFree, Writely, EyeOSeNetVibes. Figura2:ThinkFree,Writely,EyeOS,Netvibes A web é, cada vez mais, baseada em interação e em redes sociais rudimentares. De certa forma, sites Web 2.0 são como portais dependentes de usuários.awebestácadavezmenossobocontroledeespecialistaseseaproximando maisdoseuconceitooriginaldemeiodecomunicaçãodemocráticoepessoal. 15
Comumaalusãoaosnúmerosdeversões,normalmenteusadosparaindicar novasversõesdesoftware,otermo Web2.0 indicaumaformaaprimoradadaworld WideWeb.OtermofoipopularizadoporumaconferênciapatrocinadapelaO Reilly MediaepelaMediaLivedepoisqueDaleDougherty,mencionouotermoemuma sessão de brainstorming.dougherty afirmouque a webestava passandopor uma revolução. 2.2.Umpoucodehistória Na abertura da primeira conferência sobre Web 2.0, O Reilly e Battelle resumiramascaracterísticasprincipaisdasaplicações2.0: A web como uma plataforma, onde a web se coloca como uma provedora de serviços que podem ser usados para criar novas aplicações; Dadoscomoaforçaprincipal; Efeitosderedecriadosporuma Arquiteturadeparticipação ; Inovaçãonamontagemdesistemasesites.Ondeajunção(mashup)de doisserviçoscomuns,geraumnovo,completamenteinovador; Modelodeprogramaçãoleve,apartirdousodewebservicesebaixo acoplamento; Fimdociclodereleasedesoftware,ondesoftwarepassaaserum serviço, ao invés de um produto, exigindo das companhias uma manutençãodiáriadeseusserviços; Softwareacimadoníveldeumúnicodispositivo,ouseja,nãoestá maislimitadoaumaplataformapc. Assim, uma forma de uso inicial do termo Web 2.0 se referia a Web Semântica,e,decertaforma,osdoisconceitossecomplementam.Acombinaçãode sistemasderedessociais,comodesenvolvimentodefolksonomias1baseadasemtags edisponibilizadasatravésdeblogsewikis criaumabasenaturalparaumambiente semântico.apesardastecnologiaseserviçosdaweb2.0seremmenospoderososque 1 Folks o n o mia é u m n e ologis m o p a ra a p r á tica d e categori z ação colabora tiva u s a n d o p alavra s d e livre e scolha. 16
uma internetonde as máquinas podem entender e extrair significados, a Web 2.0 representaumpassonessadireção. 2.3.TecnologiasWeb2.0 A infra estrutura da Web 2.0 é complexa e está em evolução. Ela inclui softwaresbaseadosemservidores,protocolosdecomunicação,browsersbaseadosem padrões evárias aplicações cliente.estas abordagens diferentes ecomplementares provêemaweb2.0comcapacidadesdecriação,disseminaçãoearmazenamentode informaçõesalémdaimaginadainicialmenteparapáginasweb. ExemplosdetecnologiascomumenteusadasemsitesWeb2.0são: Ajax XULeSVG RSS SOAeWebServices 2.3.1.PlataformaWeb Web Platform (Plataforma Web) foi o nome da primeira conferência promovida pela O Reilly e pela MediaLive tratando do tema Web 2.0. Durante a conferênciaelesperceberamqueweb2.0iamuitoalémdesteconceitoinicial,mas istonãotornouesteaspectomenosimportante. O conceito de plataforma web se baseia na idéia de aplicações que são desenvolvidasusandoserviçosdisponibilizadosnainternet.assim,awebfuncionade forma muito semelhante a um sistema operacional, como Windows, que fornece funções (serviços) para que terceiros possam desenvolver novas aplicações e funcionalidades. A web fornece seus serviços através de APIs (Application Programming Interface),quesãoconjuntosdefunçõesusadaspelosprogramadores.Exemplosde APIssãoasdisponibilizadasnaMFC(MicrosoftFoundationClasses),usadaspara desenvolver aplicações windows; a API de java.io, que fornece funções para manipulaçãodearquivosemjava;ouainda,aapidogooglesearch,disponibilizada 17
atravésdawebparaqueoutrosdesenvolvedorespossamfazerusodaenginedebusca dogoogleemseusprópriossites,desenvolvendonovoseinovadoresserviços. AsaplicaçõeswebquedisponibilizamouutilizamAPIsnawebimplementam a arquitetura SOA (Service Oriented Architecture) através da tecnologia de web services.webservicesusamxmlparadescreverasfunçõesdaapiepararealizaro transporte de informações do cliente para o servidor, e vice versa, de forma independente de plataforma e de linguagem de programação, garantindo a heterogeneidadedaweb. 18
3. TecnologiasdaPlataformaWeb Liveinfragmentsnomore.Onlyconnect E.M.Forster O desenvolvimento na plataforma web exige que serviços possam ser desenvolvidoseusadosdeformaindependentedeplataformaedelinguagem.essa necessidade se apresenta pelo fato da web ser um ambiente extremamente heterogêneo.astecnologiasdescritasabaixoatendemperfeitamenteaesterequisitoe sãoasmaislargamenteusadas.umaindicaçãodissoéumrelatóriodagartnerquediz que Em 2008, SOA será uma prática prevalecente de engenharia de software, acabandocomumdomíniode40anosdearquiteturasdesoftwaremonolíticas e aindaque Durante2008,SOAewebservicesserãoimplementadosjuntosemmais de75%dosprojetosqueusaremsoaouwebservices. Estastecnologiasdeformaalgumacobremtodasastecnologiasrelacionadasà Web 2.0, mas são as tecnologias básicas mais usadas para o desenvolvimento de aplicaçõesqueseencaixamnoconceitodeplataformaweb. 3.1.ArquiteturaSOA Figura3:ArquiteturaSOA UmaarquiteturaSOA(Service OrientedArchitecture)éumaabordagemna qualasaplicaçõesfazemusodeserviçosdisponíveisemumarede,comoaworld Wide Web. Implementar uma arquitetura SOA envolve o desenvolvimento de 19
aplicaçõesqueusamserviçosouquesãodisponibilizadascomoserviços,deforma queoutrasaplicaçõesposamusarestesserviçosevice versa. Umserviçopodeproverumaúnicafuncionalidadesimples,comorealizara conversãodevalordeumamoedaparaoutra,atépodeprovarumconjuntodefunções complexas, como lidar com as várias operações em um sistema de reservas de passagensaéreas. Uma maneira deolhar paraa SOA é como uma abordagem paraconectar diferentesaplicações(disponibilizadascomoserviços)deformaqueelaspossamse comunicar umas com as outras. Em outras palavras, SOA é uma forma de compartilhar funções (serviços) de uma maneira abranjente e flexível. E esta é exatamenteasuaprincipalcaracterísticaparaaweb2.0. O conceito de SOA não é novo. Service Oriented Architectures têm sido usadasporanos.oquediferenciasoadeoutrosmodelosdearquiteturaéobaixo acoplamento. Esse baixo acoplamento significa que o cliente de um serviço é, essencialmente,independentedoserviço.aformacomoocliente(quepodeseraté umoutroserviço)secomunicacomoserviçoindependedamaneiracomooserviço foiimplementado.issosignificaqueoclientenãoprecisasaberalinguagemnaqualo serviçofoiimplementadoouemqualplataformaoserviçoestárodando,característica essencialparaaplataformaweb.nasoaoclientesecomunicacomoserviçoatravés de uma interface bem definida, edeixa que oserviço em sirealize as operações necessárias. Se a implementação de um serviço mudar, o cliente continua se comunicandocomoserviçodamesmamaneira,desdequeainterfacecontinuea mesma. Noentanto,oqueérelativamentenovoemSOAsãooswebservicesbaseados emsoa.umwebserviceéumserviçoquesecomunicacomumclienteatravésde umconjuntodeprotocolosetecnologiaspadrões.estespadrõesdewebservicessão implementadosportodososgrandesvendedoresdesoftware,tornandopossívelpara clienteseserviçossecomunicaremdeformaconsistentedentrodeumagrandegama deplataformasesistemasoperacionais.estasadoçõesuniversaisdoswebservicesos tornaaabordagemmaiscomumparaimplementarumasoa. 20
3.2.WebServices Web Services representam uma nova geração de tecnologia de desenvolvimento.comelaépossívelcriaraplicaçõesmodulareseindependentesque sãofacilmentedistribuídasemqualquerestruturaderedestcp/ip,poisestefoium dosprincipaisfundamentosdesuaimplementação. Umgrandepontopositivodestatecnologiaéqueacriaçãodeservidorese clientesindependedalinguagemdeprogramaçãoedosistemaoperacionalemquesão implementados.istotornaestetipodetecnologiaidealparaoambienteheterogêneo daweb. A abordagem de web services é baseada em padrões que são amplamente aceitoseusados.estaaceitaçãoabranjentetornapossívelqueclienteseserviçosse comuniquemeseentendammesmoemumavariedadedeplataformaseindependente delinguagens.osprincipaispadrõeseprotocolosusadosporwebservicessão:xml, SAOP,WSDLeUDDIeebXML,descritosaseguir. 3.2.1.XML extensiblemarkuplanguage(xml)setornouopadrãoparatrocadedados naweb.comoopróprionomeindica,xmléumalinguagemdemarcação,como HTML.Elafazusodetagspara marcar aoconteúdodeumdocumento.umatag XML identifica a informação dentro de um documento, e também identifica (ou marca)aestruturadainformação.porexemplo,aestruturaxmlaseguiridentifica informações a respeito de uma estante de livros. Os marcadores XML também descrevemaestruturadaestante.nestaestrutura,umelemento<estante>,possuium subelemento <livro>, que por sua vez possui três outros subelementos, <titulo>, <autor>e<preco>. <estante> <livro> <titulo>thesoawithinreach</titulo> <autor>dionhinchcliffe</autor> <preco>50.00</preco> </livro> </estante> Listagem1:ExemplodeXML 21
Apesardastagsacimapossuírem,aparentemente,umsignificadoinerentepara a informação que eles identificam, elas não possuem. Informações marcadas em XMLpossuemsignificaapenasseaspessoasassociaremsignificadosastagsXML. Apenasseaspessoasconcordaremcomossignificadosdastagseusaremastagsde formaconsistentexmlpoderáproverumaformaconsistentedetrocadeinformações. SuasaplicaçõespodemtrocardocumentosXMLentresi,eprocessarainformação nestesdocumentos,confiandonossignificadosqueforamestabelecidosparaastags. Documentos XML possuem uma estrutura bem formada, ou seja, toda tag XMLdevepossuirumatagdefechamento(<estante>...</estante>)equalquertag quecomecedentrodeumaoutratemquefecharantesdofimdaoutra.tipicamente, umdocumentoxmléassociadoaumesquema(schema)queespecificasuas regras gramaticais.estedocumentoespecificaquetagssãopermitidasdentrododocumento XML,aestruturadestastags,alémdeoutrasregras. Como documentos XML válidos devem ser bem formados e estar em conformidadecomoesquemaaqueestãoassociados,elessetornamrelativamente fáceisdeprocessar.comoresultado,xmléopadrãogeralmenteadotadoparatroca dedadosemwebservices. 3.2.2.SOAP Apesar de XML ser um meio efetivo para troca de informações, não é o suficienteparaatrocadedadosnaweb.porexemplo,aindaénecessáriodefinirum protocoloparaaformataçãodeumdocumentoxml,deformaqueoreceptorentenda oqueéaparteprincipaldamensagem, payload,equepartescontêminstruçõese conteúdoadicionais. 22
Figura4:UmamensagemSOAP Este protocolo é o Simple Object Access Protocol (SOAP). SOAP é um protocolobaseadoemxmlparatrocadeinformaçõesemumambientedistribuído, como aweb.soapestabeleceumformatodemensagemcomumparaatrocade dadosentreclienteeserviço. OelementobásicoparaumatransmissãousandoSOAPéamensagem(SOAP Message),queéformadaporumelementoobrigatório,oenvelope(SOAPEnvelope), porumcabeçalhoopcional(soapheader),emaisumelementoobrigatório,ocorpo damensagem. Oenvelopeéformadopordoiselementos,umXMLnamespaceeumencoding style. O XML namespace especifica os nomes que podem ser usados dentro da mensagemeevitamconflitosdenomes.o encodingstyle defineostiposdedados reconhecidospelamensagem. Se a mensagem possuir um cabeçalho, ele será usado para estender a mensagemdeformamodular.éimportanteentenderqueumamensagemviajadeum clienteparaumservidor,equenocaminhoelapassaporumconjuntoindeterminado denós.cadanóéumaaplicaçãoquepoderecebereencaminharmensagenssoap.e um nó intermediário pode prover serviços adicionais, como realizar operacionais relacionadasàsegurança.ocabeçalhopodeserusadoparaindicarqueénecessário realizar algum processamento extra em um dos nós intermediários. Este processamentoseriaindependentedoprocessamentofeitononófinal. Ocorpocontémamaiorpartedeumamensagem,ouseja,apartedestinadaao nódedestino.oexemploabaixomostraumamensagemsoapcomoobjetivode 23
obter o preço de um livro. Os elementos <SOAP ENV: Envelope>, <SOAP ENV: Header>e<SOAP ENV:Body>marcamrespectivamenteoenvelope,ocabeçalhoeo corpo da mensagem. O elemento <SOAP ENV: mustunderstand= 1 > dentro do cabeçalhoindicaqueoreceptordamensagemdeveprocessá laobrigatoriamente. <SOAP ENV:Envelope xmlns:soap ENV= http://schemas.xmlsoap.org/soap/envelope/ SOAP ENV:encodingStyle= "http://schemas.xmlsoap.org/soap/encoding/"> <SOAP ENV:Header> <t:transactionxmlns:t="some URI"> <SOAP ENV:mustUnderstand="1"> </t:transaction> </SOAP ENV:Header> <SOAP ENV:Body> <m:getbookpricexmlns:m="some URI"> <title>mylifeandtimes</title> <author>felixharrison</author> </m:getbookprice> </SOAP ENV:Body> </SOAP Envelope> Listagem2:ExemplodeMensagemSOAP MensagensSOAPsãoindependentesdeplataformaesistemaoperacional,e podemsertransportadasusandováriosprotocolos,porexemplo,httpousmtp. 3.2.3.WSDL Comoumclientesabequeformatousarquandofizerumarequisiçãodeum serviço? Como o cliente e o serviço sabem o que uma requisição significa? As respostasparaestasperguntasestãoemumdocumentoxmlchamadodedocumento WSDL. Este documento contém a descrição da API de um web service. WSDL define um esquema XML para descrição de um web service. Para descobrir a especificaçãodeumwebservice,umclienteprecisaencontrarodocumentowsdl deste serviço. A forma mais típica de localizar este documento é através de um ponteiroparaestedocumentoquepodeserencontradonoregistrodowebservice,que podeestaremumregistrouddiouemumregistro/repositórioebxml. Porexemplo,alguémregistraumserviço.Oregistroincluiumponteiropara umarquivowsdlquepossuiodocumentowsdlparaesteserviço.umcliente 24
procura o registro e encontra o serviço. Um programador usa as informações no documento WSDL para conhecer a interface do serviço e realizar as chamadas necessáriasàsfunçõesdestainterface. Figura5:Comunicaçãocliente serviçousandowsdl UmdocumentoWSDLdescreveumwebservicecomoumacoleçãodeitens abstratoschamadasdeportsouendpoints.eletambémdescreve,deformaabstrata,as açõesrealizadasporumwebserviceeasinformaçõestransmitidasparaestasações. Ações sãorepresentadasporoperaçõesedados sãorepresentadospor mensagens. Umacoleçãodeoperaçõeséchamadadeporttype. O que transforma uma descrição WSDL de abstrata em concreta é um binding.umbindingespecificaumprotocoloderedeeumformatodemensagem paraumporttypeemparticular.umportédefinidoassociandoumendereçoderede comumbinding. 25
Figura6:DiagramadeObjetosWSDL Se um cliente localizar um documento WSDL e encontrar o binding e o endereçoderedeparacadaporta,elepodechamarasoperaçõesdoserviçodeacordo comoprotocoloeoformatodemensagensespecificado. O ApêndiceA possuiumexemplodeumdocumentowsdlqueespecifica umserviçodebuscadelivrosonline.noexemplo,umaoperaçãoéespecificadapara oserviço: <operationname= getbooks... Listagem3:Especificaçãodeumaoperaçãoparaumserviço Amensagemdeentradaparaaoperação,BookSearchInputpossuiumastring chamadaisbn: <complextype> <all> <elementname="isbn"type="string"/> </all> Listagem4:EspecificaçãodeumdadodeentradaparaoperaçãoWSDL 26
A mensagem de saída da operação, BookSearchOutput retorna uma string chamadatitle: <complextype> <all> <elementname="title"type="string"/> </all> Listagem5:EspecificaçãodeumdadodesaídaparaoperaçãoWSDL 3.2.4.UDDI Como foi mencionado anteriormente, uma arquitetura SOA pode possuir tambémumserviçoqueprovêumdiretórioouregistrodeserviços.mascomoum serviço pode ser descrito em um registro de forma que um outro registro possa facilmentelocalizá lo?o UniversalDescription,DiscoveryandIntegration (UDDI) descreve como publicar e recuperar informações sobre serviços em um registro baseadoemuddi. OregistroUDDIpodeservistocomoumconjuntode PáginasAmarelas de webservices.comoaspáginasamarelasdenúmerosdetelefone,oregistrouddi provêinformaçõesemrelaçãoaumserviço,comoonomedoserviço,umabreve descrição do que ele faz, um endereço onde o serviço pode ser acessado, e uma descriçãodainterfaceparaacessaresteserviço. 27
4. ArquiteturadeumaaplicaçãoWeb2.0 Imaginationismoreimportantthanknowledge IsaacNewton Aarquiteturapropostanestecapítulofoiprojetadacomoobjetivodepermitir odesenvolvimentodeaplicaçõesbaseadasnoconceitodewebcomoplataformade software.porisso,essasaplicaçõesdevemsercapazesdeutilizarserviçosdisponíveis naweb,bemcomodisponibilizarserviçosprópriostambémnaweb. Além desta característica, a arquitetura também tem como objetivo ser genéricaobastanteparapoderserusadanodesenvolvimentodeoutrasaplicaçõespara aplataformaweb. Dois padrões arquiteturais serão usados para definir a arquitetura geral. O padrão em camadas (Layers pattern), que ajuda a separar os vários conceitos presentes no tipo de aplicação que a arquitetura visa atender. E o padrão de N Camadas(N Tierarchitecturepattern),umaderivaçãodopadrãoemcamadas,com umaaplicaçãomaisespecífica. 4.1.Introduçãoaopadrãoemcamadas Opadrãoemcamadasébásicopornatureza,masextremamenteimportantena prática. O conceito essencialdo padrão é que as aplicações devemser projetadas divididasemcamadas,comcadacamadarepresentandoumconjuntodeconceitos relacionados.cadacamadapossuiclassesecomponentesrelacionados,epossuiuma interfaceestruturadaeummecanismodecomunicaçãoparaacessarascapacidadesde umaoutracamada. Ascamadastipicamenteseempilhamumasemcimadasoutras,construindo asfuncionalidadesgeraisdaaplicação,comomostraa Figura7.Écomumqueuma camadasóacesseacamadaimediatamenteinferioraela,apesardeque,comumente, ascamadastenhamacessoamúltiplascamadasnaprática. Apartemaisdifícilemtrabalharemcamadasédeterminarquantascamadasa aplicação será separada e como realizar a separação entre elas. A separação em 28
camadasdevefazersentidodeumpontodevistatécnicoetambémdeumpontode vistadeestruturaorganizacional.énecessáriomanteremmentequeoaspectotécnico prevalecerá sobre o aspecto organizacional, portanto é necessário ter cuidado ao consideraroméritotécnicocomoprincipioorganizacionalprimário.camadastípicas são: a camada de apresentação, camada de negócios, camada de dados e camada cliente.porexemplo,aspreocupaçõesdacamadadeapresentaçãocomobrowsersão completamentediferentes das preocupações da camada de dados com o banco de dados. CamadaX CamadaY CamadaZ Figura7:Padrãoarquiteturalemcamadas Épossívelsepararascamadasdeváriasformasdiferentes.Tambémépossível implementaraarquiteturaemcamadaseaindaassimrodartodaaaplicaçãoemum únicoprocessofísico.tambémépossívelsepararascamadasemprocessosemum único computador, ou ainda, separar as camadas em processos em diferentes computadores,essencialparaaimplementaçãonosconceitosdaplataformaweb. Noentanto,apenasdizerqueaarquiteturadeumaaplicaçãoéemcamadasnão éosuficienteparaosdesenvolvedoreseprojetistas.énecessárioiralémeexplicaros conteúdosdecadacamadanaarquitetura. 4.2.IntroduçãoaopadrãoarquiteturaldeN Camadas 29
O padrão arquitetural de N Camadas é uma generalização do padrão arquiteturaldetrêscamadas.opadrãoarquiteturaldetrêscamadaséformadopor umacamadadeapresentação,umacamadadelógicadonegócioeumacamadade persistênciadedados.noentanto,umaarquiteturadetrêscamadasnãopossuiespaço para uma camada de comunicação, própria para os web services, necessários a disponibilizaçãodeserviçosparausodeterceiros. Uma descrição das camadas, assim como uma descrição de como essas camadassecomunicam,tipicamentefazempartedadescriçãodeumaarquiteturade N Camadas.A Figura8 mostraumexemploquepossuiumacamadacliente,uma camada de apresentação, uma camada de lógica do negócio e uma camada de persistência de dados. A comunicação entre a camada cliente e a camada de apresentação pode acontecer usando Hypertext Transfer Protocol (HTTP), a comunicaçãoentreacamadadeapresentação,acamadadenegóciospodeacontecer usando Remote Method Invocation (RMI) e a comunicação entre a camada de negócioseacamadadedadospodeacontecerusandojdbc(éimportanteressaltar queastecnologiascitadasacimasãoapenasexemplo). No entanto, uma aplicação que funcione de acordo com os conceitos de plataforma web, precisa ter seus serviços acessados a partir de qualquer outra aplicação na web, ou seja, ela possui múltiplos pontos de acesso ao sistema. Os usuáriospodemusarosistemaapartirdeumainterfacegráfica,eprogramaspodem acessarosistemaapartirdeapis.odesenvolvedordosistema,edosserviços,não sabetodasasformasqueosclientesdaaplicaçãovãousarseusserviços;elespodem desenvolver sua própria lógica, ou sua própria camada de apresentação baseadas nessesserviços. 30