FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃO RAPHAEL BATISTA SALDANHA DESENVOLVIMENTO DE UMA FERRAMENTA COLABORATIVA FUNDAMENTADA NOS CONCEITOS DE WEB 2.0 Fortaleza 2008 RAPHAEL BATISTA SALDANHA DESENVOLVIMENTO DE UMA FERRAMENTA COLABORATIVA FUNDAMENTADA NOS CONCEITOS DE WEB 2.0 Monografia apresentada para obtenção dos créditos da disciplina Trabalho de Conclusão do Curso da Faculdade Farias Brito, como parte das exigências para graduação no Curso de Ciência da Computação. Orientador: Me. Ricardo Wagner. Fortaleza 2008 II DESENVOLVIMENTO DE UMA FERRAMENTA COLABORATIVA FUNDAMENTADA NOS CONCEITOS DE WEB 2.0 __________________________________ Raphael Batista Saldanha NOTAS: PARECER: MONOGRAFIA (ESCRITA): APRESENTAÇÃO (ORAL): BANCA EXAMINADORA: _______________________________________________ Prof. Me. Ricardo Wagner Cavalcante Brito (Orientador) _______________________________________________ Profª. Dra. Wietske Ineke Meyering (Examinador) _______________________________________________ Prof. Me. Sérgio Araújo Yunes (Examinador) III RESUMO Devido à necessidade de fornecer um meio no qual alunos, professores e colaboradores da Faculdade Farias Brito possam compartilhar conhecimento e informações, torna-se indispensável o desenvolvimento de uma aplicação que realize essa tarefa. A realização dessa pesquisa foi motivada pelo objetivo de possibilitar o compartilhamento, bem como a gestão do conhecimento gerado no contexto da Faculdade Farias Brito. Baseado nos conceitos de engenharia de software descritos por Ort (2005) e nos fundamentos do desenvolvimento de aplicações web descritos por O’Reilly (2004), o desenvolvimento de um software colaborativo foi a solução encontrada para permitir gestão do conhecimento no contexto da Faculdade Farias Brito. Foi realizada uma revisão bibliográfica sobre os métodos, as ferramentas e as tecnologias mais utilizadas atualmente, e em especial, as que possibilitam o desenvolvimento de aplicações web. O desenvolvimento do software FFB Wiki foi a solução metodológica adotada para fornecer um meio no qual alunos, professores e colaboradores da Faculdade Farias Brito possam compartilhar conhecimento entre si. Como resultado desse trabalho, fazendo uso de tecnologias que possibilitam um melhor desempenho e uma maior usabilidade e tendo como base uma arquitetura de software bem estrutura, foi obtido um meio eficaz e de fácil utilização que permite o desenvolvimento intelectual, pessoal e profissional dos alunos, professores e colaboradores da Faculdade Farias Brito. Palavras chave: Web 2.0, Plataforma web, Web Services, SOA, SOAP e Arquitetura de Software. IV A meu irmão Alisson Batista de Medeiros V AGRADECIMENTOS Aos meus pais, Francisco Cunha Saldanha e Zidiê Batista de Medeiros, a minha avó Antonia Batista de Almeida e à minha irmã, Sara Batista de Medeiros, pelo apoio, dedicação, conselhos e admirável paciência. Ao Professor Jorge Albuquerque, por seu apoio e estimulo no início do curso. Ao Professor Ricardo Wagner, pela confiança, amizade, dedicação, competência e inestimável orientação, estando sempre disponível e comprometido com a qualidade do trabalho. Ao Professor Pitágoras Martins, pelo estímulo, confiança, amizade e dedicação. Ao meu amigo Felipe Oquendo Nogueira, por ter me ensinado e me guiado em todos esses anos de faculdade. Ao meu amigo Patrick Romero Quinderé Frota, por seu apoio incondicional em todos os momentos. Aos colegas e professores do curso, pelo incentivo e apoio. A todos aqueles que de forma direta ou indireta, colaboraram para a conclusão deste trabalho. VI SUMÁRIO INTRODUÇÃO................................................................................................................ 1 1 Web 2.0..................................................................................................................... 5 1.1 Tecnologias da Web 2.0 ............................................................................... 6 1.2 Plataforma Web ............................................................................................ 7 1.3 Tecnologias da Plataforma Web................................................................... 8 1.3.1 SOA .......................................................................................................... 9 1.3.2 Web Services ............................................................................................ 9 2 Tecnologias............................................................................................................. 18 2.1 Arquitetura Cliente/Servidor ...................................................................... 18 2.2 Linguagem HyperText Markup .................................................................. 19 2.3 Cascading Style Sheet e JavaScript ............................................................ 20 2.4 Linguagem Estruturada de Consultas ......................................................... 21 2.5 Windows Communication Foundation....................................................... 21 2.6 LINQ........................................................................................................... 22 3 Metodologia............................................................................................................ 24 4 Arquitetura Proposta............................................................................................... 27 4.1 Camada de Apresentação............................................................................ 27 4.2 Camada de Serviços.................................................................................... 30 4.3 Camada Lógica ........................................................................................... 31 4.4 Camada de Dados ....................................................................................... 39 5 FFB Wiki ................................................................................................................ 47 5.1 Desenvolvimento do FFB Wiki.................................................................. 48 5.2 Interfaces do FFB Wiki .............................................................................. 48 5.2.1 Módulo Arquivos.................................................................................... 49 5.2.2 Módulo Cursos ....................................................................................... 53 5.2.3 Módulo Debates...................................................................................... 55 5.2.4 Módulo Perguntas................................................................................... 59 5.2.5 Módulo Usuários .................................................................................... 63 5.3 Funcionalidades da Solução ....................................................................... 65 6 Resultados Obtidos ................................................................................................. 66 7 Conclusão ............................................................................................................... 67 7.1 Trabalhos Futuros ....................................................................................... 67 8 Referências Bibliográficas...................................................................................... 68 VII LISTA DE FIGURAS Figura 1 – Exemplo de XML.......................................................................................... 11 Figura 2 – Exemplo de Mensagem SOAP...................................................................... 12 Figura 3 – Exemplo do elemento <definitions> ............................................................. 13 Figura 4 – Exemplo do elemento <types>...................................................................... 14 Figura 5 – Exemplo do elemento <message>................................................................. 14 Figura 6 – Exemplo do elemento <portType> ............................................................... 15 Figura 7 – Exemplo do elemento <binding>.................................................................. 15 Figura 8 – Exemplo do elemento <service>................................................................... 16 Figura 9 – UDDI............................................................................................................. 17 Figura 10 – Arquitetura Cliente/Servidor....................................................................... 19 Figura 11 – Exemplo de consulta em uma fonte de informações em memória utilizando LINQ............................................................................................................................... 22 Figura 12 – Arquitetura do LINQ................................................................................... 23 Figura 13 – Comunicação entre a Camada de Apresentação e a Camada Web ............. 28 Figura 14 – Diagrama de entidades ................................................................................ 29 Figura 15 – Comunicação na camada de serviços.......................................................... 31 Figura 16 – Interfaces da camada lógica ........................................................................ 32 Figura 17 – Classes concretas da camada lógica............................................................ 34 Figura 18 – Interfaces da camada de dados.................................................................... 40 Figura 19 – classes concretas da camada de dados ........................................................ 42 Figura 20 - Tela de Arquivos.......................................................................................... 49 Figura 21 - Tela de Filtros de Arquivo ........................................................................... 50 Figura 22 – Tela de Versões de Arquivo........................................................................ 50 Figura 23 – Tela de Manutenção de Arquivo ................................................................. 51 Figura 24 – Tela de Compartilhamento de Arquivo....................................................... 51 Figura 25 – Tela de Assuntos de Arquivo ...................................................................... 52 Figura 26 – Tela de Manutenção de Assuntos de Arquivo............................................. 52 Figura 27 – Tela de Cursos............................................................................................. 53 Figura 28 – Tela de Filtros de Curso .............................................................................. 54 Figura 29 – Tela de Manutenção de Curso..................................................................... 54 Figura 30 – Tela de Debates ........................................................................................... 55 Figura 31 – Tela de Manutenção de Debates ................................................................. 56 Figura 32 – Tela de Itens de Debate ............................................................................... 57 Figura 33 – Tela de Manutenção de Itens de Debate ..................................................... 58 Figura 34 – Tela de Perguntas ........................................................................................ 59 Figura 35 – Tela de Manutenção de Perguntas............................................................... 60 Figura 36 – Tela de Respostas........................................................................................ 61 Figura 37 – Tela de Manutenção de Respostas .............................................................. 62 Figura 38 – Tela de Usuários.......................................................................................... 63 Figura 39 – Tela de Filtros de Usuário ........................................................................... 64 Figura 40 – Tela de Manutenção de Usuários ................................................................ 64 VIII LISTA DE ABREVIATURAS ANSI GUJ HTTP HTML IBM IDE IIS LINQ OASIS Information Standards SOA SOAP SQL TCP UDDI UDP URI WCF WSDL WWF W3C XML American National Standards Institute Grupo de Usuários Java Hypertext Transfer Protocol Hyper Text Markup Language International Business Machines Integrated Development Environment Internet Information Service Language Integrated Query Organization for the Advancement of Structured Service-Oriented Architecture Simple Object Access Protocol Structured Query Language Trasmission Control Protocol Universal Description, Discovery and Integration User Datagram Protocol Uniform Resource Identifier Windows Communication Foundation Web Services Description Language Workflow Foundation World Wide Web Consortium eXtensible Markup Language IX INTRODUÇÃO A Web, para chegar a sua fase 2.0, necessitou passar por um longo processo de amadurecimento e por vários obstáculos que vão desde tecnologias que permitissem seu desenvolvimento até a crença de que a Web já estava bastante desenvolvida. Como ela foi projetada inicialmente para o simples compartilhamento de documentos, fazia-se necessário uma mudança no valor da Web para seus usuários para que a mesma pudesse evoluir (O’REILLY, 2004). Segundo O´Reilly (O’REILLY, 2004), a Web, com o passar dos anos, evoluiu e se tornou uma rede de alcance mundial, onde pessoas de todos os lugares podiam se conectar e compartilhar informações entre si. Nesse contexto, surgiu a necessidade de maior interação do usuário com a Web, dando início ao processo de transição para sua fase 2.0. Essa nova fase da Web, além de permitir o compartilhamento de informações entre seus usuários de um modo distinto, possibilitou também uma maior colaboração entre os mesmos. Esse é um dos principais aspectos dessa nova fase, na qual os usuários deixam de ser apenas leitores de informações para também serem produtores, tornando assim a Web dinâmica e colaborativa (O’REILLY, 2004). Dentre as aplicações disponíveis na Web que ilustram esses aspectos, é possível citar, a enciclopédia Wikipédia (http://pt.wikipedia.org/) cujo conteúdo é produzido, editado e validado por seus próprios usuários e o website Flickr (http://www.flickr.com/) que permite a criação de álbuns e o compartilhamento de fotografias entre usuários de todo o mundo. Vários fatores contribuíram para o avanço da Web em direção a sua fase 2.0, dentre esses é possível citar alguns que foram de fundamental importância para que isso ocorresse: • A popularização da banda larga; • Surgimento de tecnologias que possibilitam uma experiência de navegação mais rica para o usuário; 1 • Melhoria das técnicas de desenvolvimento de aplicações web, que possibilitaram maior qualidade nos serviços disponibilizados na Web; • Crescimento do interesse de pessoas e empresas de se conectarem a rede. Indo além, os conceitos e tecnologias disponíveis na Web 2.0 permitem que aplicações sejam desenvolvidas a partir de outras já existentes. Desse modo, é possível o crescimento mais rápido, com mais atrativos e funcionalidades nessa nova fase. Esse é justamente um dos principais fundamentos da Web 2.0, que apresenta a grande rede como uma plataforma de serviços, na qual aplicações podem e devem utilizar e disponibilizar recursos na Web (O’REILLY, 2004). Motivação Cursos de Ciência da Computação geralmente possuem em seu currículo diversas disciplinas voltadas para o desenvolvimento de software. Na Faculdade Farias Brito, a existência do interesse em fornecer um amplo estudo sobre os principais aspectos relativos ao desenvolvimento de software pode ser observada nas ementas de disciplinas como: Estruturas de Dados I e II, Lógica de Programação I e II, Técnicas de Programação, Construção e Análise de Algoritmos, Bancos de Dados I e II, Engenharia de Software, Análise Orientada a Objetos, Programação para Web, Gerência de Projetos e Teoria Geral dos Sistemas. Essas disciplinas, quando reunidas, fornecem aos alunos da Faculdade Farias Brito uma base sólida, que será de grande importância para seu amadurecimento profissional, uma vez que o mercado de trabalho vem se tornando cada vez mais competitivo. Buscando reunir o conhecimento adquirido ao longo do curso de Ciência da Computação, este trabalho foi desenvolvido com o objetivo de fornecer informações e práticas atuais tanto sobre o desenvolvimento de aplicações baseadas no conceito de Web 2.0 quanto sobre o desenvolvimento de aplicações baseadas no conceito da arquitetura Service-Oriented Architecture (SOA). 2 Além disso, foi descrita a aplicação que faz uso de todo o conhecimento obtido ao longo do curso de Ciência da Computação para fornecer aos alunos, professores e colaboradores da Faculdade Farias Brito um meio no qual possam compartilhar conhecimento e informações a fim de tornar ainda mais eficaz a difusão de conhecimento no contexto da faculdade. Objetivos Esse trabalho tem como objetivo realizar um estudo do conceito de Web 2.0 e se propõe a projetar e disponibilizar uma plataforma de desenvolvimento baseada em serviços, além de desenvolver um software colaborativo que utilize os conceitos de Web 2.0, fazendo uso das melhores práticas de desenvolvimento web e fornecendo uma experiência rica de navegação para o usuário. Inicialmente, foi realizado o processo de desenvolvimento envolvendo o levantamento de requisitos e a geração inicial da estrutura de código do projeto que contemplará o modelo entidade-relacional; a estrutura de regras de negócio e as classes de acesso a dados que se limitam às operações de leitura, escrita, atualização e remoção. Os objetivos específicos são os seguintes: • Definir os conceitos e tecnologias da Web 2.0; • Desenvolver uma ferramenta colaborativa baseada nos conceitos de Web 2.0, que forneça um meio no qual seus usuários possam realizar o compartilhamento de conhecimento, abrindo espaço para a troca de informações e para o crescimento pessoal e profissional. 3 Organização do Trabalho Este trabalho está organizado como se segue. O capitulo 1 – Web 2.0: Apresenta uma visão geral do termo Web 2.0 e detalha a definição tratada neste trabalho – a Web como plataforma de software. Esse capítulo apresenta também as principais soluções e tecnologias usadas para construir a plataforma Web. No capitulo 2 – Tecnologias: São apresentadas as tecnologias e os conceitos utilizados na elaboração do projeto e em sua implementação. O capitulo 3 – Metodologia: São apresentadas as ferramentas utilizadas e a solução técnica adotada para o desenvolvimento do protótipo. O capitulo 4 – Arquitetura Proposta: Descreve a arquitetura a ser utilizada para o desenvolvimento do protótipo. O capitulo 6 – FFB Wiki: Descreve o FFB Wiki. No Capítulo 7 – Resultados Obtidos: Reúne os principais resultados deste trabalho. No Capítulo 8 – Conclusão: Reúne as principais conclusões deste trabalho e perspectivas futuras. 4 1 Web 2.0 No ano de 2001 houve uma grande mudança no cenário da Web. Esse período foi marcado pelo aparente colapso de inúmeras empresas ponto-com, a maioria criada de forma oportunista durante os dois anos anteriores. Porém, durante uma conferência promovida pela O’Reilly Media e MediaLive International no ano de 2004, Dale Doughherty pioneiro da Web e vice-presidente da O’Reilly, notou que, ao contrário de haver regredido, a Web estava mais dinâmica, crescendo cada vez mais e pronta para ser substituída por uma tecnologia ascendente (O’REILLY, 2004). Com o passar do tempo, tornou-se evidente que após seu suposto colapso, a Web tinha sofrido diversas mudanças, dentre essas, principalmente em sua arquitetura, suas aplicações e suas formas de uso, indicando assim que a mesma encontrava em um novo estágio de seu desenvolvimento (O’REILLY, 2004). Os principais aspectos dessa nova fase da Web são descritos por O´Reilly (O’REILLY, 2004): • A transição de sites estáticos para sites dinâmicos; • Uma mudança no valor socioeconômico da Web; • Colaboração e participação dos usuários; • Uma atitude, não uma tecnologia; • Confiança em seus usuários; • Experiência rica do usuário. A Web 2.0 se caracteriza por uma nova forma de navegar pela Internet, na qual seus utilizadores deixam de ser apenas leitores de informações, uma vez que o conteúdo existente na mesma pode ser editado por seus próprios usuários. Outro aspecto importante é o que fornece a Web como uma plataforma de serviços, onde seus usuários não precisam ter um computador com grande poder de processamento já que as aplicações acessadas fazem uso de recursos disponibilizados por outros. A distribuição do processamento dos dados é realizada entre várias máquinas, fazendo do computador que o usuário utiliza apenas uma plataforma de acesso para aplicativos da Web. 5 As características fundamentais da Web 2.0 são descritas por O´Reilly (O’REILLY, 2004): • O usuário deixa de ser apenas um leitor de informações em uma página para se tornar um produtor de informações, inserindo e editando conteúdos já existentes na Web; • Informações e conhecimento deixam de ser armazenados localmente para ser compartilhados na rede e tornam-se acessíveis a outros usuários; Para que seja possível visualizar os conceitos da Web 2.0 aplicados no mundo real, a seguir são apresentadas aplicações que foram desenvolvidas com base nesses conceitos: • Youtube (http://www.youtube.com): permite que seus usuários carreguem, assistam e compartilhem vídeos em formato digital; • Enciclopédia Wikipédia (http://pt.wikipedia.org): tem todo seu conteúdo produzido, editado e validado por seus próprios usuários; • Flickr (http://www.flickr.com): permite que seus usuários criem álbuns, realizem o compartilhamento de fotografias e entrem em contato com fotógrafos de qualquer lugar do mundo; • Google Docs (http://docs.google.com): possibilita a portabilidade de documentos, que permite a edição do mesmo documento por mais de um usuário. 1.1 Tecnologias da Web 2.0 A Web como conhecemos atualmente é conseqüência do surgimento de várias tecnologias, o aprimoramento de outras já existentes e a consolidação de princípios e práticas que tornaram possível seu desenvolvimento rápido e consistente da Web. A seguir são descritas as principais tecnologias utilizadas no desenvolvimento de aplicações na Web 2.0: • AJAX: torna as páginas web mais dinâmicas, possibilitando assim uma navegação mais rica para o usuário (FLANAGAN, 2002); 6 • XML: linguagem que se estabeleceu como padrão mundial para a troca de dados entre aplicações (MARCHAL, 2000); • CSS: permite a estilização de um aplicativo web (W3C, 2008); • SOA: fornece um modelo no qual uma aplicação possa ser disponibilizada como serviço (ORT, 2005). Essas tecnologias atendem aos requisitos básicos da Web 2.0, onde, além de ser necessário fornecer uma interface rica e amigável para o usuário, é preciso disponibilizar essas aplicações como serviços. 1.2 Plataforma Web Um dos principais aspectos da Web 2.0 se refere ao fato de que as aplicações desenvolvidas para essa nova fase da Web podem tanto utilizar recursos já existentes quanto podem ter seus recursos utilizados por outras aplicações. Dessa maneira, a Web se apresenta como um repositório de aplicações que interagem entre si para disponibilizar funcionalidades para seus usuários. As aplicações que utilizam ou que fornecem seus recursos e funcionalidades na Web implementam a arquitetura Service-Oriented Architecture (SOA), que é baseada nos princípios de computação distribuída. Essas aplicações são disponibilizadas na Web através de Web Services, que fazem uso de eXtensible Markup Language (XML), uma linguagem de marcação utilizada para descrever a aplicação e suas respectivas funcionalidades de modo que outras aplicações possam se comunicar de maneira adequada com a mesma, além de ser utilizado também para realizar o transporte de informações entre essas aplicações (ORT, 2005). Além das inúmeras vantagens de se usar XML para descrever a aplicação e para realizar o transporte de informações entre aplicações, o que o torna imprescindível para atender aos princípios da Web 2.0 é o fato dessa linguagem possibilitar que uma aplicação seja utilizada por qualquer outra independentemente de linguagem e/ou plataforma, tornando-se ideal no meio heterogêneo em que a Web se encontra atualmente (SEELY, 2002). 7 1.3 Tecnologias da Plataforma Web Tecnologias como Service-Oriented Architecture (SOA) e Web Services são indispensáveis para o desenvolvimento de aplicações e, quando bem empregadas, podem trazer grandes benefícios para o processo de desenvolvimento de software como um todo. Dentre os benefícios encontrados ao se utilizar essas tecnologias podemos citar: • Facilidade na integração com outros sistemas: como as aplicações são disponibilizadas através de web services é possível que uma aplicação interaja com outra aplicação de modo transparente; • Maior agilidade no processo de desenvolvimento: como a aplicação pode ser construída em módulos é possível uma realizar uma divisão durante o processo de desenvolvimento, atribuindo a cada grupo de desenvolvedores o módulo no qual seus desenvolvedores têm maior experiência; • Menor custo na manutenção do sistema: como o sistema pode ser construído em módulos é possível realizar a manutenção de um módulo separadamente; • Menor gasto com equipamentos: como a aplicação pode de seus módulos disponibilizados e processados em computadores vários computadores são necessários computadores mais simples ao invés de um com grande poder computacional; • Melhor desempenho: pois a aplicação pode de seus módulos disponibilizados e processados em computadores vários computadores. A seguir são descritas as tecnologias mais utilizadas no desenvolvimento de aplicações para a Web 2.0: SOA, Web Services, XML, SOAP, WSDL e UDDI. 8 1.3.1 SOA Service-Oriented Architecture (SOA) é um modelo de arquitetura de software que fornece um padrão no qual arquitetos e/ou desenvolvedores de softwares possam desenvolver aplicações que utilizem ou que possam ser utilizadas por outras aplicações, ou seja, permitindo assim a compartilhamento de funcionalidades e recursos computacionais entre aplicações distintas (ORT, 2005). Permitir o compartilhamento de recursos computacionais é uma das grandes vantagens de SOA, pois ao se utilizar a mesma para conectar aplicações é possível obter uma redução significante nos gastos em equipamentos e em manutenção, bem como aumentar o desempenho da aplicação como um todo (ORT, 2005). Para uma aplicação-cliente realizar uma comunicação com um serviço disponível na Web é necessário que a mesma conheça a especificação desse serviço. Para isso é necessário que o serviço forneça uma interface bem definida dos métodos que serão disponibilizados. Porém, basta que a aplicação-cliente tenha conhecimento da definição dos métodos que o serviço disponibiliza, não importando como ou em qual linguagem de programação o mesmo os implementa. Desse modo, uma vez que não ocorra alteração na interface, o cliente ainda irá poder se comunicar com o serviço mesmo que esse tenha sofrido alteração na implementação de seus métodos (ORT, 2005). Normalmente, a comunicação das aplicações que se baseiam em SOA é realizada através de Web Services, que serão descritos a seguir. 1.3.2 Web Services Web Services representam uma solução adotada a nível mundial tanto para realizar a integração quanto para a comunicação entre aplicações. Os Web Services realizam o transporte de dados entre aplicações via protocolo HTTP (Hypertext Transfer Protocol) no formato XML que é encapsulado pelo protocolo SOAP (Simple Object Access Protocol) (ORT, 2005). Os aspectos de cada tecnologia mencionada acima serão abordados posteriormente. 9 É indispensável o uso de XML no contexto no qual a Web está inserida atualmente, pois o mesmo permite que uma aplicação possa ser utilizada por qualquer outra independentemente de linguagem de programação e/ou plataforma (ORT, 2005). No desenvolvimento de Web Services são utilizadas as seguintes tecnologias: XML, SOAP, WSDL e UDDI. XML Em meados da década de 1990, pela insatisfação com os formatos existentes e pela necessidade de se criar uma linguagem padronizada para a transferência de dados entre aplicações o World Wide Web Consortium (W3C) criou o eXtensible Markup Language (XML) que é uma linguagem de marcação simples e de grande legibilidade tanto para humanos como para máquinas (GUJ, 2008). O XML é uma linguagem extensível, que possibilita a criação de marcações (tags) sem qualquer limitação. Isso faz com que o XML seja ideal para estruturação de dados organizados de forma hierárquica, o que é de grande importância nos dias de hoje, onde as informações necessitam ser bem estruturadas para que aplicações distintas possam entendê-las (GUJ, 2008). A estrutura XML, apresentada na Figura 1, fornece um exemplo de um documento. Esse exemplo demonstra a flexibilidade existente nos documentos XML onde uma tag pode conter qualquer informação. Além disso, uma tag poder ter ou não atributos associados a ela. O exemplo também aborda uma característica descrita anteriormente, a legibilidade do documento. Por possuir uma estrutura bem definida, um documento XML também é facilmente interpretado por sistemas computacionais (W3C, 2004). 10 <?xml version="1.0" encoding="utf-8" ?> <root> <class name="FFBWiki.Net.DAL.SQLDAO.CursoDAO"> <query name="insert"> INSERT INTO Cursos (Nome) VALUES (@Nome) </query> <query name="update"> UPDATE Cursos SET Nome = @Nome WHERE ID = @ID </query> <query name="delete"> DELETE FROM Cursos WHERE ID = @ID </query> <query name="getByID"> SELECT TOP 1 * FROM Cursos WHERE ID = @ID </query> <query name="getAll"> SELECT * FROM Cursos </query> <query name="selecionarPorNome"> SELECT * FROM Cursos WHERE Nome like @Nome </query> </class> </root> Figura 1 – Exemplo de XML Embora um documento XML seja flexível, ele deve atender a um único e indispensável requisito: ter somente um elemento raiz (GUJ, 2008). SOAP Como foi discutido no tópico anterior, XML é um padrão adotado a nível mundial para a troca de informações entre aplicações. Porém, para que essa comunicação seja realizada, é necessário definir uma maneira no qual seja possível construir mensagens que possam trafegar por diferentes protocolos e que garanta a interoperabilidade e intercomunicação entre aplicações distintas (SEELY, 2002). Essa tarefa é de responsabilidade do Simple Object Access Protocol (SOAP), que é um protocolo definido pelo World Wide Web Consortium (W3C). Esse protocolo é baseado em XML e HTTP e tem como objetivo realizar o transporte de informações estruturadas (SEELY, 2002). Os elementos necessários para a transmissão de dados utilizando SOAP são descritos por Seely (SEELY, 2002): 11 • Envelope: É obrigatório na transmissão de toda mensagem SOAP. É o elemento raiz do documento XML. O Envelope pode conter declarações de dois elementos: o Namespaces: são os responsáveis por evitar o conflito de nomes dentro do arquivo. o encodingStyle: define como será feita a representação dos dados no documento XML. • Cabeçalho: É opcional na transmissão, porém quando for utilizado deve obrigatoriamente ser o primeiro elemento do Envelope. É responsável por carregar informações adicionais. • Corpo: É obrigatório na transmissão de toda mensagem SOAP. Contém a informação a ser transportada para o seu destino final. Na Figura 2, visualiza-se um exemplo de mensagem SOAP que apresenta os três elementos que foram descritos anteriormente. <?xml version="1.0" encoding="utf-8"?> <soap:Header> <m:Trans xmlns:m=" http://www.ffb.edu.br/wiki" soap:mustUnderstand="1"> 234 </m:Trans> </soap:Header> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.ffb.edu.br/wiki"> <m:GetInfoUsuario> <m:Nome>Raphael</m:Nome> <m:SobreNome> Saldanha </m:SobreNome> <m:Telefone> 9999-8888 </m:Telefone> <m:Cidade> Fortaleza </m:Cidade> <m:Curso> Ciência da Computacao </m:Curso> <m:Semestre> Oitavo </m:Semestre> </m:GetInfoUsuario> </soap:Body> </soap:Envelope> Figura 2 – Exemplo de Mensagem SOAP 12 WSDL Como descrito anteriormente, aplicações podem ser disponibilizadas na Web através de web services, porém, é necessário que seus utilizadores conheçam sua definição: como acessá-la e quais métodos a mesma disponibiliza. Para realizar essa tarefa, utiliza-se a Web Services Description Language (WSDL), que é uma linguagem baseada em XML desenvolvida em conjunto pela Ariba, IBM e Microsoft no início do ano de 2001 (RECKZIEGEL, 2006). Os elementos fundamentais que compõem um documento WSDL são descritos por Chirstensen (RECKZIEGEL, 2006). Elemento <definitions>: é a tag raiz do documento WSDL. É utilizado para definir os namespaces utilizados no documento. Na Figura 3, visualiza-se a definição de vários namespaces de um documento WSDL através do elemento <definitions> Figura 3 – Exemplo do elemento <definitions> 13 Elemento <types>: é utilizado para informar os tipos de dados presentes na mensagem. Na Figura 4, visualiza-se a definição de vários tipos de dados de um documento WSDL através do elemento <types>. Figura 4 – Exemplo do elemento <types> Elemento <message>: é utilizado para informar os dados que serão transmitidos. Para cada elemento <message> pode existir um ou mais elementos <part>, que representam os parâmetros de entrada e de saída que a mensagem retorna. Na figura 5, visualiza-se a definição de parâmetros de entrada e de saída de um documento WSDL através do elemento <message>. Figura 5 – Exemplo do elemento <message> 14 Elemento <portType>, define quais métodos serão disponibilizados. Na figura 6, visualiza-se a definição uma operação, bem como a definição de seus parâmetros de entrada e saída. Figura 6 – Exemplo do elemento <portType> Elemento <binding>: define como a mensagem será transmitida para um portType em particular. Na figura 7, visualiza-se o exemplo do elemento <binding>. Figura 7 – Exemplo do elemento <binding> 15 Elemento <service>: define a localização do serviço. Na figura 8, visualiza-se o exemplo do elemento <service>. Figura 8 – Exemplo do elemento <service> UDDI O Universal Description, Discovery and Integration (UDDI) é uma especificação técnica baseada em XML que foi desenvolvida no ano de 2001 em conjunto pela Ariba, IBM e Microsoft, com patrocínio da Organization for the Advancement of Structured Information Standards (OASIS). Essa especificação tem como objetivo descrever, descobrir e integrar serviços disponíveis na Web (SNELL; TIDWELL; KULCHENKO, 2001). Uma maneira de uma aplicação-cliente se comunicar com um serviço disponível na Web é fazer com que a mesma conheça estaticamente a localização desse serviço através de um Uniform Resource Identifier (URI). Porém, existem casos em que a aplicação-cliente não conhece a URI do serviço, nesses casos é necessário que exista uma forma dinâmica para descobrir a localização desse serviço. Essa é uma das funcionalidades do UDDI, possibilitar que serviços possam ser publicados e descobertos na Web (SNELL; TIDWELL; KULCHENKO, 2001). A seguir são descritos as categorias que compõem o UDDI: • Páginas brancas: contêm informações sobre os fornecedores do serviço, como por exemplo, o nome e o telefone do fornecedor do serviço (SNELL; TIDWELL; KULCHENKO, 2001); 16 • Páginas amarelas: contêm uma listagem organizada por categorias dos serviços disponíveis na Web (SNELL; TIDWELL; KULCHENKO, 2001); • Páginas verdes: contêm informações sobre serviços disponíveis bem como a especificação técnica de como é realizado a interação com os mesmos (SNELL; TIDWELL; KULCHENKO, 2001). Na figura 9, visualizam-se facilmente os conceitos do UDDI, onde uma aplicação-cliente pode utilizar um serviço caso essa conheça de modo estático a URI do serviço ou pesquisar dinamicamente um serviço que foi previamente publicado através do UDDI. Figura 9 – UDDI 17 2 Tecnologias Este capítulo apresenta as tecnologias empregadas na construção do FFB Wiki. Optou-se pela escolha de tecnologias de fácil acesso, recentes e que ofereçam à proposta apresentada características relevantes na qualidade do produto final. 2.1 Arquitetura Cliente/Servidor A arquitetura Cliente/Servidor é um dos modelos mais utilizados no desenvolvimento de aplicações tanto para ambiente Web quanto para o ambiente desktop. O principio desse modelo é a separação entre clientes e servidores, onde cada cliente é capaz de enviar requisições para um servidor, e este realiza o processamento necessário e retorna os dados para o cliente (GRAY et. al, 2001). Esse modelo é de grande importância no desenvolvimento de aplicativos, pois permite a distribuição de processamento de dados entre várias máquinas, ou seja, compartilha recursos entre máquinas mais simples possibilitando que cada máquina realize apenas parte do processamento, ao invés de ter um único computador com grande poder computacional realizando todo o trabalho (GRAY et. al, 2001). A comunicação entre o cliente e o servidor pode ser realizada através dos protocolos Trasmission Control Protocol (TCP) ou User Datagram Protocol (UDP) (GRAY et. al, 2001). O TCP é um protocolo orientado a conexão, onde o cliente estabelece com o servidor uma conexão confiável e ambos realizam trocas de mensagens para verificar a perda de pacotes, eliminar a duplicação e possibilitar a recuperação de dados corrompidos (GRAY et. al, 2001). O UDP é um protocolo não orientado a conexão. Esse protocolo não é confiável, pois não há uma conexão permanente entre o cliente e o servidor para que haja troca de mensagens, ou seja, quando uma mensagem é enviada por um cliente não há qualquer tipo de garantia que essa mensagem chegue ao servidor (GRAY et. al, 2001). 18 A Figura 10 apresenta o modelo da arquitetura Cliente/Servidor, onde é demonstrado a comunicação entre aplicações-cliente representadas na figura pelos elementos “ClienteA” e “ClienteB” com o servidor representado pelo elemento “Servidor”. Figura 10 – Arquitetura Cliente/Servidor 2.2 Linguagem HyperText Markup Antes do surgimento da Internet, Tim Berners-Lee desenvolveu uma coleção de ferramentas para realizar a comunicação e disseminação de pesquisas entre ele e seu grupo de colegas, porém, com o surgimento da Internet, ocorreu o desenvolvimento e aprimoramento desse conjunto de ferramentas até surgir o Hyper Text Markup Language (HTML) que se tornou uma linguagem robusta para o desenvolvimento de páginas web (BERNERS-LEE; CONNOLLY, 1995). O HTML é composto por texto e comandos de formatação chamados etiquetas (tags). Essas etiquetas são elementos entre parênteses angulares que permitem o desenvolvimento de uma página web. Segundo Berners-Lee (BERNERS-LEE, 1995) com a utilização dessas etiquetas o desenvolvedor pode realizar diversas tarefas, tais como: 19 • Formatar textos • Inserir tabelas • Definir a aparência da página • Definir propriedades da página • Definir funções • Definir a ligação da página com outros arquivos como CSS, Scripts, etc. 2.3 Cascading Style Sheet e JavaScript Embora o HTML forneça vários métodos para o desenvolvimento de páginas web, a linguagem tem inúmeras limitações em relação tanto ao design das interfaces das aplicações quanto às funcionalidades que essas páginas poderiam disponibilizar (BERNERS-LEE; CONNOLLY, 1995). Para que seja possível o desenvolvimento de uma página com um melhor design de interface e com mais funcionalidades é necessária a utilização de linguagens auxiliares como o CSS e o JavaScript (FLANAGAN, 2002). O CSS (Cascading Style Sheet) é uma linguagem utilizada para especificar o estilo de uma página web escrita em HTML. Essa página possui uma ligação para o arquivo que contém o código CSS com toda a definição do estilo da página. Uma das grandes vantagens da utilização do CSS para a estilização de um aplicativo web é a possibilidade de reuso do estilo, uma vez que cada página contém uma ligação para um mesmo documento CSS. Ao se alterar esse documento, a alteração é refletida em todas as páginas desse aplicativo (BERNERS-LEE; CONNOLLY, 1995). O JavaScript é uma linguagem de programação executada pelo navegador. Foi desenvolvida em 1995 pela Netscape com o objetivo de fornecer interação entre o usuário e as páginas (FLANAGAN, 2002). 20 2.4 Linguagem Estruturada de Consultas A Structured Query Language (SQL) é uma linguagem de pesquisa declarativa para banco de dados relacional que se baseia nos princípios da álgebra relacional. Foi desenvolvida nos anos 70 pela International Business Machines (IBM) e com o passar dos anos tornou-se padrão no mercado devido a sua simplicidade, facilidade de uso e robustez (HOFFMAN, 2004). Dada a utilização a nível mundial, adotou-se um padrão para a linguagem através do American National Standards Institute (ANSI) em 1986 e ISO em 1987 (HOFFMAN, 2004). 2.5 Windows Communication Foundation Windows Communication Foundation (WCF) é uma tecnologia recente, que foi introduzida no mercado pela Microsoft em dezembro de 2006 e que tem como principal objetivo realizar a comunicação distribuída de dados, onde dois ou mais computadores executam uma tarefa em comum (SMITH, 2007). Uma das grandes vantagens de se utilizar WCF na camada de serviço de uma aplicação é que o mesmo pode fazer uso de mensagens SOAP para realizar a comunicação com outro processo, possibilitando assim a comunicação entre um processo WCF e qualquer outro processo (SMITH, 2007). Quando um processo WCF se comunica com outro tipo de processo, ambos utilizam a serialização XML nas mensagens SOAP para realizar a comunicação. Dessa forma, o WCF é capaz de se comunicar com quase todos os tipos de processos uma vez que a XML é uma linguagem universal para a transmissão de dados. Porém, quando a comunicação é realizada entre dois processos WCF, é utilizada a serialização binária com o objetivo de otimizar a comunicação entre esses dois processos (SMITH, 2007). 21 2.6 LINQ Assim como o WCF, o Language Integrated Query (LINQ) é uma tecnologia recente, que foi introduzida no mercado pela Microsoft em dezembro de 2006 e tem como principal objetivo permitir que consultas sejam aplicadas a qualquer dado em memória (MARGUERIE; EICHERT; WOOLEY, 2008). O LINQ determina um conjunto de operadores padrões de consulta de propósito geral que admite que operações de travessia, de filtragem e de projeção sejam expressas de modo direto, porém declarativo, em qualquer linguagem de programação baseada em .NET (MARGUERIE; EICHERT; WOOLEY, 2008). Na Figura 11, visualiza-se um exemplo de consulta utilizando LINQ que seleciona apenas as strings dentro da variável lstNomes que tenham comprimento maior ou igual a 5 e atribui o resultado à variável lstNomesFiltrados. using System; using System.Query; using System.Collections.Generic; class app { static void Main() { string[] nomes = { "Raphael", "Oquendo", "Patrick" }; IEnumerable<string> lstNomesFiltrados = from s in nomes where s.Length >= 5 orderby s select s; } } Figura 11 – Exemplo de consulta em uma fonte de informações em memória utilizando LINQ 22 Na Figura 12, visualiza-se um as linguagens programação, os provedores e as fonte de dados que são compatíveis com LINQ. Figura 12 – Arquitetura do LINQ. 23 3 Metodologia Baseando-se especialmente em O´Reilly (2004) e Ort (2005) foi realizada uma explanação dos conceitos de Web 2.0. Em seguida, iniciou-se a elaboração de uma plataforma baseada nesses conceitos, bem como o desenvolvimento de um software colaborativo chamado FFB Wiki. O FFB Wiki foi construído para fornecer um meio no qual alunos, professores e colaboradores da Faculdade Farias Brito possam compartilhar conhecimento e informações entre si. Esse software é uma aplicação web que foi projetada com base no padrão Cliente/Servidor e utiliza uma arquitetura N-Camadas. Na codificação do sistema foi utilizado o paradigma de programação orientada a objetos e para obter um melhor desempenho na manipulação de dados fez-se uso de Language Integrated Query (LINQ). Como repositório de informações foi utilizado um sistema de banco de dados. Além disso, esse software faz uso de tecnologias como JavaScript, CSS e HTML para fornecer ao usuário final uma interface rica e de fácil navegabilidade, aproximando a aplicação a um formato disponível em aplicações desktop. Para atender ao requisito da Web 2.0 que indica que uma aplicação deve disponibilizar seus recursos através da Web, foi desenvolvida uma camada de serviços. Essa camada foi desenvolvida baseando-se nos conceitos de Service-Oriented Architecture (SOA) e utiliza Windows Communication Foundation (WFC) para disponibilizar os recursos da aplicação. Optou-se por utilizar WCF ao invés de web services, pois como já foi descrito anteriormente o mesmo fornece maior segurança e melhor desempenho. 24 Durante todo o processo de desenvolvimento, de teste e de utilização do FFB Wiki foram necessários recursos de software e de hardware. Tais recursos são descritos a seguir. Software Na escolha dos softwares a serem utilizados no desenvolvimento da aplicação optou-se pelos mais recentes disponíveis no mercado, pois os mesmos fornecem melhor desempenho, uma maior segurança e possibilitam uma maior usabilidade do usuário final. Os softwares utilizados no desenvolvimento são descritos a seguir: • Sistema Operacional: O sistema operacional utilizado no servidor é o Windows Vista Enterprise Edition. O mesmo foi responsável por permitir o funcionamento de todos os softwares, bem como os hardwares utilizados na fase de desenvolvimento da aplicação; • Servidor Web: O Servidor Web utilizado é o Internet Information Service (IIS), na versão 7.0. O mesmo foi utilizado para hospedar a aplicação desenvolvida nesse trabalho; • Banco de Dados: Foi utilizado o Microsoft SQL Server, na sua versão 2005. É responsável por armazenar as informações geradas a partir da aplicação desenvolvida nesse trabalho; • Gerenciadores: Para o gerenciamento de banco de dados, utilizou-se o Microsoft SQL Management Studio na versão 9.00.1399.00; • IDE: No desenvolvimento das interfaces em formato ASP.NET utilizouse o Microsoft® Visual Studio 2008, programa que permite tanto a criação do design das páginas quanto a programação das mesmas; • Plataforma: Como plataforma de desenvolvimento foi utilizado o .Net Framework 3.5; • Navegador: Foi utilizado o Microsoft Internet Explorer, na sua versão 7.0. É responsável pela interação entre o usuário e a aplicação. 25 Hardware As características dos equipamentos utilizados são: • Servidor: Processador Pentium Core 2 Duo, com 2.20 GHz de clock, 2.0 GB de memória RAM, HD 160 GB Sata e placa de rede 10/100 MB. • Estação de Desenvolvimento: Processador Pentium Core 2 Duo, com 2.20 GHz de clock, 2.0 GB de memória RAM, HD 160 GB Sata e placa de rede 10/100 MB. • Estações Clientes: Especificações mínimas exigidas são: placa de rede 10/100 MB e 128 MB de memória RAM. 26 4 Arquitetura Proposta A arquitetura proposta foi projetada com o intuito de permitir o desenvolvimento de aplicações que se baseiam no conceito que propõe a Web como uma plataforma de software. Desta maneira, essas aplicações devem tanto fazer uso de serviços disponíveis na Web como também disponibilizá-los. Essa arquitetura baseia-se na arquitetura N-Camadas e é composta pelas seguintes camadas: Camada de Apresentação, Camada de Serviços, Camada Lógica e a Camada de Dados. 4.1 Camada de Apresentação A camada de apresentação é composta por formulários ASP.Net, construídos com o intuito de oferecer uma navegabilidade simples e intuitiva, e são responsáveis por realizar a interação entre o usuário e a aplicação. Ao receber uma requisição do usuário, são construídas as entidades a partir das informações que o usuário está editando, relacionando-se os campos dos formulários com as propriedades das entidades. Isso é necessário, pois para se trafegar uma informação entre a camada de apresentação e a camada de serviços é preciso que ambas as camadas conheçam o tipo de informação que irá transitar entre elas. A comunicação entre a camada de apresentação e a camada de serviços é realizada através do HyperText Transfer Protocol (HTTP), que é um protocolo que possibilita a comunicação de forma padronizada entre um cliente e um servidor a fim de realizar troca de dados. Na Figura 13, visualiza-se um exemplo de modelo de comunicação realizado entre a camada de apresentação e a camada de serviços. Nesse exemplo a camada de apresentação, que é representada pelo elemento “Caller”, envia as informações para serem processadas na camada de serviços, representada nesse exemplo pelo elemento “Service”. 27 Figura 13 – Comunicação entre a Camada de Apresentação e a Camada Web No diagrama da figura 14, visualizam-se as entidades que foram utilizadas na construção do sistema e que podem ser utilizadas no transporte de dados entre a camada de apresentação e a camada de serviços. 28 Figura 14 – Diagrama de entidades A classe ArquivoEntity representa um arquivo. Os arquivos deverão ser cadastrados no sistema para que possa ser realizado tanto o armazenamento quanto o compartilhamento desses arquivos com outros usuários. A classe VersãoDeArquivoEntity representa a versão de um arquivo. Para que uma versão de arquivo possa ser cadastrada, é necessário que um arquivo seja previamente cadastrado. Tem o objetivo de armazenar as modificações feitas em um arquivo. A classe AssuntoDeArquivoEntity representa o assunto de arquivo. Os assuntos de arquivo deverão ser cadastrados no sistema para que seja possível organizar os arquivos por contexto. 29 A classe CursoEntity representa os cursos. Os cursos deverão ser cadastrados no sistema para que seja possível organizar arquivos, perguntas e debate. A classe DebateEntity representa um debate. Tem o objetivo de agrupar um conjunto de informações. A classe ItemDeDebateEntity representa uma unidade do debate. Para que um item de debate possa ser cadastrado, é necessário que um debate seja previamente cadastrado. Representa a interação dos usuários do sistema com o debate. A classe PerguntaEntity representa uma pergunta. Representa uma pergunta feira por um dado usuário do sistema. A classe RespostaDePerguntaEntity representa a resposta de uma pergunta. Representa a resposta de um usuário a uma dada pergunta. 4.2 Camada de Serviços A camada de serviços é responsável por transmitir as requisições feitas a partir de uma aplicação-cliente para a camada lógica. Com essa breve descrição somada aos conceitos de Web 2.0 é possível notar que a camada de serviços aplica um dos principais conceitos dessa nova fase da Web, o que define que aplicações devem utilizar ou fornecer seus recursos na Web (O´REILLY,2004). Na Figura 15, visualiza-se a arquitetura de comunicação na camada de serviços. Nesse exemplo nota-se que aplicações distintas fazem uso dos recursos e funcionalidades disponíveis nos serviços dessa camada. 30 Figura 15 – Comunicação na camada de serviços Embora as tecnologias da Web 2.0 que foram previamente apresentadas neste trabalho sejam suficientes para o desenvolvimento de aplicações web, existem tecnologias já disponíveis no mercado que vão além. Desse modo optou-se por utilizar o Windows Communication Foundation como modelo de programação entre a camada de serviços e outras aplicações, pois o mesmo possibilita melhor desempenho e maior segurança. 4.3 Camada Lógica A camada lógica possui a lógica para atender os requisitos do sistema. É nessa camada que estão implementados os métodos e as regras de toda a aplicação. Não existe uma interface para o usuário e seus dados são voláteis, ou seja, para que algum dado seja persistido, deve ser utilizada a camada de dados (ORT, 2005). Essa camada recebe as requisições da camada de serviços, em seguida realizada a validação dos dados da entidade correspondente e por fim a mesma envia a entidade para a camada de dados para que a informação possa ser persistida. É necessário apenas que a camada de serviços tenha conhecimento da definição dos métodos que a camada lógica disponibiliza, não importando como ou em qual linguagem de programação o mesmo os implementa. Desse modo, uma vez que não 31 ocorra alteração na interface, a camada de serviços ainda poderá se comunicar com a camada lógica, mesmo que essa tenha sofrido alguma alteração na implementação de seus métodos. No diagrama da Figura 16, visualizam-se as interfaces que foram utilizadas para realizar o contrato entre a camada de lógica e camada de serviços. Figura 16 – Interfaces da camada lógica 32 Todas as interfaces da camada lógica estendem a interface “IBusiness” que define a assinatura dos métodos mais genéricos de manipulação de dados, tais como: Inset, Update, GetALL, GetByID e Delete. Insert: Interage com a camada de dados para inserir um novo objeto no banco de dados. Update: Interage com a camada de dados para realizar as alterações feitas no objeto na base de dados. Delete: Interage com a camada de dados para remover o objeto da base de dados. GetAll: Interage com a camada de dados para retornar do banco de dados todos os objetos do tipo correspondente do mesmo. GetByID: Interage com a camada de dados para retornar o objeto filtrando pelo identificador. 33 No diagrama da Figura 17, visualizam-se as classes concretas da camada lógica. Figura 17 – Classes concretas da camada lógica 34 A classe ArquivoBusiness contém as regras de negócio específicas da entidade arquivo. • SelecionarPorUsuario: Interage com a camada de dados para retornar todos os arquivos que foram disponibilizados pelo usuário passado como parâmetro; • SelecionarArquivosCompartilhados: Interage com a camada de dados para retornar os arquivos que estão sendo compartilhados; • SelecionarArquivosCompartilhadosComUsuario: Interage com a camada de dados para retornar os arquivos compartilhados com o usuário passado como parâmetro; • Insert: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da inserção de um arquivo; • Update: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um arquivo; • Delete: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um arquivo. A classe VersaoDeArquivoBusiness contém as regras de negócio específicas da entidade versão de arquivo. • SelecionarPorUsuario: Interage com a camada de dados para retornar todas as modificações feitas em um arquivo filtrando pelo usuário passado como parâmetro; • SelecionarPorArquivo: Interage com a camada de dados para retornar todas as versões de um arquivo; • Insert: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da inserção de uma versão de arquivo; 35 • Update: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de uma versão de arquivo; • Delete: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de uma versão de arquivo. A classe AssuntoDeArquivoBusiness contém as regras de negócio específicas da entidade assunto de arquivo. • SelecionarPorUsuario: Interage com a camada de dados para retornar todos os assuntos de arquivo que foram disponibilizados pelo usuário passado como parâmetro; • Insert: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da inserção de um assunto de arquivo; • Update: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um assunto de arquivo; • Delete: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um assunto de arquivo. A classe CursoBusiness contém as regras de negócio específicas da entidade curso. • SelecionarPorNome: Interage com a camada de dados para retornar uma lista de cursos filtrando pelo nome; • Insert: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da inserção de um curso; 36 • Update: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um curso; • Delete: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um curso. A classe DebateBusiness contém as regras de negócio específicas da entidade debate. • SelecionarPorUsuario: Interage com a camada de dados para retornar uma lista de debates filtrando por usuário; • SelecionarPorCurso: Interage com a camada de dados para retornar uma lista de debates filtrando por curso; • Insert: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da inserção de um debate; • Update: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um debate; • Delete: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um debate. A classe ItemDeDebateBusiness contém as regras de negócio específicas da entidade item de debate. • SelecionarPorUsuario: Interage com a camada de dados para retornar uma lista de itens de debates filtrando por usuário; • SelecionarPorDebate: Interage com a camada de dados para retornar uma lista de itens de debates filtrando por debate; • Insert: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da inserção de um item de debate; 37 • Update: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um item de debate; • Delete: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um item de debate. A classe PerguntaBusiness contém as regras de negócio específicas da entidade pergunta. • SelecionarPorUsuario: Interage com a camada de dados para retornar uma lista de perguntas filtrando por usuário; • SelecionarPorCurso: Interage com a camada de dados para retornar uma lista de perguntas filtrando por curso; • Insert: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da inserção de uma pergunta; • Update: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de uma pergunta; • Delete: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de uma pergunta. A classe RespostaPerguntaBusiness contém as regras de negócio específicas da entidade reposta de pergunta. • SelecionarPorUsuario: Interage com a camada de dados para retornar uma lista de respostas de pergunta filtrando por usuário; • SelecionarPorPergunta: Interage com a camada de dados para retornar uma lista de respostas de pergunta filtrando pela pergunta; 38 • Insert: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da inserção de uma resposta de pergunta; • Update: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de uma resposta de pergunta; • Delete: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de uma resposta de pergunta. 4.4 Camada de Dados A Camada de Dados representa o repositório das informações. Essa camada é responsável por receber as requisições da camada lógica e seus métodos executam as requisições no SQL Server 2005. Nessa camada estão presentes as implementações dos objetos de acesso a dados. Cada objeto de acesso a dados é acessado através de sua Interface, deixando a camada flexível para seja possível realizar a persistência de dados em diversos tipos de repositórios de informações, tais como arquivos XML, arquivos de texto e bancos de dados. Na solução apresentada, foram implementados objetos de acesso a dados para o banco de dados SQL Server 2005. A execução de operações no SQL Server é feita através da classe AbstractDAO. Essa classe utiliza a classe QueryReader para identificar a consulta SQL a ser disparada contra o banco. O QueryReader recebe o identificador da classe e o nome da operação a ser realizada para obter a consulta correspondente. Após o retorno da string de consulta, a AbstractDAO associa essa consulta a um objeto do tipo SqlCommand que é utilizado para efetuar a consulta no SQL Server Para operações de insert e update o objeto de acesso a dados recebe da camada de lógica a entidade a ser incluída ou atualizada e persiste os dados no banco. Para operações de consulta o objeto de acesso a dados retorna o resultado em um objeto do tipo IList. Por exemplo, para recuperar todos os arquivos disponibilizados por um 39 usuário o objeto de acesso a dados deve receber como parâmetro uma entidade do tipo UsuarioEntity e retornar uma IList contendo objetos do tipo ArquivoEntity que representam os arquivos disponibilizados pelo usuário passado como parâmetro. No diagrama da Figura 18, visualizam-se as interfaces que foram utilizadas para realizar o contrato entre a camada de lógica e a camada de dados. Figura 18 – Interfaces da camada de dados 40 Todas as interfaces da camada de dados estendem a interface “IDAO” que define a assinatura dos métodos mais genéricos de manipulação de dados, tais como: Inset, Update, GetALL, GetByID e Delete. Insert: Insere um novo objeto no banco de dados. Update: Persiste as alterações feitas no objeto na base de dados. Delete: Remove o objeto da base de dados. GetAll: Solicita ao banco de dados todos os objetos do tipo da classe concreta. GetByID: Retorna o objeto filtrando pelo identificador. 41 No diagrama da Figura 19, visualizam-se as classes concretas da camada de dados. Figura 19 – classes concretas da camada de dados 42 A classe ArquivoDAO tem o objetivo de manipular e persistir os dados da entidade arquivo. A classe ArquivoDAO implementa os seguintes métodos: • SelecionarPorUsuario: Retorna os uma lista arquivos filtrando por usuário; • SelecionarArquivosCompartilhados: Retorna uma lista contendo todos os arquivos que estão compartilhados; • SelecionarArquivosCompartilhadosComUsuario: Retorna uma lista de arquivos compartilhados filtrando por usuário; • Insert: Insere um novo arquivo na base de dados; • Update: Persiste as alterações feitas na entidade arquivo; • GetALL: Retorna uma lista contendo todas os arquivos; • GetByID: Retorna o objeto arquivo filtrando pelo identificador; • Delete: Remove o objeto arquivo da base de dados. A classe VersaoDeArquivoDAO tem como objetivo manipular e persistir os dados da entidade versão de arquivo. A classe VersaoDeArquivoDAO implementa os seguintes métodos: • SelecionarPorUsuario: Retorna uma lista de versões de arquivo filtrando por usuário; • SelecionarPorArquivo: Retorna uma lista de versões de arquivo filtrando por arquivo; • Insert: Insere uma nova versão de arquivo na base de dados; • Update: Persiste as alterações feitas na entidade versão de arquivo; • GetALL: Retorna uma lista contendo todas as verões de arquivo; • GetByID: Retorna o objeto versão de arquivo filtrando pelo identificador; • Delete: Remove o objeto versão de arquivo da base de dados. 43 A classe AssuntoDeArquivoDAO tem como objetivo manipular e persistir os dados da entidade assunto de arquivo. A classe AssuntoDeArquivoDAO implementa os seguintes métodos: • SelecionarPorUsuario: Retorna uma lista de assuntos de arquivo filtrando por usuário; • Insert: Insere um novo assunto de arquivo na base de dados; • Update: Persiste as alterações feitas na entidade assunto de arquivo; • GetALL: Retorna uma lista contendo todos os assuntos de arquivo; • GetByID: Retorna o objeto assunto de arquivo filtrando pelo identificador; • Delete: Remove o objeto assunto de arquivo da base de dados. A classe CursoBusiness tem o objetivo de manipular e persistir os dados da entidade curso. A classe CursoBusiness implementa os seguintes métodos: • SelecionarPorNome: retorna uma lista de cursos filtrado por nome; • Insert: Insere um novo curso na base de dados; • Update: Persiste as alterações feitas na entidade curso; • GetALL: Retorna uma lista contendo todos os cursos; • GetByID: Retorna o objeto curso filtrando pelo identificador; • Delete: Remove o objeto curso da base de dados A classe DebateDAO tem o objetivo de manipular e persistir os dados da entidade debate. A classe DebateDAO implementa os seguintes métodos: • SelecionarPorUsuario: retorna uma lista de debates filtrado por usuário. • Insert: Insere um novo debate na base de dados; • Update: Persiste as alterações feitas na entidade debate; • GetALL: Retorna uma lista contendo todos os debates; • GetByID: Retorna o objeto debate filtrando pelo identificador; 44 • Delete: Remove o objeto debate da base de dados. A classe ItemDeDebateDAO tem o objetivo de manipular e persistir os dados da entidade item de debate. A classe ItemDeDebateDAO implementa os seguintes métodos: • SelecionarPorUsuario: Retorna uma lista de itens de debates filtrado por usuário. • SelecionarPorDebate: Retorna uma lista de itens de debates filtrado por debate. • Insert: Insere um novo item de debate na base de dados; • Update: Persiste as alterações feitas na entidade item de debate; • GetALL: Retorna uma lista contendo todos os itens de debate; • GetByID: Retorna o objeto item de debate filtrando pelo identificador; • Delete: Remove o objeto item de debate da base de dados. A classe PerguntaDAO tem o objetivo de manipular e persistir os dados da entidade pergunta. A classe PerguntaDAO implementa os seguintes métodos: • SelecionarPorUsuario: Retorna uma lista de perguntas filtrado por usuário. • SelecionarPorCurso: Retorna uma lista de perguntas filtrado por curso. • Insert: Insere uma nova pergunta na base de dados; • Update: Persiste as alterações feitas na entidade pergunta; • GetALL: Retorna uma lista contendo todos as perguntas; • GetByID: Retorna o objeto pergunta filtrando pelo identificador; • Delete: Remove o objeto pergunta da base de dados. 45 A classe RespostaDePerguntaDAO tem o objetivo de manipular e persistir os dados da entidade resposta de pergunta. A classe RespostaDePerguntaDAO implementa os seguintes métodos: • SelecionarPorUsuario: Retorna uma lista de respostas de pergunta filtrado por usuário. • SelecionarPorPergunta: Retorna uma lista de respostas de pergunta filtrado por pergunta. • Insert: Insere uma nova resposta de pergunta na base de dados; • Update: Persiste as alterações feitas na entidade resposta de pergunta; • GetALL: Retorna uma lista contendo todos as respostas de pergunta; • GetByID: Retorna o objeto resposta de pergunta filtrando pelo identificador; • Delete: Remove o objeto resposta de pergunta da base de dados. 46 5 FFB Wiki O FFB Wiki é uma aplicação baseada no conceito de plataforma web (principio que indica que uma aplicação disponibiliza seus serviços para que outros desenvolvedores possam implementar suas próprias aplicações) construída usando uma arquitetura N-Camadas. A aplicação visa fornecer um meio no qual alunos e professores da Faculdade Farias Brito possam se comunicar e compartilhar informações de maneira eficaz e inteligente. A aplicação foi projetada com o intuito de fornecer uma interface amigável e intuitiva para seus usuários, mas além do cuidado no planejamento da interface, houve um cuidado especial no desenvolvimento da arquitetura da aplicação. A arquitetura do FFB Wiki foi desenvolvida utilizando-se as melhores práticas de desenvolvimento de sistemas e as tecnologias mais recentes e inovadoras, tais como: Windows Communication Foundation e LINQ. Em resumo, as objetivos do FFB Wiki são: • Realizar o compartilhamento de arquivos e informações entre os usuários, de acordo com o curso (Ciência da Computação, Administração, Marketing ou Direito) e o assunto; • Permitir a realização de perguntas entre seus usuários e que essas perguntas possam ser respondidas por qualquer outro usuário de forma seletiva, ou seja, por relevância de conteúdo das mensagens; • Fornecer um meio pelo qual os professores possam interagir, debater e/ou orientar os alunos que fazem parte de sua(s) disciplina(s), servindo também como divulgação de trabalhos e grupos de pesquisa no qual o aluno possa se engajar; • Fornecer um meio pelo qual o aluno possa lançar desafios na área de computação, propor soluções, estimulando a busca pelo conhecimento. 47 5.1 Desenvolvimento do FFB Wiki A aplicação foi desenvolvida na linguagem de programação C#. Utiliza como servidor de aplicação o Internet Information Services (IIS) 7.0. Para a camada de serviços é utilizado o Windows Communication Foundation e como servidor de banco de dados é utilizado o SQL Server 2005. 5.2 Interfaces do FFB Wiki No desenvolvimento das interfaces do sistema, procurou-se tornar o ambiente o mais amigável possível, através de uma interface rica aliada a uma navegabilidade simples e bem estruturada. As páginas foram desenvolvidas na linguagem ASP.NET, utilizando as técnicas atuais de codificação como que proporcionam um menor tempo de processamento. Além disso, procurou-se evitar o uso de estruturas, formatações e imagens que pudessem prejudicar o desempenho da aplicação em casos que o usuário não possua conexão banda larga. 48 A seguir são apresentadas as interfaces do FFB Wiki. 5.2.1 Módulo Arquivos Este módulo realiza a gestão dos arquivos do usuário bem como o compartilhamento dos mesmos. É composto pelas seguintes páginas: • Arquivos – Possibilita a visualização de todos os arquivos do usuário bem como todos os arquivos que foram compartilhados com ele. Na Figura 20, visualiza-se a interface de Arquivos. Figura 20 - Tela de Arquivos • Filtros de Arquivo – Possibilita ao usuário definir os filtros que serão aplicados na tela de Arquivos para uma melhor visualização dos dados. 49 Na Figura 21, visualiza-se a interface de Filtros de Arquivo. Figura 21 - Tela de Filtros de Arquivo • Versões do Arquivo – possibilita a visualização de todas as versões de um dado arquivo Na Figura 22, visualiza-se a interface Versões de Arquivo. Figura 22 – Tela de Versões de Arquivo • Manutenção de Arquivo – possibilita a criação, edição ou remoção de um arquivo. 50 Na Figura 23, visualiza-se a interface de Manutenção de Arquivo. Figura 23 – Tela de Manutenção de Arquivo • Compartilhamento de Arquivo – Possibilita um usuário compartilhar seus arquivos com outros usuários do sistema Na Figura 24, visualiza-se a interface de Compartilhamento de Arquivo. Figura 24 – Tela de Compartilhamento de Arquivo • Assuntos do Arquivo – possibilita a visualização dos assuntos de arquivo do usuário 51 Na Figura 25, visualiza-se a interface de Assuntos de Arquivo. Figura 25 – Tela de Assuntos de Arquivo • Manutenção de Assuntos de Arquivo – possibilita a criação, edição de assuntos de arquivo. Na Figura 26, visualiza-se a interface de Manutenção de Assuntos de Arquivo. Figura 26 – Tela de Manutenção de Assuntos de Arquivo 52 5.2.2 Módulo Cursos Este módulo realiza a gestão dos cursos do sistema. É composto pelas seguintes páginas: • Cursos – possibilita a visualização dos cursos do sistema Na Figura 27, visualiza-se a interface de Cursos. Figura 27 – Tela de Cursos 53 • Filtros de Cursos – Possibilita ao usuário definir os filtros que vão ser aplicados na tela de Cursos para uma melhor visualização dos dados. Na Figura 28, visualiza-se a interface de Filtros de Cursos. Figura 28 – Tela de Filtros de Curso • Manutenção de Curso – Possibilita a criação, edição ou exclusão dos cursos do sistema. Na Figura 29, visualiza-se a interface de Manutenção de Cursos. Figura 29 – Tela de Manutenção de Curso 54 5.2.3 Módulo Debates Este módulo realiza a gestão dos debates que ocorrem no sistema. É composto pelas seguintes páginas: • Debates – possibilita a visualização de todos os debates do curso no qual o usuário está associado. Na Figura 30, visualiza-se a interface de Debates. Figura 30 – Tela de Debates 55 • Manutenção de Debates – possibilita a criação, edição ou exclusão de debates Na Figura 31, visualiza-se a interface de Manutenção de Debates. Figura 31 – Tela de Manutenção de Debates 56 • Itens de Debate – possibilita a visualização das interações dos usuários com um determinado debate. Na Figura 32, visualiza-se a interface de Itens de Debate. Figura 32 – Tela de Itens de Debate 57 • Manutenção de Itens de Debates – Possibilita a criação, edição ou exclusão de uma interação com um debate. Na Figura 33, visualiza-se a interface de Manutenção de Itens de Debate. Figura 33 – Tela de Manutenção de Itens de Debate 58 5.2.4 Módulo Perguntas Este módulo realiza a gestão das perguntas que são realizadas através do sistema. É composto pelas seguintes páginas: • Perguntas – possibilita a visualização das perguntas. Somente serão exibidas as perguntas que foram feitas por usuários do mesmo curso. Na Figura 34, visualiza-se a interface de Perguntas. Figura 34 – Tela de Perguntas 59 • Manutenção de Perguntas – Possibilita a criação, edição ou exclusão de perguntas. Na Figura 35, visualiza-se a interface de Manutenção de Perguntas. Figura 35 – Tela de Manutenção de Perguntas 60 • Respostas – possibilita a visualização das interações dos usuários com uma determinada pergunta. Na Figura 36, visualiza-se a interface de Respostas. Figura 36 – Tela de Respostas 61 • Manutenção de Respostas – Possibilita a criação, edição ou exclusão de uma interação com uma pergunta. Na Figura 37, visualiza-se a interface de Manutenção de Respostas. Figura 37 – Tela de Manutenção de Respostas 62 5.2.5 Módulo Usuários Este módulo realiza a gestão dos usuários do sistema. É composto pelas seguintes páginas: • Usuários – possibilita a visualização dos usuários do sistema. Na Figura 38, visualiza-se a interface de Usuários. Figura 38 – Tela de Usuários • Filtros de Cursos – Possibilita o usuário definir os filtros que vão ser aplicados na tela de Usuários para uma melhor visualização dos dados. 63 Na Figura 39, visualiza-se a interface de Filtros de Usuário. Figura 39 – Tela de Filtros de Usuário • Manutenção de Usuários – Possibilita a criação, edição ou exclusão de um usuário. Na Figura 40, visualiza-se a interface de Manutenção de Usuário. Figura 40 – Tela de Manutenção de Usuários 64 5.3 Funcionalidades da Solução A aplicação desenvolvida neste trabalho fornece uma interface simples e intuitiva para que os alunos da Faculdade Farias Brito possam compartilhar conhecimento e informações entre si. Dentre as funcionalidades que a aplicação fornecer podemos citar: 1. Possibilitar compartilhamento de arquivos e informações entre os usuários, de acordo com o curso (Ciência da Computação, Administração, Marketing ou Direito) e o assunto. 2. Permitir que usuários façam perguntas para outros usuários e que possam ser respondidos por qualquer outro usuário de forma seletiva, ou seja, por relevância de conteúdo das mensagens. 3. Fornecer um meio no qual os professores possam interagir, debater e/ou orientar alunos que façam parte de sua(s) disciplina(s), servindo também como divulgação de trabalhos e grupos de pesquisa no qual o aluno pode se engajar. 4. Fornecer um meio pelo qual o aluno possa lançar desafios na área de computação, propor soluções, estimulando a busca pelo conhecimento. 65 6 Resultados Obtidos O desenvolvimento da aplicação FFB Wiki em apenas dois meses (março e abril de 2008), serve para confirmar a produtividade da arquitetura detalhada anteriormente e do ambiente integrado de desenvolvimento Visual Studio .NET 2008. O uso de tecnologias recentes como o Language Integrated Query (LINQ) e o Windows Communication Foundation (WCF) representa o grande diferencial do FFB Wiki, pois além de fornecer uma melhor segurança e um melhor desempenho, também faz da aplicação um referencial de utilização dessas tecnologias, proporcionando aos profissionais da área de informática uma melhor compreensão da aplicabilidade dessas tecnologias. Além disso, o FFB Wiki pode ser um passo importante no processo de ensino na Faculdade Farias Brito, uma vez que os alunos, ao utilizarem o sistema, terão acesso ao conhecimento de maneira mais eficiente. Os principais resultados estão diretamente ligados aos objetivos específicos: • Definição do conceito de Web 2.0 bem como os principais princípios e técnicas utilizadas no desenvolvimento de aplicações que se baseiam nesse conceito; • Desenvolvimento de uma ferramenta colaborativa que possibilita o compartilhamento de conhecimento entre os alunos, professores e colaboradores da Faculdade Farias Brito. 66 7 Conclusão Este trabalho realizou um estudo dos conceitos da Web 2.0, principalmente os que colocam a mesma com uma plataforma de serviços. Também desenvolveu um software colaborativo chamado FFB Wiki que aplica os conceitos de Web 2.0 para fornecer um meio no qual alunos, professores e colaboradores da Faculdade Farias Brito possam compartilhar conhecimento. Inicialmente foi abordado o conceito de Web 2.0, bem como os conceitos relacionados ao termo. A seguir foi apresentado o conceito de plataforma web e as tecnologias utilizadas para disponibilizar aplicações como serviços na Web. Em seguida foi descrito o FFB Wiki, um software colaborativo que possibilita o crescimento pessoal, intelectual e profissional dos alunos, professores e colaboradores da Faculdade Farias Brito. Os resultados obtidos mostram que a utilização dos conceitos de Web 2.0 pode trazer grandes benefícios a seus usuários, pois ao possibilitar a interação entre os mesmos de modo eficaz é possível realizar a difusão de conhecimento. 7.1 Trabalhos Futuros A implementação de outras funcionalidades e tecnologias no software apresentado neste trabalho podem colaborar para a sua evolução e utilidade, gerando diferentes resultados e obtendo um vasto leque de objetivos. Dentre as recomendações para trabalhos futuros tomando como base a proposta abordada, incluem-se: • Utilização de Windows Workflow Foundation (WWF) para controlar os fluxos do sistema; • Estudo sobre as convergências da Engenharia de Software voltada para a Web; 67 8 Referências Bibliográficas 1. ARAÚJO, A. Framework de Análise e Projeto Baseado no RUP para o Desenvolvimento de Aplicações Web. Dissertação de Mestrado, UFPE, Centro de Informática, 2001. 2. BERNERS-LEE, T., FIELDING, R.; Hypertext Transfer Protocol -- HTTP/1.0, RFC 1945, Maio de 1996. 3. BERNERS-LEE, T. CONNOLLY, D.; Hypertext Markup Language - 2.0, RFC 1866, Novembro de1995. 4. CHRISTENSEN, E; CURBERA, F; MEREDITH, G; WEERAWARANA, S. Web Services Description Language (WSDL), 2001. Disponível em: http://www.w3.org/TR/wsdl. Acessado em: Novembro de 2007. 5. FLANAGAN, D. JavaScript: The Definitive Guide. O'Reilly Media, Inc., 2002. 6. GRAY, R. S.; KOTZ, D.; PETERSON, R. A.; BARTON, J.; CHACON, D.; GERKEN, P.; HOFMANN, M.; BRADSHAW, J.; BREEDY, M.; JEFFERS, R.; SURI, N. MobileAgent versus Client/Server Performance: Scalability in an Information-Retrieval Task. Fifth IEEE International Conference on Mobile Agents. Atlanta, Georgia, USA, dezembro 2001. 7. GUJ. GRUPO DE USUÁRIOS JAVA. Entendendo XML. Disponível em: http://www.guj.com.br/java.tutorial.artigo.19.1.guj. Acessado em: Novembro de 2008. 8. HOFFMAN, J. Introduction to Structured Query Language, 2001. 9. RECKZIEGEL, M. Descrevendo um Web Service – WSDL. Disponível em: http://imasters.uol.com.br/artigo/4422/webservices/descrevendo_um_web_service__wsdl/. Acessado em: Novembro de 2008. 10. MARCHAL, B. XML conceitos e aplicações. São Paulo: Berkeley, 2000. 68 11. MARGUERIE, F; EICHERT, S; WOOLEY, J. LINQ in Action. Manning Publications, 2008. 12. O’REILLY, T. What is WEB 2.0: Design patterns and business models for the next generation of software. Disponível em: http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html. Acessado em: Novembro de 2007. 13. ORT, E. Service-Oriented Architecture and Web Services: Concepts, Technologies, and Tools, Sun Developer Network, April 2005 Disponível em: http://java.sun.com/developer/technicalArticles/WebServices/soa2/. Acessado em: Novembro de 2007. 14. SEELY, S. SOAP: Cross plataform web service development using XML. Upper Saddle River: Prentice Hall PTR, 2002 15. SMITH, J. Inside Windows Communication Foundation, Microsoft Press, 2007. 16. SNELL, J.; TIDWELL, D.; KULCHENKO, K. Programming web services with soap. O'Reilly, 2001. 17. The UDDI Technical White Paper. Disponível em: http://www.uddi.org. Acessado em: Novembro de 2007 18. W3C. WORLD WIDE WEB CONSORTIUM. Simple object access protocol (SOAP). Disponível em: http://www.w3.org/XML. Acessado em: Novembro de 2007 19. W3C. WORLD WIDE WEB CONSORTIUM. Cascading Style Sheets (CSS). Disponível em: http://www.w3.org/Style/CSS/ Acessado em: Novembro de 2007 69