Web Services para iniciantes

Web Services para iniciantes


Sistema que deixa link online para os desenvolvedores de software usarem de seus serviços. Por exemplo dos correios que permite acesso de frete e cephttp://links.lomadee.com/ls/bUUxbztpQ2lGUjh2NDsyNjc4NzMwNjswOzEzNTszMzc0OTkwMzs7QlI7MTs7MA--.html?kw=666

Acompanhando a evolução e padronização
da internet como mais um meio de comunicação, sugiram
no mercado novas ferramentas de desenvolvimento como o ASP.NET
da Microsoft e novos padrões como o WebServices que vamos
discutir nesse artigo. O WebServices veio preencher uma lacuna
no mercado que era a necessidade de integração entre
os mais diversos ambientes existentes que não se falavam
entre si por falta de um "Padrão" e fortalecer
o desenvolvimento distribuído de forma a trabalhar em conjunto
com os novos recursos de comunicação da internet.


Os WebServices funcionam de forma semelhante a
um componente que você instala na máquina local.
Porém, esse componente pode ficar residente em qualquer
máquina, seja ela na sua empresa, na empresa de terceiros..
e até na "China". É isso mesmo, até
na "China". Então, usando a internet e o XML
(Extensible Markup Language) para troca de informações,
você executa um método desse componente que dispara
o processamento no servidor remoto e você recebe a resposta
na sua aplicação.


A principal diferença em relação
aos componentes atuais é a padronização do
XML para troca de informações, fazendo com que a
comunicação do mesmo ultrapasse as barreiras dos
Firewall impostos para segurança de nossas redes, pois
a única coisa que trafega é o XML e usando a porta
80 (Padrão) em conjunto com o já conhecido HTTP
e o SOAP(Sabão), que cuida do transporte
dos dados.


Para troca de informação entre a
aplicação e o WebServices, é necessário
que essa aplicação conheça o funcionamento
do mesmo. Isso é feito por meio da leitura do WSDL.
Nada mais é que um documento ou "contrato" em
XML que contém todas as regras do WebServices. Ainda temos
mais uma sigla a falar que é o UDDI, uma
espécie de páginas amarelas de WebServices, cujo
objetivo é encontra facilmente os links para os componentes.


Ao contrário do que muitos pensam, o padrão
WebServices não é proprietário da Microsoft.
Pelo contrário, é definido por um consórcio
de diversas empresa WS-I conforme Figura
1
de forma a manter a integração entre
todas as plataformas que venham a utilizar esse padrão.
Permitindo assim a perfeita comunicação e troca
de informações. O que aconteceu é que a Microsoft
acreditou desde cedo no XML e investiu muito em todos os seus
produtos, principalmente na plataforma .NET, permitindo assim
a fácil e rápida integração com seus
produtos.



Figura 01
– WS-I – Padronizador do WebServices


No ambiente .NET os WebServices se encaixam dentro
do grupo de aplicações ASP.NET conforme visto na
Figura 2.



Figura 02
– WebServices Dentro do .NET Framework


O XML foi adotado por já ser um padrão
da indústria e ser independente da plataforma adotada,
sendo ainda controlado pelo World Wide Web Consortium (W3c). Facilmente
você consegue transformar o mesmo em outro formato independente
da aplicação entender o XML.


Implementando WebServices


Na plataforma .NET essa implementação
é bastante simples como vou demonstrar nesse artigo e consiste
de duas partes:


Criar
um WebServices (Para ser utilizado por terceiros)
Consumir
um WebServices (Desenvolvido por terceiros)


Portanto definido se você quer criar ou consumir
um WebServices grande parte do trabalho de implementação
já é feita automaticamente pela plataforma .NET
não necessitando por parte do programador se preocupar
com a troca de informação do XML e utilização
do SOAP ou WSDL.


Então para criar um WebServices você
pode adicionar pelo Visual Studio um arquivo do tipo *.asmx a
um projeto ASP.NET ou conforme esse exemplo iniciar um novo projeto
especifico para WebServices conforme Figura 3 e Figura
4.



Figura 03
– Iniciando novo projeto WebServices



Figura 4 – Solution Explorer


A primeira coisa que você vai observar é
a extensão do arquivo, para WebServices o .NET utiliza
o *.asmx, observe também que esse projeto
não tem interface, portanto você não pode
arrastar componentes para montar layout. O propósito então
é criar uma classe (Componente) que seja visualizada dentro
de outra aplicação. Para iniciarmos efetue dois
cliques no formulário e vamos ao código conforme
Figura 5
. Observe que o código é igual
ao de uma outra classe qualquer e realmente é igual mesmo.
A única diferença é o atributo <WebMehod()>_
que você tem que colocar em cada método que você
queria tornar visível pelo WebServices. A segunda coisa
que você vai ter que observar é os tipos de retornos
dos métodos. Para o caso de WebServices você somente
pode utilizar os tipos: Array,String,Int,DataSet,Boolean…


Chamando a atenção para o tipo DataSet,
que por ser baseado em XML pode ser serializado e transportado
facilmente pela web. Sendo completamente recuperado do outro lado.
Altere o código pelo apresentando na Listagem 01.
Esse exemplo está criando dois métodos, o primeiro
realiza a soma de dois números e os segundo, realiza uma
consulta no banco de dados e retorna os dados.



Figura 05 – Classe padrão
do Web Services


Listagem 01 – Criando métodos


Imports System.Data.SqlClient

Imports System.Web.Services


<System.Web.Services.WebService(Namespace
:= "http://tempuri.org/wstreinamento/Service1")>
_


Public Class Service1


Inherits System.Web.Services.WebService


<WebMethod(Description:="Somar
valores")> _
Public Function Somar(ByVal intValor1 As Int32, ByVal IntValor2
As Int32) As Int32
Return intValor1 + IntValor2
End Function


<WebMethod(Description:="Consulta
banco de dados e retorna DataSet")> _
Function RetornaDataSet(ByVal strQuery As String) As DataSet


Dim conn As New SqlConnection
Dim cmd As New SqlCommand
Dim da As New SqlDataAdapter
Dim ds As New DataSet
“Lembre de alterar os dados de acesso ao
banco de dados

conn.ConnectionString = "Data Source=localHost; User ID=sa;
Password=;Initial Catalog= Northwind;"
cmd.Connection = conn
cmd.CommandText = strQuery
da.SelectCommand = cmd
da.Fill(ds)
conn.Dispose()
cmd.Dispose()
da.Dispose()
Return ds
End Function


End Class


Mais uma vez observando o código apresentado
deduzimos claramente que a implementação não
tem diferença de nenhuma outra classe, deixando esse processo
completamente simples e é isso mesmo. Seu WebServices já
está pronto e o .NET oferece uma interface de teste para
que possamos ver o resultado antes de enviar para o cliente. Para
isso basta acessar pela sua maquina a url do mesmohttp://localhost/wstreinamento/service1.asmx
e confira o resultado apresentado na Figura 6.



Figura 06 – Interface de
testes do WebServices


Agora clicando no link Somar, veja o resultado
na Figura 07 e Figura 08.



Figura 07
– Método somar



Figura 08 – XML Resultante
da soma dos valores no servidor


Achou fácil até esse ponto, imagine
o próximo método RetornaDataSet, confira na Figura
9 e 10.



Figura 09 – Passando uma
query sql como parametro



Figura 10
– XML resultante da consulta ao banco de dados.


Fantástico hein!!! Seu WebServices já
está funcionando. Você não precisa implementar
mais nada. Basta passar o link do WSDL (Figura 6)
para quem for utilizar e pronto. Até o WSDL ele gera automaticamente
confira na Figura 11.



Figura 11
– WSDL gerado automaticamente


Agora vamos consumir esse WebServices, para nosso
exemplo poderíamos utilizar qualquer aplicação
.NET, WebServices é um componente como outro qualquer.
Vamos utilizar neste teste uma aplicação Winforms,
poderia ser uma para PocketPC ou mesmo outra Web. E até
outras plataformas que tenham suporte a WebServices.


Inicie um novo projeto, depois nesse projeto no
Solution Explorer escolha ADD WebReference conforme Figura
12
. E entre com a url do WSDL http://localhost/wstreinamento/service1.asmx?WSDL
conforme Figura 13 , depois defina o nome do
NameSpace (Espaço de nome) para classe que o .net vai gerar
de forma a disponibilizar o WebServices dentro do código,
confira na Figura 14.



Figura 12 – Adicionando
referencia Web ( WebServices)



Figura 13 – Adicionando
referencia Web ( WebServices)



Figura 14 – Alterando
nome da referencia


Finalmente após concluir a etapa da
Figura 14
você criou um novo NameSpace que vai
conter a classe para esse WebServices, neste ponto o .NET criou
outras classes internas que chamamos de "Proxy" para
encapsular a trocar de informações. Agora adicione
01 DataGrid, 01 TextBox (ID=txtConsulta) e 01 Button conforme
Figura 15. Depois efetue dois cliques no botão
e adicione o código da Listagem 2.



Figura 15 – Montando formulário
para testes


Listagem 02 – Adicionando código
para consulta ao WebServices


Private Sub Button1_Click(ByVal
sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click


Dim ws As New wsFacil.Service1
Me.DataGrid1.DataSource = ws.RetornaDataSet(txtConsulta.Text).Tables(0)


End Sub


Após adicionar o código você
verá que sua aplicação vai realizar consulta
no banco de dados, sem que você tenha feito nenhuma codificação
para isso. Comprove na Figura 16. Volte a imaginar
se essa url fosse de um computador na "China" você
estaria daqui efetuando uma consulta lá e recebendo os
dados. Cabe a você implementar todos métodos e utilizar
esse recurso a vontade.



Figura 16
– Testando o aplicativo


Finalizando


WebServices é um dos assuntos mais tratados
no momento pela facilidade de integração entre ambientes
diferentes, e por está seguindo uma linha de padronização
permitindo a total integração. Sendo assim esse
WebServices que você implementou pode ser utilizado por
outra plataforma não .NET e vice-versa. O diferencial que
você vai encontrar aqui é a facilidade de implementação.
Isso realmente é indiscutível e tem trazido grande
mercado para plataforma .NET. Existe outros temas ainda relacionados
como segurança que fica para próximo artigo!!


Download
código fonte


O que você gostaria saber? Aguardo seu comentário!
Ele é muito importante. Participe! Até próximo
artigo!


Você é de Salvador Bahia, então
participe do grupo de usuários .NET http://www.mutex.com.br


Autor: Thyago Henrique Pacher
Nosso pessoal é especializado em produção de sistemas para nuvem de acordo com o que for necessário para sua empresa e altamente configurável. Entre em contato conosco e podera ter seu sistema até hoje mesmo com máximo de garantia de dados salvos na nuvem e podendo recupera-los a hora que quiser. Temos em nosso portfólio o desenvolvimento de bons e grandes sistemas cujo são voltados para condominios ficando em GestCCon Sistema Concierge, JedisaMunck site para muncks, Site para advogados Ronald Arruda, empresas de consignação de créditos, sites institucionais, sites para cursos online com integração a plataformas famosas tais como moodle.
Utilizamos no nosso dia a dia as melhores ferramentasimagem autor

Comentários

Postagens mais visitadas deste blog

Instalação NetBeans

Calcular frete pelos correios via PHP