= Pequeno exemplo do uso de SOAP para criar um webservice = Segundo Mauro Sant'Anna <{{{mas_mauro (arroba) hotmail (ponto) com}}}> em seu artigo [[http://www.linhadecodigo.com.br/artigos.asp?id_ac=38|Soap e WebServices]] o SOAP é "um protocolo elaborado para facilitar a chamada remota de funções via Internet, permitindo que dois programas se comuniquem de uma maneira tecnicamente muito semelhante à invocação de páginas Web". O protocolo SOAP tem diversas vantagens sobre outras maneiras de chamar funções remotamente como DCOM, CORBA ou diretamente no TCP/IP: * É simples de implementar, testar e usar. * É um padrão da indústria, criado por um consórcio , adotado pela W3C (http://www.w3.org/TR/SOAP/) e por várias outras empresas. * Usa os mesmos padrões da Web para quase tudo: a comunicação é feita via HTTP com pacotes virtualmente idênticos; os protocolos de autenticação e encriptação são os mesmos; a manutenção de estado é feita da mesma forma; é normalmente implementado pelo próprio servidor Web. * Atravessa “firewalls” e roteadores, que “pensam” que é uma comunicação HTTP. * Tanto os dados como as funções são descritas em XML, o que torna o protocolo não apenas fácil de usar como também muito robusto. * É independente do sistema operacional e CPU. * Pode ser usado tanto de forma anônima como com autenticação (nome/senha). " Neste exemplo utilizei o SOAPpy, uma implementação do SOAP que faz parte do projeto pywebsvcs, encontrada em http://pywebsvcs.sourceforge.net/ Fiz uma pequena calculadora para ilustrar a utilização do SOAPpy para criar um webservice e como desenvolver um cliente que faça uso da sua funcionalidade. Como é citado acima, o cliente poderia ser desenvolvido em qualquer linguagem de programação e plataforma. = CalcSOAP.py = {{{ #!/usr/bin/python from SOAPpy import SOAPServer def calcula(op1,op2,operacao): if operacao == '+': return op1 + op2 if operacao == '-': return op1 - op2 if operacao == '*': return op1 * op2 if operacao == '/': return op1 / op2 server = SOAPServer(('localhost',8081)) server.registerFunction(calcula) server.serve_forever() }}} = ClientCalcSOAP.py = {{{ #!/usr/bin/python from SOAPpy import SOAPProxy server = SOAPProxy('http://localhost:8081/') print '2 + 2 = ' + str(server.calcula(2,2,'+')) print '5 - 2 = ' + str(server.calcula(5,2,'-')) print '2 * 2 = ' + str(server.calcula(2,2,'*')) print '6 / 2 = ' + str(server.calcula(6,2,'/')) }}} Com isto dá pra ter uma idéia das possibilidades que os webservices fornecem. ---- EltonLuisMinetto