Desenvolvimento - Web Services

Desenvolvendo e Consumindo um Web Service com XML usando Visual Studio 2008 "Orcas" Beta 2

Baseando-se no conceito da frase que diz: "É fazendo que se aprende...". Iremos desenvolver um sistema simples para consulta de mensagens bíblicas, mais conhecido por "Divinas Promessas", acessível através de um WebService, o qual poderá ser utiltizado por outros sites ou aplicações desktop.

por Adriano Santos



1. Introdução

Baseando-se no conceito da frase que diz: "É fazendo que se aprende...". Iremos desenvolver um sistema simples para consulta de mensagens bíblicas, mais conhecido por "Divinas Promessas", acessível através de um WebService, o qual poderá ser utiltizado por outros sites ou aplicações desktop. Embora eu seja envangélico, minha intenção aqui não é promover nenhuma religião ou discutir este assunto, e sim, mostrar como podemos vincular tecnologia ao fornecimento de um serviço útil e com isto aprender as técnicas e conceitos envolvidos no desenvolvimento deste.

Iremos usar neste artigo o novíssimo Visual Studio Professional 2008 "Orcas" Beta 2, que foi disponibilizado pela Microsoft onde segundo ela mesma deve ser a última versão de testes a ser liberada antes da versão final, e realmente trás mudanças significativas principalmente para desenvolvimento Web, veremos algumas dessas mudanças no decorrer deste artigo.

Não pretendo aqui tratar os aspectos de instalação do mesmo, contudo gostaria de relatar que o processo foi relativamente simples, bastando somente fazer o download da imagem do DVD. Outro detalhe importante foi que a versão 2008 Beta 2 se comporta muito bem com a versão 2005 na mesma máquina.

2. Desenvolvendo o Web Service Divinas Promessas com XML

Iremos criar nosso Serviço Web seguindo o SOAP (Simple Object Access Protocol), que basicamente falando, nada mais é do que um protocolo para troca de mensagens que usa a linguagem XML. Este serviço fará acesso a um banco de dados SQL Server, e efetuará uma consulta simples à uma tabela dentro do banco de dados "msgbiblicas.mdf", que estarei disponibilizando junto com o código fonte de nossa aplicação.

Vamos nessa!

Criaremos um WebService no Visual Studio .NET. Portanto, execute-o e selecione "New | Project | Visual C# Projects | ASP.NET Web Service Application". O nome de nosso projeto será "webmsgbiblicas" (Figura 2.a). Observe que para manter compatibilidade da aplicação em clientes com versões antigas do .NET Framework, podemos também selecionar para qual versão do .NET nosso projeto se destina, neste caso, mantenha selecionado a versão 3.5.


fig. 2.a.: Criando um projeto ASP.NET Web Service Application no Visual Studio 2008 "Orcas"

Como teremos consulta ao Banco de dados, precisamos da "String de Conexão", portanto vamos criar uma conexão com o banco de dados e a partir desta obter nossa "string". Visualize o "Server Explorer", caso não esteja disponível, selecione "View | Server Explorer". Chame o menu de contexto (botão direito do mouse) do "Data Connections", após "Add Connection..." (figura 2.b).


fig. 2.b.: Criando conexão com banco via Server Explorer

Na próxima tela "Chose Data Source", na lista de "Data Sources" selecione "Microsoft SQL Server" em "Data Provider", selecione ".NET Framework Data Provider for SQL Server" (Figura 2.c), clique em "Continue".


fig. 2.c.: Selecionando "Data Source" e "Data Provider"

Em "Add Connection", insira as informações para acesso ao banco (figura 2.d). Lembre-se, que deverá colocar os dados referente ao seu servidor SQL Server e banco de dados, portanto as informações poderão diferir das que aqui estão ilustradas. Clique em "Ok" para confirmar e criar nossa conexão.


fig. 2.d.: Informações necessárias para acesso ao banco

Para obter a string de conexão, basta então clicar na conexão gerada, e em "Properties", buscar a propriedade "Connection String" (Figura 2.e). Com o passar do tempo, conforme for ganhando experiência, verá que este procedimento será desnecessário. Mas a caráter de aprendizado, fica aqui este passo-a-passo para obter a string correta de conexão, sem muito esforço, Claro!


fig. 2.e.: Propriedade "Connection String" do nosso "Data Connection".

Colocaremos agora o código do WebService. Mas antes iremos analisar o seguinte: O cliente que irá consumir este serviço, não poderá escolher a mensagem que deseja ler, e sim, o sistema irá sortear uma mensagem para ele. Portanto, iremos criar uma função capaz de sortear um número qualquer que posteriormente iremos usar para buscar a mensagem no banco, para isso no editor do código digite as linhas a seguir, logo abaixo da declaração da classe:



Iremos agora para o método que fará a consulta na tabela "msgbiblicas", ela tem a estrutura informada na figura 2.f.


fig. 2.f.: Estrutura da tabela "msgbiblicas" No Editor, logo após a função "GetRandomNumberInRange", insira o código abaixo informado:


Algumas considerações importantes são:

- A variável "strConexao" recebe a string de conexão que outrora obtemos através da conexão que criamos com o banco, portanto, deixo claro que os dados contidos nesta linha de código poderão ser diferentes para o seu caso;
- Observem que não fazemos concatenação de strings e valores para formar a instrução. Neste caso fazemos uso de parâmetros, que além de deixar o código mais limpo o deixa mais seguro também.
- O método ExecuteScalar, é funcional somente quando temos certeza que a instrução retornará somente um valor. Portanto, observem que na instrução solicitamos para o SGBDR concatenar as colunas "Mensagem" e "Título" de um registro com o número de seqüência sorteado de forma randômica.
- Colocamos o fechamento da conexão dentro de um try/finally, pois isto garante a liberação da conexão em caso de erro.

3. Testando nosso WebService

Iremos testar o WebService executando-o a partir de "Debug | Start Without Debugging". Observamos o resultado na figura 3.a.


fig. 3.a.: Tela inicial de teste do WebService

Clique no nome do serviço, neste caso "BuscarMsgBiblica". Observe o resultado na figura 3.b.


fig. 3.b.: Invocando o WebService

Clique no botão "Invoke" e observe o resultado na figura 3.c.Veja que o retorno do Serviço é exatamente uma seqüência XML, garantindo assim que nosso aplicativo possa ser utilizado por uma grande gama de sistemas cliente.


fig. 3.c.: Resultado XML que aparecerá no navegador após invocação do método.

4. Consumindo o WebService "Divinas Promessas"

Tudo pronto e testado, iremos agora criar um projeto Web onde o intuito central será usufluir do Serviço Web que criamos. Para isto, no Visual Studio, selecione "File | New Project | ASP.NET Web Application", dê o nome ao projeto de "DivinasPromessas". No campo "Solution", selecione "Add to Solution", isto indica que queremos adicionar este projeto dentro da mesma solução onde implementamos o WebService. Clique "Ok" para confirmar.

Há várias mudanças na nova versão do Visual Studio, principalmente na interface, agora ainda mais rica para auxiliar no desenvolvimento Web. Vejamos alguns detalhes através da figura 4.a.


fig. 4.a.: IDE Visual Studio 2008 "Orcas" para desenvolvimento Web

- Para manipulação de layout dos webforms agora temos mais um recurso de visualização chamado "Split", um recurso muito conhecido para os profissionais que usam o Dreamweaver da Macromedia, onde podemos ver o código HTML e o resultado do layout, tudo dentro de uma mesma janela;
- Também temos um suporte mais avançado para CSS através das guias "Manage Styles" e "Apply Styles". Com isto podemos acrescentar, editar e aplicar os estilos que desejamos para nossas páginas, de uma forma mais rápida e prática.

Edite o "WebForm" para que tenha a aparência parecida com a figura 4.b, insira um "Label", dê o nome (ID) de "lblMensagem", insira também um "Button" dê a ele o nome (ID) "btnNovaMensagem" e o texto ("Text") deverá ser "Nova Mensagem".




fig. 4.b.: Interface do WebForm para consulta de Divinas Promessas.

Precisamos agora referenciar o nosso WebService dentro deste projeto para que possamos utilizá-lo. Portanto, clique com botão direito do mouse (chamar menu de contexto) em "DivinasPromessas", selecione "Add Web Reference..." (figura 4.c).


fig. 4.c.: Adicionando referência para o WebService

Na janela que se abre (figura 4.d), selecione "Web Services in this Solution". Após, selecione "webmsgbiblicas". Dê o nome "wsmsgbiblicas" (figura 4.e) e clique em "Add reference...".


fig. 4.d.: Adicionando referência para o WebService

fig. 4.d.: Adicionando referência para o WebService
Perfeito, agora somente precisamos inserir na página o código necessário para a chamada do serviço, iremos então criar um procedimento capaz de executar esta tarefa. Proceda assim, clique duas vezes no botão "btnNovaMensagem", para acessar o Editor de Código, logo após o método "btnNovaMensagem_Click" criado, insira o código especificado abaixo:

Iremos agora chamar este método no evento "Click" do botão btnNovaMensagem e também em "Load" do página, para que ao carregar a página, o aplicação já busque e exiba uma mensagem para o usuário. O código pronto ficará conforme descrito a seguir:

Vamos então conferir como ficou nossa aplicação, clique em "Debug | Start Without Debugging" ou Ctrl+F5 conforme preferir. Veja o resultado na figura 4.e.



fig. 4.e.: Aplicação web em execução

5. Conclusão

Observamos aqui o quanto é fácil desenvolver um WebService, integrando também uma consulta ao banco de dados. Criamos e testamos um serviço simples, usando algumas características peculiares do Visual Studio, como a obtenção da String de Conexão e vimos como criar uma função de sorteio de números usando a Classe Random.

Conhecemos algumas das novas características da IDE do Visual Studio 2008, bem como o processo simples para consumir um serviço web em nossas aplicações.

Até o próximo pessoal!

6. Referências

Visual Studio 2008 Beta 2
http://msdn2.microsoft.com/pt-br/vstudio/default.aspx

Wiki sobre Web Services
http://pt.wikipedia.org/wiki/Web_service

Dev Center - Web Services (Microsoft)
http://www.microsoft.com/brasil/msdn/webservices/default.mspx

Web Services com Banco de Dados por Mauro Sant"Anna
http://www.microsoft.com/brasil/msdn/tecnologias/webservices/web_services_1.aspx


Código fonte deste Projeto.

Adriano Santos

Adriano Santos - Programador C#.NET e ASP.NET
Maringá - Paraná